劉坤
【摘 要】為了提高網(wǎng)絡拓撲發(fā)現(xiàn)的準確性,提出多層的拓撲發(fā)現(xiàn)方法。該方法從網(wǎng)絡層和數(shù)據(jù)鏈路層分別進行拓撲分析,先找出網(wǎng)絡的邏輯拓撲,然后在此基礎上將數(shù)據(jù)鏈路層的交換設備加入到邏輯拓撲結構中去,進而形成完整的網(wǎng)絡拓撲。通過該方法設計的原型系統(tǒng)驗證,其能夠無遺漏的發(fā)現(xiàn)數(shù)據(jù)鏈層交換機與其它設備的鏈接關系。
【關鍵詞】拓撲發(fā)現(xiàn);SNMP;地址轉(zhuǎn)發(fā)表;端口信息表
0.引言
隨著網(wǎng)絡規(guī)模的不斷增大,網(wǎng)絡設備逐漸多樣化,其結構也呈現(xiàn)了復雜化的趨勢,要實現(xiàn)對網(wǎng)絡的有效管理,其前提是要了解網(wǎng)絡的狀態(tài),通常網(wǎng)絡管理系統(tǒng)首先要實現(xiàn)網(wǎng)絡的拓撲發(fā)現(xiàn),在正確、完整的網(wǎng)絡拓撲基礎上可以通過SNMP(簡單網(wǎng)絡管理協(xié)議)等網(wǎng)絡管理協(xié)議實現(xiàn)對網(wǎng)絡的有效管理,因此研究網(wǎng)絡拓撲發(fā)現(xiàn)對于計算機網(wǎng)絡的有效管理具有重要作用。
當前的網(wǎng)絡拓撲發(fā)現(xiàn)主要集中在兩個層次上,即網(wǎng)絡層的拓撲發(fā)現(xiàn)以及數(shù)據(jù)鏈路層的拓撲發(fā)現(xiàn)。網(wǎng)絡層拓撲發(fā)現(xiàn)相對比較成熟,發(fā)現(xiàn)過程中一般不會出現(xiàn)設備和鏈路的遺漏,基于SNMP協(xié)議的MIB-2信息庫查詢是其主要方法,文獻[1,2]中采用該方法,這也是當前商業(yè)網(wǎng)絡管理軟件所廣泛采用的一種方法;數(shù)據(jù)鏈路層的拓撲發(fā)現(xiàn)機制主要用來發(fā)現(xiàn)網(wǎng)橋類設備,當前主要是用來發(fā)現(xiàn)交換機在網(wǎng)絡上的拓撲狀況,文獻[3,4,5]提出了基于地址轉(zhuǎn)發(fā)表(AFT)的數(shù)據(jù)鏈路層拓撲發(fā)現(xiàn)算法,但算法要求所有交換機的地址轉(zhuǎn)發(fā)表是完整的,如果地址轉(zhuǎn)發(fā)表不完整將會出現(xiàn)拓撲部分鏈路遺漏的情況。
1.網(wǎng)絡層拓撲發(fā)現(xiàn)方法
根據(jù)網(wǎng)絡結構的不同,網(wǎng)絡拓撲發(fā)現(xiàn)方法也有所區(qū)別,當前商業(yè)網(wǎng)絡管理軟件廣泛采用的拓撲發(fā)現(xiàn)機制是利用ICMP配合SNMP協(xié)議的綜合網(wǎng)絡拓撲發(fā)現(xiàn)方法,ICMP協(xié)議可以發(fā)現(xiàn)網(wǎng)絡中存在的設備,SNMP協(xié)議可以通過MIB-2功能組讀取的方法獲得網(wǎng)絡中相關節(jié)點的重要控制信息,比如路由表,進而完成網(wǎng)絡拓撲發(fā)現(xiàn)的功能。以下對拓撲發(fā)現(xiàn)領域的常見方法進行總結。
1.1 ICMP協(xié)議發(fā)現(xiàn)設備
ICMP協(xié)議的設備發(fā)現(xiàn)類似Ping命令完成的功能,ICMP協(xié)議通過發(fā)送請求報文ICMP_ECHO和應答報文ICMP_ECHOREPLY可以達到判斷目標主機連接是否正常的目的。請求和應答報文是相互配合工作的。當源主機向目標主機發(fā)送了ICMP_ECHO數(shù)據(jù)包后,它等候目標主機的應答,目標主機在收到一個ICMP_ECHO數(shù)據(jù)包后,將交換源主機IP地址和目的主機IP地址后將收到的ICMP_ECHO數(shù)據(jù)包中的數(shù)據(jù)部分原封不動地封裝在自己的ICMP_ECHOREPLY數(shù)據(jù)包中,然后將該數(shù)據(jù)包反饋給發(fā)送ICMP_ECHO數(shù)據(jù)報的主機。接收方收到ICMP_ECHOREPLY數(shù)據(jù)包后進行校驗,如果校驗正確,發(fā)送主機認為目標主機連通正常,很顯然ICMP是設備發(fā)現(xiàn)的一種高效方法?
1.2 SNMP協(xié)議發(fā)現(xiàn)設備間的連接關系
在大部分商業(yè)軟件中都通過SNMP協(xié)議進行拓撲的發(fā)現(xiàn),比如SNMPc管理站軟件、HP OpenView等軟件。在SNMP管理架構下,每一個被管理設備都關聯(lián)一個MIB-2數(shù)據(jù)庫,其存儲著代理的網(wǎng)絡對象信息,管理站是通過對代理MIB-2庫中相關對象的讀取和寫入來實現(xiàn)有效的網(wǎng)絡監(jiān)視和網(wǎng)絡控制功能。要實現(xiàn)拓撲發(fā)現(xiàn),可以通過讀取MIB-2中記錄拓撲信息的相關對象(比如路由表、接口表、地址表等)構建網(wǎng)絡拓撲結構,不但能發(fā)現(xiàn)設備的存在狀態(tài),還能發(fā)現(xiàn)網(wǎng)絡層以上設備的互聯(lián)關系。
1.3 ARP協(xié)議發(fā)現(xiàn)局域網(wǎng)內(nèi)部設備
ARP協(xié)議能夠在局域網(wǎng)中對IP地址和物理地址進行解析,依靠的是計算機維護的一張ARP表,記錄了IP地址和物理地址的對應關系。因為ARP表中記錄的都是最近活動的主機IP地址和物理地址的對應關系,因此,能夠及時發(fā)現(xiàn)局域網(wǎng)的設備情況。但該發(fā)現(xiàn)設備的方法依賴局域網(wǎng)內(nèi)部的ARP表,所以應用范圍有限,一般僅僅作為網(wǎng)絡拓撲發(fā)現(xiàn)局域網(wǎng)的一個輔助方法使用。
2.數(shù)據(jù)鏈路層的拓撲發(fā)現(xiàn)方法
定理1:如果:SA(s1,i1)USA(s2,i2)=SaII并且SA(s1,i1)∩SA(s2,i2)=?,則 IF(s1,i1)和IF(s2,i2)中間是直接相連接的關系。
在定理1中,交換機s的第i號端口為IF(s,i);交換機s的地址轉(zhuǎn)發(fā)表中通過其i號端口IF(s,i)數(shù)據(jù)幀的源物理地址的集合表示為SA(s1,i1);子網(wǎng)中所有交換機的集合為SaII。
證明:這里使用反證法,假如,IF(s1,i1)和IF(s2,i2)中間不是直接相連接的關系,則在IF(s1,i1)和IF(s2,i2)之間必然還存在其它設備m,假設該設備的物理地址為Am,根據(jù)地址轉(zhuǎn)發(fā)表的生成規(guī)則可知:Am∈SA(s1,i1)并且Am∈SA(s2,i2),很顯然此時:SA(s1,i1)∩SA(s2,i2)=Am,這與SA(s1,i1)∩SA(s2,i2)=?矛盾,因此可以判斷定理一成立。
定理2:如果路由器r和交換機s之間直接互相連接,當且僅當其互聯(lián)端口IF(s,i)沒有出現(xiàn)其它交換機的物理地址并且SA(s,i)中包含路由器r的物理地址。
證明:首先進行充分性證明,如果路由器r和交換機s之間直接互相連接,則路由器r的物理地址必然出現(xiàn)在SA(s,i),另外,因為路由器將子網(wǎng)阻隔,其它的交換機的物理地址不可能經(jīng)過互聯(lián)端口IF(s,i),得證。
然后進行必要性證明,SA(s,i)中包含路由器r的物理地址說明路由器r位于端口IF(s,i)的子網(wǎng)中,但IF(s,i)端口所連接的子網(wǎng)中未出現(xiàn)其它交換機物理地址,因此路由器r和端口IF(s,i)直接互聯(lián),得證。
要根據(jù)定理1和定理2判斷數(shù)據(jù)鏈路層的鏈接關系首先必須獲得交換機的地址端口表,也就是說,要對以太網(wǎng)中端口的物理地址進行統(tǒng)計,這可以通過交換機的地址轉(zhuǎn)發(fā)表獲取相關信息,并進一步得到網(wǎng)絡數(shù)據(jù)鏈路層的拓撲狀況。交換機MIB對應的標準是Bridge-MIB。在Bridge-MIB中定義了dot1dTpFdbAddress(OID:1.3.6.1.2.1.17.4.3.1.1)來存放地址交換機的地址轉(zhuǎn)發(fā)表,其對應的端口存放在端口信息表dot1dTpFdbPort(OID:1.3.6.1.2.1.17.4.3.1.2)上。通過查詢dot1dTpFdbAddress和dot1dTpFdbPort便可以找到發(fā)現(xiàn)交換機MAC的端口。
3.總結
要對計算機網(wǎng)絡實現(xiàn)有效管理,首先必須知道網(wǎng)絡的拓撲情況,要發(fā)現(xiàn)網(wǎng)絡的拓撲可以從網(wǎng)絡層協(xié)議發(fā)現(xiàn),也可以從數(shù)據(jù)鏈路層發(fā)現(xiàn),網(wǎng)絡層能夠有效的發(fā)現(xiàn)網(wǎng)絡的邏輯拓撲,但不能發(fā)現(xiàn)數(shù)據(jù)鏈路層設備的鏈接關系,文中所采用的網(wǎng)絡拓撲發(fā)現(xiàn)方法綜合了網(wǎng)絡層和數(shù)據(jù)鏈路層的拓撲發(fā)現(xiàn)方法,能夠發(fā)現(xiàn)常見的三種拓撲關系:其一,網(wǎng)絡中路由器之間的鏈路關系;其二,網(wǎng)絡中路由器和交換機的連接關系;其三,網(wǎng)絡中交換機和交換機的鏈接關系。這三種關系基本包含了當前常見網(wǎng)絡的設備互聯(lián)關系。
【參考文獻】
[1]鄧澤林,張立芳,劉翌南,等.基于SNMP協(xié)議的網(wǎng)絡拓撲發(fā)現(xiàn)算法[J].長沙理工大學學報:自然科學版,2007,4(4):68-72.
[2]楊安義,朱華清,王繼龍.一種改進的基于 SNMP 的網(wǎng)絡拓撲發(fā)現(xiàn)算法及實現(xiàn)[J].計算機應用,2009,27(10):2412-2419.
[3]鄭海,張國清.物理網(wǎng)絡拓撲發(fā)現(xiàn)算法的研究[J]. 計算機研究與發(fā)展,2002,39(3):264-268.
[4]孫延濤,吳志美,石志強.基于地址轉(zhuǎn)發(fā)表的交換式以太網(wǎng)拓撲發(fā)現(xiàn)[J].軟件學報,2006,17(12):2565-2576.
[5]陰國富,一種分布式無線傳感器網(wǎng)絡跨層移動通信技術研究 [J].計算機應用研究,2012(9):2330-2335.