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