基于VLAN的异构IP网络物理拓补自动发现算法的研究与实现
1引言
网络拓扑发现是指发现网络元素并确定网络元素之间的互连关系,包括互连设备(如路由器、网桥、交换机等)、主机和子网。准确、有效地完成网络拓扑发现有极大的需求和应用前景,这主要体现在以下几个方面:
仿真网络:为了仿真实际网络,必须首先得到该网络的拓扑结构;
网络管理:网络拓扑信息可以帮助网络管理者并发现网络中的瓶颈和失效的链路;
服务器定位:网络拓扑信息可以帮助用户确定自身在网络中的位置,从而确定服务器的位置,以及选择哪一个网络服务提供商可以将时延最小化、可用带宽最大化;
拓扑敏感算法:一些新的协议和算法可以在得到网络拓扑信息的基础上改善网络性能。例如,基于拓扑敏感策略和QoS的路由选择算法与基于拓扑敏感进程组选项的组通信算法;
确定径向服务器位置:根据拓扑信息,合理配置径向服务器的位置,以最大可能减少时延,
解决瓶颈问题。
传统的网络拓补目的是获取网络三层拓补和二层拓补。其中三层拓补指三层设备(包括路由器和三层交换设备)与子网以及三层设备之间的连接关系。二层拓补指以交换机为主的两层设备之间,以及交换机与终端之间的连接关系。
网络拓扑发现主要分为网络层(三层)拓扑发现和物理(二层)拓扑发现两种。根据标准的ISO 网线原理七层网络模型,网络层拓扑发现对应于七层模型的第三层,反映的是路由器到路由器、路由器接口到子网的连接关系。物理拓扑发现对应于ISO七层模型中的第二层,反映的是交换机与交换机、交换机与路由器、交换机与主机之间的互连关系,物理拓扑真实地反映了网络结点使用网线连接的具体形式。标准的ISO七层网络模型是概念上的一种框架,如今组建网络时,工作人员普遍采用包括核心层、汇聚层、接入层的三层交换网络模型。许多大中型规模的网络建设中,以千兆三层交换机为核心的所谓“千兆主干跑、百兆到桌面”的主流网络模型不胜枚举,网络业界对“三层交换”和VLAN 这两个词不再感到陌生。目前中型企业以及其它各行业网络组建的流行网络模型为:路由器负责外网(广域网)接入;防火墙是内外网的边界,隔开内外网;主交换机有三层交换功能,主要的VLAN划分和VLAN 间的路由在这
进行,并且这也是二层交换机的主干汇聚;二层快速以太网交换机负责客户机、工作组服务器的接入。随着网络硬件产品性能的不断提高和成本的不断降低,新建立的局域网基本上都采用了这种流行网络框架模型,其中大都使用性能先进的快速以太网或千兆网技术,核心交换机为三层交换机。
在宽带网络建设中,正如路由器统治广域网一样,三层交换机主宰局域网己成为不争的事实。国内对含VLAN 异构IP 网物理拓扑发现的研究还处在起步阶段,相关产品还比较少。二层拓扑发现涉及到网络二层设备,即二层交换机,由于它是基于数据链路层的设备,所以使用传统的基于TCP/IP 的方法难以发现它们之间的连接关系。国外主要网络管理工具开发商已经相继在自己的产品中加入了二层拓扑发现这一最新特性,如HP OpenView NNM7.5 FLUKE 公司的MapShot 2.0。同时,有些设备制造商也加入了这一行列,例如,Cisco 制定的Cisco Discovery ProtocolCDP)和BAY Networks Optivity Enterprise,但是,这两种工具均基于厂家相关的产品,不具有通用性。
2 异构IP 网络物理拓扑发现算法
2.1 异构IP 网络物理拓扑发现算法理论依据及证明
首先暂时不考虑VLAN 问题,假设三层设备的接口连接唯一的一个子网。所要探测的物理拓扑就是这个子网内所有二层设备之间的物理连接关系。从某种意义上看, 可以将每个二层交换机(以太网交换机)认为是一个多口透明网桥(bridge)或者生成树网桥(spanning tree bridge), 遵守RFC 1493协议[4]。所以对由不同厂家设备组成的异构IP网络,可以利用各个厂家设备都支持的Bridge MIB-II地址转发表信息,到一个合理的算法确定网络二层设备之间的物理连接关系。贝尔实验室的Yuri Breitbart等研究人员已经给出单子网异构IP网络物理拓扑发现的基本算法[1][5][6],下面将对他们的算法作进一步推理证明。
3 VLAN 异构IP 网物理拓扑发现算法
3.1 算法难点
从二层(以太网)交换机工作原理[3]得知,地址转发表并未直接提供交换机之间的连接信息,所以必须采用某种方法出它们之间的连接关系。
⑵处理V L A N 的难点是怎样到在设备M I B s 中存放的VLAN信息。含VLAN 异构IP 网物理拓扑发现算法基于SNMP Bridge MIB-II(各个厂家设备都支持),通过分析二层交换机地
址转发表特性,出一个合理的算法,快速确定网络二层设备之间的物理连接关系。并根据从设备中取到的VLAN 信息出每个VLAN的划分情况。这种算法克服了不具备通用性的问题,可以从不同的网络厂家设备中搜集拓扑信息,并且确保正确地访问和解释从不同厂商设备中搜集到的相关信息。
3.2 算法思想
基于上节算法2 ,针对符合现代流行网络框架模型的含VLAN 异构IP 网物理拓扑发现提出以下算法。
定义8 下行Trunk 端口:下行端口中配置为Trunk 模式的端口。
⑴如果网络划分了VLAN,则通过到下行Trunk 端口直接判断三层交换机与二层交换机以及二层交换机与二层交换机之间的连接关系。
⑵判断三层交换机是否具有对VLAN 的路由功能。如果有,则出所配置的所有VLAN。此时三层交换机相当于一台路由器,将它当作路由器来处理。
⑶判断二层交换机是否配置了VLAN。如果有,则说明一台物理的交换机通过VLAN 已经被划分成了若干台逻辑交换机。如果能够出每个端口属于哪个VLAN,就可以到每个VLAN 的划分情况。
4 实例验证
4.1 相关协议及规范
SNMP MIB 使用ASN.1 方法定义它的每个对象,同时定义整个MIB 结构。
RFC1493 中定义了桥接设备的相关信息:
dot1dTpFdbTable
dot1dTpFdbAddress:“端口的单点广播(Unicast)地址,即从端口学习到的MAC 地址。”
dot1dTpFdbPort :“该行数据是从哪个端口学习到的。”
dot1dTpFdbStatus :“该行数据的类型:1 表示其它类型,2 表示非法的(例如超时),3
示学习到的,4 表示设备自身的MAC 地址,5 表示静态的地址(例如端口捆绑的MAC 地址)。
dot1dBasePortTable
dot1dBasePort:“端口号。”
dot1dBasePortIfIndex:“每个端口所对应的接口索引号。”
RFC1213interfaces组定义了关于接口的信息:
Iftable
ifIndex :“每个接口所对应的惟一接口索引号,取值范围为1至ifNumber。”
ifDescr :“有关每个接口的一个文本串。描述包括生产商名称、产品名称以及硬件接口版本等信息。”
RFC 2674 实现了Q-Bridge-MIBdot1qVlan 组中定义了VLAN 的相关信息:
算法3 V L A N 信息的提取分两种情况,华为设备使用