以太网技术是第二层网络技术,其网络发现到目前还没有成熟的技术和方法。现有的网管?如HP OpenView?无法提供第二层的网络发现,并且各厂家的网管不能互通,如Cisco的CWSI和3Com Trancend等,须采用专用的协议或方法来实现。
目前,运行在第二层的通用协议有VLAN和Spanning Tree?生成树?等,其主要设备是以太网交换机。根据网络的拓扑结构,用以太网交换机组成的LAN一般有3种运行模式:运行Spanning Tree协议、不运行Spanning Tree协议以及混合式。本文以混合模式为例,结合网桥和Spanning Tree的基本原理,介绍一种简单的LAN物理网络拓扑的发现方法。
为方便讨论,在此假定由以太网交换机组成的LAN不支持VLAN技术。将靠近路由器R1的交换机B1设为优先级最低的DR?Designated Root,指定的根?。B1、B2和B3形成一个环路,其上运行Spanning Tree协议;对于不运行Spanning Tree协议的LAN,一般成树型结构,不能有闭环连接,如B1、B4和B5为单链路级连,不运行Spanning Tree协议。
在LAN物理网络拓扑发现以前,网段的网关地址是已知的,如本例中的61.140.216.254。为方便起见,我们假设所有以太网交换机的管理IP地址是已知的,即手工加入的,也可通过SNMP协议发现。如图1所示的61.140.216.253、61.140.216.245、61.140.216.246、61.140.216.215和61.140.216.219共5台以太网交换机的IP地址是已知。
为方便说明,本文将网关看作LAN的根。两台交换机直连时,将靠近根的交换机称作上游交换机,另一台称作下游交换机。下面论述LAN物理拓扑发现的方法。
1? 通过网管向所有交换机发Clear命令,清除交换机上所有的包转发表。
从桥的基本原理得知,以太网交换机动态学习通过它的数据包的MAC地址,并生成包转发表,转发表包含了目的MAC对应的目的端口号。由于交换机管理IP地址之间可能会进行一些相互的访问(如ping或telnet等操作),各个交换机的包转发表比较复杂。为使问题简单化,我们先把各个交换机的包转发表清除掉,让交换机重新学习并生成包转发表,然后继续下面的操作。
2? 利用路由器R1的ARP?地址解析协议?表,得到所有交换机的管理IP地址所对应的MAC地址?以太网物理地址?。
为保证ARP表包含所有交换机的MAC地址,可以执行“ping广播地址”命令,如“ping 61.140.216.255?假定图1中管理子网的网模为61.140.216.128?”。路由器接收到该命令后,将从目的地61.140.216.129开始执行ping命令,直到61.140.216.255结束。此时,路由器的ARP表是最全、最新的。
3 ? 从各个交换机中获得包转发表并进行分析。
在交换机B1上,只有通过F0/24端口才能到达MAC地址为00e0.1ece.1bd2的交换机或路由器。同理可知到达其他交换机的端口。通过这个简单的方法可以得到以B1为中心的星型网络结构。
但是还存在多个MAC地址同一目的端口的情况,如表2中,0090.0416.d8f8 ?B5?和0800.4ecc.89d8?B4? 都是通过F0/18到达的,这种情况说明存在交换机级连。对交换机B1而言, B5和B4通过同一目的端口F0/18,而到网关的端口号是F0/24,这说明B4和B5是B1的下游交换机,并且两者级连。
通过分析B4和B5交换机上的MAC转发表来判断B4和B5交换机的连接情况。交换机B4上的MAC转发表见表3 ?同样只保留了与交换机管理MAC地址有关的条目?。
与交换机B1对应的条目,这是因为发自B1的管理IP地址的数据包一般不通过B4,即上游交换机的数据包一般不通过下游交换机。这样,下游交换机的MAC转发表中不会拥有上游交换机的MAC转发条目。但每台交换机上都有指向网关的MAC转发条目?因执行了“ping 61.140.216.255 ”命令?。由表3可知,到达交换机800.4ecc.89d8?B5?的目的端口是F0/25,而到达00e0.1ece.1bd2的端口是F0/24 。这说明B5是B4的下游交换机, B4与上游交换机B1的端口是F0/24。根据B2、B3和B5交换机的MAC转发表,同理可以判断出B2、B3和B5到上游交换机的端口号,从而得知整个网络的拓扑结构。
4 ? 寻找被Spanning Tree隐藏的连接。
由于B1、B2和B3之间运行了Spanning Tree协议,B2的端口F0/1处于Block?阻塞?状态,采用上述方法无法得知B2和B3之间存在物理连接。这时,我们可以利用Spanning Tree协议本身的特点来发现B2和B3之间的连接。
根据Spanning Tree协议,每一个Segment?LAN交换机之间的LAN连接?存在一个DB?Designated Bridge,指定的桥?。与该Segment连接的交换机的端口都知道本Segment的DB的ID?识别号?,即不同交换机上的端口的DB ID相同,说明这些端口连接在同一Segment上。如在图1中,可以通过读取交换机的端口参数得知交换机B3的F0 / 1端口的DB ID是0032.0002.b9cf.1ac0,交换机B2的F0 / 1端口的DB ID同样是0032.0002.b9cf.1ac0,这说明B2的F0/1端口与B3的F0/1端口直连。通过该方法可以发现运行Spanning Tree 协议的网络结构。
如果全网都运行Spanning Tree协议,通过该方法可以快速而简单地发现其网络结构。但该方法不能使用在没有运行Spanning Tree协议的LAN上,所以当LAN是混合式时,应综合采用本文所介绍的方法。
事实上,通过SNMP协议同样可以获得上述步骤中的所有信息,从而为实现网管开发提供了条件。此外,笔者为叙述简单起见,在上文中假定由以太网交换机组成的LAN不支持VLAN技术。但实际上,上述方法同样适用于支持VLAN技术的LAN。因支持VLAN的LAN一定存在一个包含所有交换机在内的管理VLAN?缺省情况下为VLAN 1?,我们只需把上述方法针对“VLAN 1”进行分析,就可以很容易地得到这种LAN的物理拓扑结构。