当前位置首页 > 百科> 正文

网路拓扑发现

2019-10-09 07:51:05 百科
网路拓扑发现

网路拓扑发现

网路层拓扑发现的原理是结合ICMP和ARP以及SNMP,对指定的网路进行活动设备的检查,得到所有的活动设备,然后通过SNMP取得设备的基本信息,根据基本信息确定设备的类型,再根据设备的类型取得相应设备的详细信息。

概述

随着资讯时代的到来,对计算机网路的依赖使得计算机网路本身运行的可靠性变得至关重要,对网路管理也就有了更高的要求。
按照OSI的定义,网路管理主要包括五个功能域:故障管理、配置管理、性能管理、安全管理和计费管理。在五大功能域中,配置管理是基础,它的主要功能包括发现网路的拓扑结构、监视和管理网路设备的配置情况。其它的各项功能都以已知网路的拓扑结构为基础。
网路拓扑发现的主要目的是获取和维护网路节点的存在信息和它们之间的连线关係信息,并在此基础上绘製出整个网路拓扑图。网路管理人员在拓扑图的基础上对故障节点进行快速定位。

拓扑发现原理

网路拓扑自动发现的方法很多,但归结起来主要有以下三种:基于SNMP的网路拓扑发现方法;基于通用协定的网路拓扑发现方法;基于路由协定的网路拓扑发现方法。

网路层的拓扑发现

网路层拓扑发现的步骤如下:
首先通过默认网关路由器获取存在的子网列表,然后通过ICMP Ping或路由器中的ARP信息遍历指定子网中所有的活动设备,并用系统团体名库去找到设备的团体名,如果找到则用SNMP协定获取设备的基本信息,并判断出设备的类型(路由器/交换机/防火墙/UPS/主机等),并在此基础上获取相应设备的详细信息。如果没有找到设备的团体名,则默认此设备为主机。
如何找到默认的路由网关呢?查找拓扑发现程式所在计算机的SNMP MIBII中的ipRouteTable,如果发现ipRouteDest值为0.0.0.0的记录,则说明程式所在的计算机设定了默认网关,ipRouteNextHop值即为默认网关的地址。然后检查默认网关的ipForwarding值。如果为1,则表明该默认网关确实是路由设备,否则不是。
如何取得存在的子网列表呢?遍历路由器MIBII的IP管理组中管理对象ipRouteDest下的所有对象,以每个路由目的网路号为索引,查询ipRouteType栏位的值。若该值为3(direct)表明为直接路由,若该值为4(indirect)则为间接路由。间接路由表明要通往目的网路或目的主机还要经过其它路由器,而直接路由表明与目的网路或目的主机直接相连,这样就可以得到与路由器直接相连的网路号。再根据网路号中的每条记录查询其路由掩码(ipRouteMask)。根据取得路由掩码,就可以确定每一个存在的网路子网的IP位址範围。
如何发现其它的路由设备?查找默认路由网关MIBII的IP管理组路由表中类型为间接路由的路由表项,得到路由的下一跳地址(ipRouteNextHop)。遍历下一跳地址给出的路由设备,就可以得到更大的网路拓扑。
如何发现网路层设备的连线关係?子网与路由器的连线关係遍历每个路由器下包含的子网来确定,主机与子网的关係可以通过主机IP与子网掩码来确定。

链路层的拓扑发现

当我们使用网管管理着很多设备,而且设备之间已经实际配置有许多光连线的时候,比如光连线数超过1000条,如果让我们在网管上一条一条地通过纤缆连线功能去配置,此时一定会很吃力,这时我们可以在网管上使用拓扑自动发现功能来帮助我们,自动发现设备之间的光连线。
对于交换机、路由器设备,链路层拓扑发现的原理是根据交换机的cdp邻居表、连线埠ifIndex和port对应表、自学习表判断出各交换机的连线关係,具体的拓扑发现步骤如下:
A、获取所有路由器的arp表信息,对于主机则通过SendARP或netbios来获取arp信息。
B、获取所有交换机的cdp邻居表、连线埠的ifIndex和port对应表、自学习表。
C、对交换机的互连关係进行判断,如果某个交换机的某个连线埠学习到了路由器的mac地址,则认为此连线埠为上行连线埠,如果交换机只有一个连线埠有自学习表项,也认为此连线埠是上行连线埠。如果一个交换机的上行连线埠中没有接其它的交换机则此交换机为根交换机。
D、对于每个交换机,如果它的某个连线埠和其它根上的多个连线埠冲突,通过cdp信息修正2者之间的连线关係,
用①表示邻居的根交换机,用②表示自己的根交换机,
如果①=②,表示它和它的邻居已经在同一棵树上,不处理;
如果是上行连线埠上的邻居,将①的层次和父亲改成self的层次和父亲;将①下的所有接点的层次加(self的层次-1)那幺多;将self的父亲改成邻居的连线埠,并将self的level增加(邻居的层次+1)那幺多;将self下所有接点的level增加(邻居的层次+1)那幺多。
如果是其他连线埠上的邻居,将②的层次和父亲改成邻居的层次和父亲;将②下的所有接点的层次加(邻居的层次-1)那幺多;将邻居的父亲改成self的连线埠,并将邻居的level增加(self的层次+1)那幺多;将邻居下所有接点的level增加(self的层次+1)那幺多。
E、对每个交换机,如果不是根交换机,则在其上加一个节点表示上行连线埠,并查找该交换机下的主机和UPS。
对于PTN设备,拓扑自动发现功能的核心是LLDP(Link Layer Discovery Protocol),链路层发现协定,是数据设备数据链路层的功能,协定的作用为使不同及相同厂商的设备能够在网路中相互发现并互动各自的系统及配置信息,可以实现光连线自动发现。
LLDP的报文结构如下:
在乙太网MAC帧中,使用Type类型栏位为0x88CC来表示LLDP报文具体结构如下:
网路拓扑发现
  • Destination MAC address:目的MAC,为固定的组播MAC 0x0180.C200.000E
  • Source MAC address:源MAC地址,传送LLDP报文设备的MAC地址
  • Type:类型栏位,为0x88CC,表示LLDP报文
  • LLDP PDU:LLDP数据,以TLV为单位,表示如设备MAC地址等相应信息
  • FCS:Frame Check Sequence,帧校验序列,实现MAC帧传送过程中的检错及纠错
TLV(Type、Length、Value),是LLDP报文中最重要的内容,可以有很多种TLV,其中基本TLV如下:
网路拓扑发现
当本端设备连线埠启用LLDP功能后,如果其模式为收发或只发,并且与对端设备间有连线埠之间的连线,那幺它将向对端连线埠传送LLDP PDU,其中包括本端设备MAC地址、本端连线连线埠等等信息;对端设备接收到该LLDP PDU后,经过相应处理后放入MIB中,比如LLDP.MIB,以供网管系统查询。网管系统收到发现请求后,查询设备上存储的对应光连线信息,根据信息进行拓扑自动发现,自动生成对应网元对应连线埠之间的光纤连线。

路由层的拓扑发现

路由层的拓扑发现原理是TraceRoute所有设备节点,根据返回的路由路径即可得到相关设备的路由拓扑关係,拓扑发现的步骤如下:
首先找到根节点,如果没有则生成一个;然后对每一个非路由器设备调用TraceRoute,将device id 为0而又没有子节点的treenode删掉,将device type是主机,但有子节点的设备改成路由器。
对于多址路由器的问题,可以通过查看路由器的osid是否一致来确定是否属于同一个路由器的。

目前Java技术实现的拓扑发现产品

ObjectSNMP是採用Java技术和SNMP技术实现的网路拓扑发现产品,目前的功能如下:
全网设备发现:可以按网路号、IP範围、多个网路範围内,自动搜寻发现设备,获取设备的基本信息、设备类型(交换、路由、路由交换、终端设备、厂商特有类型等)、MAC地址、ARP表、交换机连线埠、路由器接口、路由表、交换机转发表、主机IP位址等信息。
网路漫游发现:给定少数几个已知的网路号、IP範围,按用户指定的漫游深度和漫游广度,进行全网漫游发现。
网路拓扑自动发现:可以发现交换机与交换机、交换机与PC机、交换机与终端设备、交换机与路由器、路由交换机与路由交换机之间 的连线关係。连线关係可以定位到具体的设备连线埠、设备接口上。支持在任意指定的设备之间发现它们的所有连线,在全网範围内发现连线关係。
ObjectSNMP的物理拓扑自动发现採用了全新的技术:即支持单一Cisco、华为网路,也支持各种厂商设备混合网路。支持模糊连线定位,在数据不全或设备缺失的情况下,儘可能发现连线关係。可在任意的网路环境中工作,不需要用户对网路做任何假设(如路由器假设、根交换机假设、上/下行连线埠假设、边缘设备假设等)。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net