您所在的位置:主页 > 学术作品 > 科技作品 >

基于SNMP的网络拓扑发现技术研究

作者:双核期刊发表网; 更新时间:2018-04-18
摘要:本文对简单网络管理协议(SNMP)相关理论进行了详细阐述。并在此基础上分析研究了基于SNMP的网络拓扑发现的原理和算法,以此来提高网络管理的效率。
关键词:SNMP;网络拓扑;网络管理
0引文
随着全球化的脚步逐渐加快,网络的重要性更与日俱增。如何有效管理网络也成为了企业、政府和学校等重要的管理课题。网络管理随着信息网络的飞速发展,规模的越来越大,对现代网络管理的功能需求也就越来越复杂,目前这个时期,正是网络管理加速发展的黄金时期,原有的标准被不断的更新,目的就是为了满足日益增长的网络管理功能需求,提高网络管理的效率和降低网络管理的成本。
1 SNMP概述
1.1 SNMP的组成
SNMP主要由三个部分组成:SMI、MIB和SNMP协议。
(1)管理信息结构(SMI)
管理信息结构是管理信息库中的对象定义和编码(以便通过协议传输)的基础,它是对公共结构和一般类型的描述,和标识方法一起,在实现中都要用到。SMI经常被比作数据库的模式。如同模式描述数据库中对象的格式和布局一样,SMI描述MIB中的对象。
(2)管理信息库(MIB)
MIB定义了可以通过网络管理协议进行访问的管理对象的集合。管理信息库中为每个对象说明了具体的对象实例,并为每一个实例绑定了一个值。
(3)SNMP协议
SNMP是NMS和代理之间的异步请求和响应协议。NMS能够发出3个含有不同协议数据单(PDU)的报文。这3个PDU是提取请求GetRequest-PDU,提取下一个请求GetNextRequest-PDU和设置请求SetRequest-PDU。代理则只能发出两个不同的报文:一个是对来自NMS请求做出应答的GetResponse-PDU报文,另一个是陷阱TraP-PDU报文,是代理发现预定义的异常事件发生时主动发出的。利用SNMP协议,对网络设备状态的监视主要通过查询代理MIB中相应对象的值来完成1
SNMP采用了client/Server模型的特殊形式:代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP代理负责回答SNMP管理工作站关于MIB定义信息的各种查询。SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作"SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。SNMP协议主要包括三个主要组成部分:SMI、MIB和SNMPvl协议,后来SNMPv2、
sNMPv3对这三个主要组成部分都作了相应的增强及修改。
1.2 SNMP工作原理
SNMP使用代理/管理站模型。SNMP代理是一个软件,它可以回答来自SNMP管理站的对MIB中定义的各种信息的查询,每个提供MIB信息给管理系统的网络设备都有一个SNMP代理。
SNMP代理和管理系统通过SNMP协议中的标准消息进行通讯,每个消息都是一个单独的数据报,SNMP使用用户数据报协议(Use: Datagram Protocol,UDP)作为传输协议,进行无链接操作,因此SNMP协议不需要依靠在管理系统和代理之间保持连接来传递信息。
在SNMP中主要包括以下五个原语:Get-Request、set-Request、Get-Next-Request、Get-Response和Tran组成,在SNMPv2中又增加了Inform-Request和Get-Bulk-Request,用来完成管理系统对安全部件的管理。管理系统通过Get-Request从拥有管理代理的网络设备中获取信息,管理代理用Get-Response来响应Get-Request消息,Get-Request和Get-Next-Request一起可以用来获取一个表中的对象。使用Set-Request可以对管理代理进行设置。而Tarp是管理代理发送给管理系统的非请求消息2。图1描述了对SNMP的五个原语进行操作。

 
2 基于SNMP的网络拓扑发现
    SNMP是一种基于TCP/IP协议的互连网管理协议。SNMP网络管理框架的一般体系结构由四个主要部件构成,分别是:通信网络、网络协议、网络管理进程和被管网络实体。
SNMP己经成为网络管理的标准,为网络拓扑自动发现带来了巨大的方便,同时也大大
提高了网络拓扑发现的速度。
           网络层拓扑发现算法的任务就是发现被管网络中的子网、路由器以及它们之间的连接关系。网络拓扑结构的各子网通过各自的路由器与其他子网通信,它们都连接到路由器的一个端口上。路由器的一个端口可以连接一个子网,也可以同其他路由器相连。当子网内的某一机器向别的子网发送数据时,数据包首先到达本子网的缺省路由器,缺省路由器检测数据包中的目的地址,根据其路由表确定该目的地址是否在与自己相连的子网中。如果是,则把数据包直接发往目的地,否则转发给路由表中规定的下一个路由器,下一个路由器再进行类似处理,依次类推,数据包将最终到达目的地。可见,通过分析路由器上的路由表,就可以知道网络层的拓扑结构3
2.1网络层拓扑发现用到的MIB组
    MIB-II(RFC-1213)是标准的SNMP MIB,所有的路由器都必须实现它。拓扑发现程序了具有通用性的特点,必然选择MIB-II作为拓扑发现工具。MIB-II由很多不同的组组成,本拓扑发现算法用到的组包括:system 、interfaces和 ip。下面详细介绍这三个组中包含的对象。
   (1)System组
    该组内包含七个对象,分别为:SysDescr, sysObjectlD, sysUpTime, sysContact, sysName,sysLocatio和sysServices。其中sysDescr描述了设备的相关信息,一般包括厂商,型号等。SysObjectlD唯一标识特定厂商的特定类型设备,比如sysObjectlD为1.3.6.1.4.9.5.45,则可以判断该设备为思科公司生产的型号为cisco6506的交换机。SysUptime表示设备从最近一次启动开始正常运行的时间。Contact由网络管理员设定,一般设为网络管理员的联系方式。SysName为设备的名字,算法中会用这个对象来判断不同的IP地址是否属于同一个设备。SysLocation由网络管理员设定,一般设为设各所在地点。SysServices表示了该设备所能提供的服务。
   (2) Interfaces组pagebreak
该组包含两个对象护umber和Viable。其中,ifNumber对象表示该设备所具有的接口数量。该组的另一个元素ifT'able是一张表,表内的每一个字段都是某一个接口的一个属性,包括接口索引(ifindex),接口类型(ifType),接口速度(peed)和接口物理地址(ifPhysAddress)等。  
(3) IP组
    该组的元素较多,其中有三个表对拓扑发现来说比较重要,分别是ipAddrTable ,ipRouteTable和ipNetToMediaTable。
    通过表ipAddrTable,可以找到被管设备所有的IP地址,同时结合interfaces组的ifTable表,可以把接口和其IP地址一一对应起来。
    网络层的拓扑发现算法主要就是利用表ipRouteTable来判断网络层的拓扑结构的。子网与路由器以及路由器和路由器的关系都能从路由表中得出来。该表中对应拓扑发现的对象列举如下:
    IpRouteDest:路由的目的地址。如为0.0.0.0,说明该路由为缺省路由。通往同一个目的地的路由可能有多个,路由的选择依赖于所使用的路由协议。
    IpRouteNextHop:路由的下一跳路由器地址。
    ipRouteMask:路由目的地的子网掩码。提取1P数据包中的目的地地址,与ipRouteMask进行按位“与”运算,得到的结果与ipRouteDest比较,如相同则应选择该路由。如果ipRouteDest为0.0.0.0,则规定ipRouteMask也为0.0.0.0 。
ipRouteType:路由的类型,为整型类型。其意义如表1所示:
表1 ipRouteType值机其意义
ipRouteType值 意义
Other(1) 其他
Invalid(2) 非法
Direct(3) 该路由目的地址为路由器直接连接的子网
Indirect(4) 远程路由,目的地址为远程的主机、网络或子网
 
2.2基于SNMP的网络层对象发现
    (1)默认网关的发现
    首先,访问拓扑发现程序所在计算机的SNMP MIBII中的ipRouteTable,如果发现有ipRouteDest值为0.0.0.0的记录,则说明程序所在的计算机设置了默认网关,该记录的ipRouteNextHop值即为默认网关的地址。
    检查默认网关的ipForwarding值。如果为1,则表明该默认网关确实是路由设备,否则不是。
  (2)子网的发现
    遍历路由器MIBII的IP管理组中管理对象ipRouteDest下的所有对象,以每个路由目的网络号为索引,查询ipRouteType字段的值。若该值为3 (direct),则表明这条路由为直接路由,若该值为4 (indirect),则为间接路由。间接路由表明在通往目的网络或目的主机的路径上还要经过其它路由器,而直接路由表明目的网络或目的主机与该路由设备直接相连,这样就得到了与路由器直接相连的网络号。
    再以这组网络号中的每个为索引,查询其路由掩码(ipRouteMask )。根据路由掩码,就可以确定这组网络中每一个的IP地址范围4
例如,已知路由器的IP地址为192. 168. 4. 1,且路由器支持SNMP协议。利用SNMP协议可以得到以下与路由器直接相连的子网,如表2所示。
表2 与路由器相连的子网
网络号 网络掩码 地址范围
159.226.204.128 255.255.255.192 159.226.204.129~192
192.168.0.0 255.255.255.0  192.168.0.1~255
192.168.4.0 255.255.254.0 192.168.4.1~192.168.5.255
192.168..6.0 255.255.255.0 192.168.6.1~255
192.168.7.0 255.255.255.0 192.168.7.1~255
 
(3)其他路由设备的发现
    对于除了默认网关之外的路由设备,查询默认网关MIBII的IP管理组路由表中类型为间接路由的路由表项,得到路由的下一跳地址(ipRouteNextHop )。下一跳地址给出了与该网关相连的路由设备,仍可以利用上面的方法搜索这个设备的路由表。这样,该方法可以搜索出多个路由设备,并要求将它们所存储的路由表信息进行整合,得到更大的网络拓扑。
    (4)网络层的连接对象
网络层拓扑主要反映子网和路由器之间的连接关系。子网和路由器的连接关系可以在发现与路由器直接相连的子网时得到,路由器和路由器的连接关系可以通过路由表中的ipRouteNextHop得到。
2.3 基于SNMP的网络层拓扑友现算法描述
    网络层拓扑发现算法用伪代码描述如下:
  CGateway gw=GetDefaultGateway();//得到默认网关pagebreak
  If  ( gw确实是路由设备)
    把该设备添加到RouteList链表的末尾;
    for ( RouteList中的每一个路由器CurrentRouter )
      //遍历该路由器的路由表,提取路由器和子网信息
{for (CurrentRouter的路由表的每一项)
if (ipRouteType为direct)
{
if (ipRouteMask为255.255.255.255)
{
把IpRouteNextHop所代表的路由器添加到RouteList尾部,同时保证链表中的路由器不重复; 把当前路由器CurrentRouter和IpRouteNextHop代表的路由器之间的链接添加到链表LinkList中:
}
Else
{
把ipRouteDest和ipRouteMask所代表的子网添加到SubnetList中去;
把该子网与当前路由器CunrentRouter之间的连接添加到LinkList中:
}
}
if (ipRouteType为indirect)
{
把IpRouteNextHop所代表的路由器添加到RouteList尾部,同时保证链表中的路由器不重复;
把当前路由器CurrentRouter和IpRouteNextHop代表的路由器之间的链接添加到链表LinkList中;
}
}
}
总结
本文按照不同层次描述了基于SNMP的拓扑发现方法。在网络层,主要利用MIB的IP组中的路由表来发现网络中的路由器和子网的连接关系。SNMP标准协议是拓扑发现的一个重要工具,正是SNMP的存在,才使得耗时巨大的拓扑发现过程的变得迅速快捷。
参考文献
[1] 李佳,石冰心,喻莉.面向网络配置的拓扑发现技术研究[J].计算机工程与应用,2003,12.
[2] 徐大海,刘新,王奇,白英彩.网络拓扑自动搜索算法研究[J].计算机应用,2002,19(2)
[3]徐大海,龙敏敏,王奇,白英彩.网络拓扑分布式搜索[J].计算机应用研究,2005,2.
[4]徐斌,钱德沛,陆月明,王磊一种基于抽象点的网络拓扑自动生成算法[J].小型微型算机系统,2001,22(4).
咨询QQ:663410938 投稿邮箱:663410938@qq.com
双核期刊发表网 版权所有
业务咨询