一种改进的综合拓扑挖掘技术

0          引言

网络自动化管理对IT组织来说正逐渐成为一种能够灵活掌控网络状态和态势的必要手段。拓扑管理是网络管理的基础,拓扑挖掘的目标是实现自动化网络管理。

目前网络拓扑挖掘的算法比较,每种算法都不能完全实现对网络的精确完整搜索,所以在实践应用中根据具体需求选择几种算法相结合方式。本文侧重发现网络结构,反应网络整体态势,所以采用基于SNMP协议拓扑挖掘算法为主,其它方式辅助的方法实现。

1          .SNMP协议及拓扑挖掘相关MIB

[4]SNMP协议(简单网络管理协议)TCP/IP协议族中一个比较重要的应用层协议,它基于传输层的UDP数据报协议,在管理者和被管设备代理之间传输管理信息。它提供给管理者和代理使用的原语有以下几个:Get-RequestGet-ResponseGet-Next-RequestSet-RequestTrapSNMP协议的工作原理如图 1所示。

图1 SNMP协议工作原理

与拓扑挖掘相关数据表主要字段说明如下。

1)  地址映射表ipNetToMediaTable如表 1所示。

表 1 IP地址与MAC映射表

字段名称

描述信息

ipNetToMediaIfIndex

接口索引

ipNetToMediaPhysAddress

物理地址

ipNetToMediaNetAddress

IP 地址

ipNetToMediaType

映射的类型

ARP协议可知,该表中所搜索到的MAC地址与IP地址映射都是与当前网络设备直接关联的某子网内设备或终端。由此便可以发现该子网段的拓扑关系。

2)  地址表ipAddrTable如表 2所示。

表 2 IP地址表

字段名称

描述信息

ipAdEntAddr

端口对应的IP地址

ipAdEntIfindex

端口号

ipAdEntNetMask

该端口对应的IP地址的子网掩码

IP地址表的目的是从ARP三层转发表排除自身地址,其它地址为本节点相连的设备或终端地址。

3)  二层转发表信息如表 3所示。

表 3 二层转发表信息

字段名称

描述信息

Dot1dTpFdbaddress

已获取端口信息的主机的MAC地址

Dot1dTpFdbport

拥有dotdTpFdbaddress的主机所出现的交换机的端口号

Dot1dTpFdbStatus

端口转发状态:1-特殊情况。2-无效3-正常。4-表明dotdTpFdbaddress是交换机的自身地址。5-表明dotdTpFdbaddress是静态MAC地址

二层转发表信息用于发现网络中L2设备或哑设备。

4)  LLDP对端端口信息表如表 4所示。

表 4 LLDP对端端口信息表

字段名称

描述信息

LldpRemClassisId

对端设备MAC

LldpRemPortId

对端设备接口描述

LlDPRemSysName

对端设备名称

LLDP对端端口信息表用于发现拓扑中的网络连接关系详细信息。

2       网络拓扑结构挖掘

网络的拓扑挖掘按照被发现网络的层次来分, 包括三层拓扑挖掘和二层拓扑挖掘。 三层拓扑是指跨子网的节点( 大多为路由器) 和子网之间的连接关系, 二层拓扑是指子网内的节点以及节点间的连接关系。大型的 IP 网络既有三层拓扑又有二层拓扑, 但是 其组成都是节点和连接关系, 因此, 拓扑挖掘就是发现网络中的节点以及节点之间的连接关系。

2.1    三层拓扑挖掘

对于基于 SNMP 的网络节点和三层拓扑挖掘, [2]传统的方式是先设定一个或者一些种子, 发现的过程就是以这些种子为起点, 通过种子设备ipNetToMediaTable发现网络中是否有新的节点, 如果新节点支持 SNMP, 则该节点作为后续发现的种子节点; 如果新节点不支持 SNMP 协议, 则判定该节点为终端。算法过程如下:

第一步, 设定发现的起点, 即种子设备, 种子节点必须是支持SNMP的网络设备。这个步骤是为了加速发现的过程。

第二步,种子节点IP信息加入到已发现队列。

第三步, 查询种子节点ipAddrTable表信息,记录种子节点子网和掩码。

第四步, 查询种子节点基本信息信息,确定设备是路由器还是交换机等网络设备。

第五步,通过种子节点获得新节点和新种子节点。首先获得种子节点的 ARP 三层转发数据,数据包括设备IP与MAC 关系信息, 然后循环ARP信息判断新采集到的节点是否支持 SNMP, 对于支持 SNMP 的节点加入到种子队列, 如果不支持 SNMP, 则判定该节点为终端设备,最后查询种子节点LLDP信息,发现与其连接的网络连接信息。

第六步,针对新的种子队列多线程迭代上面一到五步。

算法的的流程图如图 2所示。

 

图2 三层拓扑挖掘实现流程

2.2    层拓扑挖掘

二层拓扑挖掘是发现一个子网内的设备之间的物理连接。算法流程如下:

第一步, 获取已发现子网内节点信息。从第 2.1 节已经发现的节点中获取, 这是子网已经发现的部分, 因节点发现时用到了设备的 IP 地址映射表(ARP表), 此表存在一个缺陷就是它是定时刷新的, 这样如果子网中的某个设备一段时间没有网络通信, 会在交换机的ARP表内没有该设备信息, 从而造成漏发现, 因此在获取子网全部节点时,同时需要根据子网掩码来计算出本子网的所有可用主机地址, 轮询那些在前述第2.1节没有发现的IP, 如果存在, 则需要补充到子网节点中, 如果不存在, 则不必补充。这样子网的节点信息就完全了。

第二步,需要补充新发现的节点的端口信息和连接信息。通过SNMP访问第 2.1 节已经发现的节点的二层转发表信息的信息, 得到节点的每个端口与连接设备MAC地址的映射关系。遍历已经发现的节点网桥转发表所有的端口, 如果一个端口对应多个学习到的MAC 地址,则已经发现子网节点与学习到MAC地址对应多设备之间有L2哑设备,否则与已发子网现节点直连;通过SNMP访问第一步发现的新节点的二层转发表信息的信息,若无响应且与已发现子网节点端口一一对应,则该节点是与已发现子网节点直连的终端或L2哑设备,若有响应,该节点加入第2.1节种子队列,遍历新发现节点的网桥转发表所有端口,若有且只有一个端口MAC地址等于已经发现节点MAC,则与已经发现节点有一条物理连接,记录该连接端口信息。算法的的流程图如图 3所示。

图 3 二层拓扑挖掘

3       拓扑挖掘中数据更新策略

3.1设备标识属性和更新属性

在网络拓扑数据更新过程中,为避免设备信息冗余,需要判断2次或多次发现的设备是否是同一台设备。如果是同一台设备,则不需再次存入设备信息到数据库。在数据库中,用来唯一标识某一台设备的,称为标识属性;需要实时更新其值的,称之为更新属性;标识属性值必须唯一,更新属性值实时变化。根据网络设备特性,将IP地址作为设备的标识属性。更新属性包括设备运行时间、设备在线状态、路由表相关属性等。

3.2SNMP设备准确发现方法

绘制拓扑前需要发现新设备,新设备指在设备信息表和拓扑路由表中都不出现的IP。[6]拓扑挖掘是用户手工启动的,支持全网范围内的SNMP设备的发现。用户可以设定发现的深度、使用凭证(community)。首先,配置种子IP、发现深度和使用凭证(默认为public),如果种子IP输入合法,则将请求信息发送至服务器端的设备发现模块,进行设备发现。然后,将发现后的新设备的相关信息存入数据库并实时推送页面显示。[5]设备发现模块探测某设备是否存在,通常采用的措施是向该设备发 SNMP 请求报文,如果在规定的时间间隔内能收到应答,则认为该设备存在;否则,认为该设备已经停止工作。然而,通过上述方法判断网络设备是否存在并不总是正确的。

当某台设备由于延迟、超载等原因反应缓慢,而 SNMP 应答请求的超时间隔因考虑到效率问题设得又不够长时,一台在线的设备就不会被发现。为避免这种错误,本文提出了“多种方式,准确发现”的解决策略,具体是指:除了基于发SNMP包探测设备外,再分别附加一个发ICMP包和TCP包的程序,并相应地开多个线程。发ICMP探测包是常用的判断某设备是否在线的方式,考虑到现在很多防火墙都将Ping功能屏蔽掉,所以,[3]再增加一种发TCP包的方式,通过扫描设备端口来发现是否在线,扫描的端口设为最常使用的 80, 25, 443端口等。多次实验证明:采用这种策略,在不影响效率的前提下(大约为30 s),准确率达到100%

3.3数据更新轮询线程

如果仅靠以上的设备发现主程序,是不能及时探测到网络的拓扑变化的。比如,拓扑挖掘主程序刚刚发现了一台路由器,并把路由表信息存入到了数据库。但由于该路由器发生异常关闭或者由于部门需求,去掉了一台多余的路由器。针对这种特殊情况,本文提出“后台扫描”的解决方法,具体是指:启动轮询线程,定时执行拓扑挖掘算法,更新设备信息以达到及时探测网络拓扑的目的。

4          基于Tware插件的拓扑实时呈现

本文抛开传统的拓扑显示方法,引入Tware插件,依托html5+Javascrip实现。拓扑挖掘实时呈现过程为:服务器端拓扑挖掘模块进行拓扑挖掘,将发现的节点和网络连接以Json格式通过WebSocket上报客户端,客户端通过处理,通过Tware插件自动布局呈现。 本文提出的基于Tware插件的拓扑显示模型如图 4所示。

 图4 基于Tware插件的拓扑显示模型

5          结束语

本文结合实际开发项目,针对通信部门网络管理系统拓扑实时更新中存在的诸多难题和相应的解决策略进行分析。 通过实验证明了提出的实时更新数据策略的正确性、合理性和高效性,为以后的研究工作提供参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值