国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 網絡通信 > 正文

IP網絡拓撲自動發現

2019-11-03 09:06:14
字體:
來源:轉載
供稿:網友
北方交通大學  馬文彬 張慧勇


  自從20世紀90年代以來,越來越多的企業及個人在加入Internet網,使網絡規模持續擴大。為了適應越來越多的流量,新節點、新鏈路不斷的被引進到網絡上,從而使手工維護很難跟上網絡的變化,給網絡管理帶來困難。

  網絡由一起工作的大量實體構成,向用戶提供某種服務。這些實體功能由硬件和軟件執行,一些出現在真實網絡中實體的例子有路由器、服務器、普通主機、鏈路等,所有這些都影響著網絡運行的方式及提供給最終用戶的服務質量。例如,如果一個應用服務器(Web Server)出現宕機而從網絡上剝離下來,那么用戶將得不到他們所期望的服務(瀏覽網頁)。提到拓撲發現,一般是指發現完成最終用戶服務所涉及到的所有實體,不僅要發現實體,而且要發現實體在網絡中所起的作用及實體間互相連接的方式。

  網絡拓撲對網絡管理、網絡規劃非常有用。例如,網絡故障、流量瓶頸等重要信息能直接顯示在網絡拓撲上,這樣網絡管理員對當前的網絡狀況就有一個清楚的認識,對哪里發生了故障一目了然。如果網絡拓撲上顯示一條鏈路總處于滿負荷傳輸狀態,那么擴大該條鏈路的容量對提高網絡性能將有很大幫助。此外,網絡拓撲對網絡仿真也十分重要,要仿真能否在現有網絡上新開放一種應用,必須首先有正確的網絡拓撲。

  獲得網絡拓撲的最簡單的方法莫過于讓管理員根據實際網絡手工繪出其拓撲,但現在網絡越來越復雜,越來越龐大,并一直在膨脹,而且實體在網絡中擔負的功能也越來越復雜,要跟蹤這樣一個網絡需要花費很多時間或精力,而且網絡一旦有所改變所有工作必須重做。網絡拓撲自動發現正是基于這個原因發展起來的,本文對能用于拓撲發現的一些常用的工具和技術作了簡要的介紹,并基于筆者的實踐提供了一個簡單的算法實現,該算法主要針對同一個管理機構下的ip網絡的拓撲自動發現,更復雜的拓撲發現算法可在此基礎上進一步擴展。

一、用于拓撲發現的工具

  1. Ping

  Ping命令是IP網上最古老的一種工具,用來監測網絡節點是否活著,或用于監測到網絡節點間的往返時延(RTT)。通常Ping只涉及網絡上的源和目的兩節點,而忽略網絡細節。另外我們可以使用廣播Ping,其Ping的地址不是一個單一的地址,而是子網的廣播地址,所有位于該子網的主機均對此Ping包進行響應,從而一次就可得到子網內的全部活動主機。

  使用Ping的最大問題是,當Ping一個活著的主機時,其往返時延往往在幾十毫秒左右,但Ping一個不存在的或宕著的主機,一般比較常用的超時通常為20秒,再加上為了減少丟包對測量結果的影響而采取發2~3個Ping包,這樣對這類主機的監測代價就非常大。這個問題最直接的解決方案是減少超時值,但是必須注意不要小于網絡實際的往返時延。通過精心設計超時和重發策略(隨著跳數的增多,超時相應增大),可以有效減少等待時間同時又減少誤判。

  使用廣播Ping的問題是,現在實際網絡中廣播Ping很少得到完全支持,部分網絡由路由器代替子網內的主機響應。在另外一些網絡中主機根本就不對廣播Ping進行響應,甚至路由器根本不轉發能引起廣播的包。這是基于網絡安全的考慮,因為可以利用這個特性進行拒絕服務攻擊,例如向幾個大的子網進行廣播Ping,并把源地址設置為受害者的地址,這樣受害者就會淹沒于大量ICMP Ping的響應包,從而拒絕提供任何服務。對該問題的一個解決方案是設計一個專門的Broadcast Ping程序,其內部實現是直接將子網的廣播地址轉變為多個主機地址,然后啟動多個線程或進程來分別向主機發送Ping包,從而獲取子網內的全部主機地址。

  2. Traceroute

  Traceroute命令是TCP/IP家族內另一個比較早的工具,它可用來發現測試點和目標主機之間的路由器。路由器在轉發包之前總是將其TTL值減1,如果TTL降為0,則路由器向源地址發送TTL-Expired ICMP消息。Traceroute實現的原理就是應用路由器的這個特性,通過發送TTL逐漸增大的探測包,由測試點到目標間這條路經上所有的路由器依次向測試點發送TTL-Expired ICMP包,從而發現所有路由器。因為幾乎所有的路由器設計時都實現了發送TTL-Expired ICMP消息的功能,所以大多數情況下Traceroute的結果是準確可信的。由于采用逐漸增大TTL值的方法,每探測一個目標需要依次發送不同TTL值的多個包,因此用Traceroute獲取結果比Ping要慢的多。可以設計一種并發式的Traceroute命令,一次發送不同TTL值的多個包,從而加速路由器的發現速度。

  3. DNS

  IP地址是為網絡上的路由器或主機等機器設計的,它不符合人類的記憶習慣,DNS(Domain Name System)就是為了解決這個問題而開發的。DNS系統主要用于網絡設備IP地址到名字的映射,同時也維護一些其他信息如設備的硬件平臺及操作系統等。

  使用DNS服務器提供的區域傳輸功能可以一次獲取域內許多主機和路由器,快捷方便,這是它的優點。但如果主機的地址通過DHCP獲得,則DNS對此就無能為力,此外,DNS服務器提供的信息可能與實際情況不一致,甚至有些DNS服務器沒有提供區域傳輸功能。盡管有諸多缺點,DNS在拓撲發現中還是很重要的,我們可以把DNS返回的信息作為其他算法的起點;我們還可以在不知道網絡具體結構的情況下,使用不同時間返回來的信息直接用來估算網絡的增長速度。

  4. SNMP

  SNMP(簡單網絡管理協議)的基本思想是所有的網絡設備維護一個MIB(管理信息庫)保存其所有運行進程的相關信息,并對管理工作站的查詢進行響應。SNMP協議描述了一種從MIB庫中獲取信息的方法,對設備唯一的要求是支持SNMP并且MIB中的信息足夠豐富。

  使用SNMP的最大優點是信息自動隨網絡的狀況更新,這樣通過SNMP獲取的拓撲信息總是反映網絡最新的狀況。其缺點是并不是所有設備都支持SNMP協議,而且除了標準的MIB信息外,各廠家都為自己的設備開發了專門的MIB,如果在拓撲自動發現程序中使用了這些MIB,其處理上可能不得不隨廠家的不同而作特殊的處理。因此,我們建議盡量使用標準MIB。本文中用到的MIB組有System組、Interfaces組、IP組,它們均為當前MIB-II下的標準組。

  5. 其它工具或技術

  除了上面介紹的幾種常用工具外,我們還可利用節點的ARP表查詢它直連的設備,利用路由協議(如OSPF、BGP)發現所有子網或網絡,發現所有的路由器,在BGP下還可發現一條路經經過的自治域(Autonomous Systems)。對于非IP網絡,可利用專門的技術(對IPX網絡可采用SAP)發現網絡拓撲信息。此外,一些廠家專有的技術如Cisco的CDP(思科發現協議,僅用于Cisco設備)、Netflow技術等也可用于拓撲發現。

二、算法實現

  在本小節,我們給出一個IP網絡拓撲自動發現算法,使用的技術是ICMP(Ping)和SNMP。本文提供的算法要求輸入SNMP Read-Community,適用于發現同一個管理機構下的IP網絡。算法首先從本地子網開始,通過Ping獲取本地所有活動主機,利用SNMP區分出普通主機和路由器,然后對路由器進行查詢,下載路由器的System組、Interfaces組、IP組的信息。獲取路由器直連的網絡,進行下一輪運算,直到發現所有網絡或到達指定的深度(跳數)。程序主要涉及四大模塊:

  主循環控制模塊:程序初始化及算法深度控制,到達指定深度后跳出循環;

  子網搜索模塊:搜索子網內的所有活動主機和路由器;

  ICMP模塊:處理ECHO請求及應答;

  SNMP模塊:處理SNMP相關操作。

  程序中兩個重要的類為RouterClass和NetClass。RouterClass包括兩個指針分別指向IpList和NetList,IpList存放路由器的IP地址,NetList存放路有器連接的網絡。NetClass包括兩個指針分別指向Rconnect和Hconnect。

  本算法使用了兩個集合:臨時網絡集合,已發現網絡集合。臨時網絡集合用于存放當前深度和下一深度中還沒有被搜索的網絡,對已搜索的網絡需要添加到已發現網絡集合。算法中為了避免多次發現同一路由器(因為路由器有多個IP地址),需要遍歷路由器的IPList。程序使用的主要算法流程如下:

  ●子網搜索模塊

  (1)利用Ping搜索子網內所有的活動IP地址。

  (2)利用SNMP區分路由器和普通主機,并分別添加到NetClass的Rconnect和Hconnect。

  (3)針對每一個路由器,下載有關MIB變量(System組,Interfaces組,IP組),對MIB變量分析,分別寫入RouterClass的IPList和NetList。

  (4)為防止路由器被多次發現,要遍歷RouterClass的IPList。

  (5)將在(3)中發現的而又沒有搜索的網絡添加到深度為n+1的臨時網絡集合中。

  ●主循環控制模塊

  (1)從深度為n的臨時網絡集合中抽取一個子網進行子網搜索(調用子網搜索模塊)。

  (2)將(1)中搜索的網絡添加到已發現網絡集合。

  (3)重復進行(1)和(2)直到臨時網絡集合為空。

  (4)如果n小于指定深度(n

  本文提供了一個可用于IP網絡的拓撲自動發現算法。這個算法使用了路由器的MIB信息和ICMP(Ping)的結果來產生拓撲。路由器的IP地址不需要事先知道,本文給出的算法自動找出路由器,并利用SNMP協議獲取有關拓撲的MIB信息,本算法試圖發現盡量多的網絡,或在到達指定深度(跳數)后自動停止。本文所提供的算法適用于同一個管理機構下的IP網絡的拓撲自動發現,屬于不同管理機構的網絡(如Internet)拓撲自動發現要復雜得多,這種情況下就需要采用其它技術(如Traceroute),編寫新的算法實現,這正是筆者下一步努力的方向。


----《通信世界》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白朗县| 古浪县| 东丽区| 天峻县| 乐陵市| 邵武市| 临漳县| 阿城市| 湘阴县| 旬邑县| 徐汇区| 西平县| 广灵县| 门头沟区| 南平市| 镇宁| 花垣县| 宜城市| 滨海县| 叶城县| 黔西县| 崇义县| 柳江县| 通化县| 泸定县| 白水县| 陕西省| 淳化县| 元阳县| 华阴市| 耒阳市| 疏附县| 崇左市| 兴安县| 额尔古纳市| 酒泉市| 余干县| 思南县| 鄂州市| 汝城县| 彭山县|