柴清 何輝 龔成瑩



【摘要】較之網絡層拓撲發現,二層網絡拓撲發現的復雜性在于以太網交換機等設備的透明性。針對數據鏈路層拓撲發現的問題,以實例的方式,對直接連接和間接連接這兩種連接方式進行分類研究,通過直接連接定理和間接連接定理,確定出鏈路層設備的連接關系。給出了拓撲發現原理與案例說明。
【關鍵詞】數據鏈路層;連接關系;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]中給出了可以利用該方法得出交換機連接關系的最小要求,即間接連接定理。