董 帥,莫皓穎,戶江民,陳海軍,徐德濤
(重慶金美通信有限責任公司,重慶 400030)
隨著網絡規模的擴大,網絡狀態信息也快速增長,它是記錄和反映網絡情況的重要載體,通過對網絡狀態的監測,可以獲取性能參數,從而建立流量模型,對于網絡中存在的問題可以及時進行整改,提高網絡性能。近年來,許多大型研究項目組在網絡狀態的監測方面做了許多研究,其中比較著名的項目包括UC Berkeley的科學家對Internet進行的兩次長達三個月的大規模監測,其改進的國際網絡測量平臺(National Internet Measurement Infrastructure,NIMI)被許多國家廣泛應用[1]。本文介紹的網絡狀態監測方法是在已有研究成果的基礎上,提出的一種基于網絡探針的監測技術。與傳統的網絡狀態監測方法相比,具有精度較高,適用較廣,使用靈活的特點。
基于網絡探針的網絡狀態監測技術(Network Status Monitored by Network Pointer,NSMNP)就是對網絡狀態進行監測的一種方法,它主要是對網絡的流量信息和網絡的連通性信息進行監測。與傳統的流量監測方法相比,NSMNP除了對IP流量進行監測之外,還可以對自定義協議的流量進行監測,具有較大的靈活性。除了監測流量信息之外,NSMNP還可以監測網絡的連通性信息,通過對網絡的延遲信息和丟包率判斷網絡的性能。
對流量信息進行監測需要對數據報文進行抓取。傳統的方法是使用簡單網絡管理協議(Simple Network Manage Protocol,SNMP)進行數據流量的采集,開啟SNMP服務中的流量計數器讀取流量信息。雖然SNMP被廣泛用于網絡監測,但是由于它滯后于快速發展的計算機速度[2],所以NSMMP使用的是較為普遍的包嗅探法(Packet Sniffer),通過在端口設置數據采集點,可以全面的捕獲數據報文,獲得的數據信息精度會非常高。
由于IEEE802.3標準的以太網采用的是載波監聽多點接入/碰撞檢測(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)的方式,所以每一個主機都可以獲得其他主機發送的數據報文。將網絡適配器設置為監聽模式,網卡可以探測到任何一個在同一沖突域上傳輸的數據包。
NSMNP使用Winpcap進行網絡底層的訪問,監聽網絡上的數據報文。Winpcap可以將原始的數據報文進行抓取,包括對各個主機產生和發出的數據報文以及各個主機之間的數據報文;它還具有過濾功能,可以將某些特殊的報文過濾掉;而且還可以對網絡通信過程中產生的信息進行收集。Wincap通過底層的packet.dll所提供的接口,利用wpcap.dll所提供的高層抽象函數對數據報文進行循環抓取,并產生系統性能數據(Performance Data Helper,PDH),通過對注冊表中的PDH進行讀取可以得到網絡的流量信息[1]。
NSMNP對于流量信息的獲取主要通過三個步驟進行,第一是監測網絡數據報文,進行抓取;第二是讀取數據報文;第三個處理讀取的報文信息。
第一,監測并抓取數據報文。NSMNP使用wpcap工具進行數據報文的抓取。
第二,讀取數據報文。NSMNP對典型的流量信息進行監測主要是對端對端的網際協議(Internet Protocol,IP)流量進行監測。這里的端對端的IP流量主要是指在網絡層從一個源地址到一個目的地址的IP包統計信息。通過對其進行分析就可以得到相關的網絡信息。其中IP流量主要包括用戶數據報協議(Transmission Control Protocol,TCP)流量、傳輸控制協議(User Datagram Protocol,UDP)流量、網際控制報文協議(Internet Control Message Protocol,ICMP)流量。NSMNP首先通過Wincap進行數據報的循環抓取,抓取的報文進行解析,通過特定字段的值來判定協議類型,進而確定該報文的所屬類型。不同類型的IP流量具有不同的特點,其中TCP流量是在面向連接的,能可靠交付的情況下產生的數據流量,UDP流量是在面向無連接的,不保證可靠交付的情況下產生的數據流量,ICMP流量是在主機和路由器之間傳遞狀態信息和錯誤信息等情況下產生的數據流量,可以通過ICMP流量對整改網絡中出現的故障提供參考[3]。將IP流量進行分類可以方便網絡管理員進行觀察和整改。
對抓取的報文進行類型的判定后,就需要對其報文的長度進行確定。報文是由報文頭和數據段兩部分組成。使用指針獲取報文頭中的長度信息就可以獲得報文長度。
第三,處理讀取的報文信息。由于對于每一個報文來說,其報文的類型和長度都是確定的,那么就可以確定TCP流量、UDP流量和ICMP流量的大小。只需要通過下面的計算式(1)即可獲得:

其中,FlowTUI表示不同類型的數據流量,t表示特定的時間長度,Len(UDP、TCP、ICMP)表示在特定時間內不同協議類型的數據報文的長度。
獲得TCP流量、UDP流量、ICMP流量信息后,將三者的值相加即可獲得整個網絡的總流量的值。
通過以上三個步驟,就可以獲得整個網絡的IP流量信息。
NSMNP除了監測IP流量信息之外,還可以監測自定義協議的流量信息。對于IP流量來說,其中的TCP流量所使用的協議是TCP協議,UDP流量所使用的協議是UDP協議,ICMP流量信息所使用的協議是ICMP協議。但有時候只有這三個協議是無法滿足用戶的某些特定需求的,對于某些特殊的網絡,它們所使用的協議并不是上面的協議,而是根據網絡的特殊性,自定義網絡協議。那么監測這些特殊的網絡就需要使用新的方法進行監測。但總的監測流程和IP流量信息的監測是相同的:第一是監測網絡數據報文,進行抓取;第二是讀取數據報文;第三個處理讀取的報文信息。
第一,監測并抓取數據報文。NSMNP使用wpcap工具進行數據報文的抓取。
第二,讀取數據報文。對數據報文的處理就需要根據自定義協議的內容進行讀取。分析過程如下:首先讀取報文頭的信息獲取報文長度,根據自定義協議判斷數據報文長度是否滿足需求,符合則進行下一步分析,否則舍棄,重新監聽抓取分析。然后判斷數據報文的特定的第一個字段值與自定義協議所規定的值是否吻合,符合則進行下一步分析,否則舍棄,重新監聽抓取。然后依次判定接下來幾個特定的協議字段,若全部吻合,則說明該報文是按照自定義協議所產生的報文。
第三,處理讀取的報文信息。對于每個自定義協議報文來說,其報文的類型和長度都是確定的,那么就可以確定其流量的大小。只需要通過下面的計算公式即可獲得:

其中,FlowSDef是指自定義協議的流量信息,t表示特定的時間長度,Len(SDef)表示在特定時間內所自定義協議數據報文的長度。
通過以上三個步驟就可以獲得自定義協議的流量信息。
為了對單個網絡節點進行全面的分析,需要使用多維度融合分析,通過IP地址的識別匹配,得到融合后的流量監視視圖,即對IP流量和自定義協議流量進行多維度融合分析。
對于整個網絡來說,其中有多個站點組成,其相互之間的連接,擴展了網絡的覆蓋范圍。在監測網絡的流量信息時,根據用戶的不同需求,NSMNP可以監測單個站點的流量信息,也可以監測多個站點的流量信息。
監測單個站點的流量信息時,監測過程主要分為:第一,對監聽到的數據報文進行讀取,判斷其IP地址和指點站點的IP地址是否吻合;第二,計算通過該站點的流量信息。計算公式如下所示:

其中,FlowN為單個站點的網絡流量,t為特定的時間長度,Len(StationN)為特定時間內的通過該站點的數據報文長度。
監測多個站點的流量信息時,監測過程主要分為:第一,對監聽到的數據報文進行讀取,判斷其IP地址和多個站點的IP地址是否吻合;第二,計算通過多站點的流量信息。計算公式如下所示:

其中,FlowN+為多個站點的網絡流量,FlowN1為站點N1的網絡流量,FlowN2為站點N2的網絡流量,FlowNn為站點Nn的網絡流量。
監測全網的流量信息時多站點流量監測的特殊情況,只需要將全網所有站點的流量信息進行疊加即可。
網絡的連通性信息對于整個網絡系統來說是非常重要的,在網絡故障中,最常見的問題就是網絡的連通性故障。獲取網絡的連通性信息,可以更方便網絡管理員排除網路中存在的問題,提升網絡性能。
監測連通性的基本原理是利用網絡上機器的IP地址的唯一性,給目標IP地址發送一個數據包,要求目標計算機也返還一個同樣大小的數據包,通過兩個數據包的信息來獲取網絡的連通性信息。
NSMNP監測網絡連通性的方法是使用Ping的方法進行探測,但與一般的Ping探測方法相比又有不同。NSMNP具有多線程探測,單線程接收的特點。通過多線程發送探測報文,并使用單線程接收返回的報文。
網絡連通性有兩個重要的參數指標:網絡時延和網絡丟包率[3]。
所有終端使用多線程發送探測報文給控制中心,而控制中心使用單線程進行探測報文的接收。通過接收到的探測報文獲取各個鏈路的時延信息。
NSMNP會根據連通性監測的需求自定義一個探測報文,將自定義的報文和IP地址進行綁定,并且獲取當前發送時間,之后使用UDP方式進行網絡報文的發送。
控制中心處于監聽模式,檢測報文的到來,但其剛接收報文之時首先會進行檢驗和的檢測來確保接收報文的精確性,之后獲取當前的接收時間。根據該報文的發送時間和接收時間來獲得該鏈路的網絡時延。
單個終端使用多線程發送多個探測報文給控制中心,而控制中心使用單線程進行探測報文的接收。通過接收到的探測報文獲取該鏈路的網絡丟包率。
NSMNP會將自定義的探測報文使用UDP的方式進行多次發送,并記錄發送報文次數,控制中心利用校驗和檢驗過接收的報文之后,對接受的報文數量進行統計,通過發送的報文數量和接收的報文數量進行計算,獲得網絡的校驗和信息。
NSMNP是一種高性能的網絡狀態監測方法,主要實現對流量和連通性的探測。通過分析流量速度、時延以及丟包率等信息,得出網絡的狀態信息,便于管理員快速解決相關問題,維護網絡的暢通性。NSMNP與傳統的監測方法相比,其精度較高,適用較廣,使用更加靈活。