网络数据链路层连接关系的发现研究
2014-10-21柴清何辉龚成莹
柴清 何辉 龚成莹
【摘要】较之网络层拓扑发现,二层网络拓扑发现的复杂性在于以太网交换机等设备的透明性。针对数据链路层拓扑发现的问题,以实例的方式,对直接连接和间接连接这两种连接方式进行分类研究,通过直接连接定理和间接连接定理,确定出链路层设备的连接关系。给出了拓扑发现原理与案例说明。
【关键词】数据链路层;连接关系;SNMP;TCP/IP
1.引言
大多数情况下,除了要知道网络层拓扑结构,还需发现数据链路层的拓扑结构,即网络内部各网段中的设备及设备之间的关系。子网内的二层设备包括主机、交换机等。设备之间的连接关系包括主机与交换机、交换机与交换机、交换机与路由器等其它设备之间的连接关系。
较之网络层拓扑发现,数据链路层拓扑发现更加困难,大部分网络管理工具主要还是依赖网络层的拓扑发现。二层网络拓扑发现的复杂性在于以太网交换机等设备的透明性(网络用户感觉不到交换设备的存在)。邻居设备交换信息主要通过生成树协议(Spanning Tree Protocol,STP)实现。交换机保留MAC地址和接口状态(网内主机的MAC地址与交换机端口的对应关系)的主要载体是MAC轉发表(FDB),FDB可以通过SNMP的Bridge-MIB来访问。可以简单的通过Bridge-MIB计算得出设备之间的物理连接的关系,但由于Bridge-MIB存在时间老化、某些二层设备未配置管理IP导致网管无法访问以及设备学习不全等情况,导致很难通过计算得到一张精确的拓扑结构,这些问题需要采用特有的算法、特定技术来解决[1]。
2.链路层连接关系的发现
图1是一个典型的数据链路层网络结构图,包括交换机节点和主机节点,交换机之间通过端口(Port)互联,主机通过集线器或哑交换与交换机的端口相连。网络设备可以被划分为网桥的集合B和终端节点(主机)集合E,B={A,B,C,D},E={W,X,Y,Z}。交换机用不同的端口(Port)把网络中的各种设备连接起来;通过集线器(与交换机A相连)可以将若干台主机转接在交换机的某个端口上;哑交换机(交换机B与主机X之间的设备)指的是是不支持SNMP的交换机[2]。
图1 数据链路层网络图
在FDB中,交换机的每个端口都可能对应着多个MAC地址,MAC地址所对应设备的集合为该端口的转发集。对于交换机C,用FCx来标识交换机C的端口x的转发集,由可知,FC1={A,B,D,W,X,Z},该集合会随着网络拓扑的更新而变化,由于FDB还记录生存时间,所以FC1还会随着时间而变化,若该转发集中包含此端口外连接的所有设备,则称其为完整的,分析可知,FC1是完整的。
2.1 直接连接定理[3-4]
直接连接:两个节点相互连接,并且在它们之间不存在其它设备。
间接连接:两个节点通过其它设备而连接在一起。
直接连接其实是间接连接的一种特殊情况。若数据包从交换机A的x端口发出,中途未经任何其它网络设备而到达交换机B的端口y,称交换机A的端口x与交换机B的端口y之间是直接连接;若中途需经由其它的网络设备才能到达,称交换机A的端口x与交换机B的端口y之间是间接连接。例如,图1中交换机A和B通过端口1和4直接连接,交换机A的端口1和交换机C的端口1之间存在间接连接。
若能判断交换机端口间是否存在直接连接,就可以得出网络中交换机之间的互联关系,交换机和主机连接关系的发现也随之变的容易了。
图1中,若FB1和FC1都是完整的,即:FC1={A, B,W,X,D,Z},FB1={C,Y};则可得到,(N为全集,即图1中所有的设备)。
若A、B端口x,y直接连接,那么以连接处为界,可以将网络中的设备划分成两部分,一部分A的端口x所对的一侧,即FAx,另一部分B的端口y所对的一侧,即FBy。所以,该命题的逆命题同时也是成立。
直接连接定理[5]:如果FAx和FBy都是完整的,那么交换机A的端口x和交换机B的端口y直接相连的充要条件是且。
直接连接方法要求交换机端口的转发集是完整的,但是,当网络规模很大的时候,获得完整的转发集几乎是不可能的。这时,上述方法就不再适用了。
2.2 间接连接定理
为克服上述缺点,参考文献[6]中提出了一种能够利用不完整的转发集来判断交换机直接连接的方法。该方法的基本思想是:利用反证法,排除不可能的连接关系。
图2 交换机A与交换机B连接关系
图2中,假设交换机A和B通过某两个端口间接连接,然后判断该连接是否与交换机A、B的FDB中已有信息相矛盾,若不矛盾,则这个连接是可能存在的,若矛盾,则该连接不存在。图2所示的网络连接中,A、B交换机的连接关系有6种,如图3所示。
假设交换机A的端口1和交换机B的端口1间接相连,即图3的第一种情况。如前文所述,由于STP的作用,网络中交换机连接将连成树状结构,不存在环路。因此,该网络可以分为三部分,第一部分是交换机A的端口2和3所连接的设备;第二部分是交换机B的端口2所连接的设备;第三部分是交换机A、交换机B以及位于二者之间的设备,实际上,第一部分是,第二部分是FB2,这两部分不应该有交集,但是,这与交换机A的端口1和交换机B的端口1相连矛盾。事实上,除了有间接连接的两个端口以外,两个交换机上的不同端口的转发集不应该有相同的元素,否则,相当于一个设备同时存在于网络的两个不同的位置,这显然是不合理的。图3中,只有第五种情况下没有出现矛盾,其它5种情况均有矛盾。所以,实际情况是交换机A的端口1和交换机B的端口2相连。
图3 交换机A与交换机B的连接关系
在交换机端口的转发集不完整的情况下,可以利用上述方法来判断交换机之间的连接关系,参考文献[6]中给出了可以利用该方法得出交换机连接关系的最小要求,即间接连接定理。