專利名稱:一種網絡流量跟蹤及故障定位的方法、裝置的制作方法
技術領域:
本發明涉及網絡通信技術,尤其涉及一種跟蹤網絡設備上的指定流量的和流量處理異常的故障定位的方法及裝置。
背景技術:
現有計算機網絡一般采用ISO模型結構,即將一個計算機網絡分為若干層次,處在高層次的系統僅是利用較低層次的系統提供的接口和功能,不需了解低層實現該功能所采用的算法和協議;較低層次也僅是使用從高層系統傳送來的參數,這就是層次間的無關性。因為有了這種無關性,層次間的每個模塊可以用一個新的模塊取代,只要新的模塊與舊的模塊具有相同的功能和接口,即使它們使用的算法和協議都不一樣。網絡中的計算機與終端間要想正確的傳送信息和數據,必須在數據傳輸的順序、數據的格式及內容等方面有一個約定或規則的協議。對于網絡設備來說,在網絡設備的部署、調試和運行過程中,常常會遇到特定的流量不通暢也就是出現了網絡故障的情況。對于這種故障的判定一般需要比較專業的網絡基礎知識,并且需要采用比較復雜的跟蹤流量方法才能最終判定問題的所在。隨著網絡設備智能化程度越來越高,這種流量的跟蹤和故障的診斷復雜度也越來越高了。一般情況下造成網絡設備流量不同的情況原因很多例如網絡設備硬件故障。特定流量不符合設備的安全要求。設備的一些配置錯誤導致。設備的拓撲學習存在問題。QOS和流量限速功能導致(即丟失的流量為低優先級流量)等情況。網絡故障的發生有時候僅僅涉及上述情況中的一個方面,但也有很多時候,故障的產生原因并不僅僅是單個原因造成的。然而在現有技術中,當網絡出現故障時,一種最通常的做法是,以網絡中各單項功能為單位提供僅適用于該功能的故障診斷的方案。例如在針對網絡中的鏈路層協議,網絡系統會通過展現該協議模塊的連接狀態、報文收發統計、故障報文數量等等提供對于這個功能本身的整體情況描述,網絡再根據該情況描述判定當前設備的故障原因。又如,在現有技術中針對驅動的故障測試,往往是通過收集驅動的總報文收發數量、當前速率、校驗錯誤情況、擁塞丟包等等情況來判定故障。采用這種方法存在的問題是故障診斷只能根據報文在網絡中某一層的情況描述評定該報文在這一層中是否運行良好,無法縱向跟蹤相應報文在可能經過路徑中的情況,從而不能從網絡整體考量故障位置,例如,采用這種方法只針對某一報文在鏈路層傳輸時的數據情況進行了分析,但是無法知道該報文在應用層的驅動端是否被正確接收,是否順利通過了安全規則,是否順實現了路由等等情況,這樣在網絡各層間分別對故障進行排查,過程繁瑣而且漫長,對于網絡的修改規模和難度都較大。而目前網絡中實現的數據跟蹤功通常都是通過跟蹤流經過的路徑完成的,流即為我們所說的網絡中的會話,是由大量的互相關聯的報文組成。比如一個TCP連接,所有該連接往返的報文都屬于一個流。通常使用IP源目的地址、端口號、協議號等信息描述一條流。 采用這種傳統的方式要求各層網絡都要支持報文跟蹤功能。并且能夠提供一致的報文過濾方法,否則就無法進行跟蹤。采用這種數據跟蹤方法,最大的問題是難以在跟蹤粒度以及性能之間進行均衡。在網絡中跟蹤的內容越多,網絡的故障定位就越快越高效,但大量的故障跟蹤會嚴重影響設備的性能,尤其是吞吐量等重要指標。對于一些高速處理設備來說,一個報文所需要的處理周期非常短,然后在各網絡層中插入診斷判斷的指令都會大幅拉長設備的關鍵路徑,從而影響設備吞吐率。
發明內容
本發明提供一種網絡流量跟蹤及網絡故障定位的方法,所述方法包括如下步驟 在網絡各層報文處理入口點動態通過綁定break探測函數產生CPU異常,來設定探測點,報文通過所述探測點進入探測程序。本發明中所有報文具有統一的“O”拷貝報文結構,進入探測程序后,系統根據各報文解析后獲取的特征,分揀出需要跟蹤的報文并收集這些需要被跟蹤的報文經過網絡各層時的相關信息,如經過具體的模塊信息、經過所述模塊的時間信息等。流量跟蹤需要結束后,系統動態替換break指令而撤銷網絡各層中的探測點。最后系統會分析收集到的報文信息,通過這些信息分析網絡流量狀態及分析網絡故障成因。本發明還進一步包括網絡跟蹤流量分析裝置及網絡故障定位裝置。其中,網絡跟蹤流量分析裝置,包括探測點設定模塊,用以在系統動態綁定探測函數設定探測點;報文分揀模塊,用以分檢需要跟蹤的報文;報文信息收集模塊,用以收集各被跟蹤報文經過網絡各層轉發時的信息;探測點撤銷模塊,用以在跟蹤程序結束后,系統動態替換探測函數,撤銷探測點;網絡流量結果分析模塊,用以根據統計得到的跟蹤報文經過網絡各層轉發信息, 進行網絡流量分析。網絡故障定位裝置,包括探測點設定模塊,用以在系統動態綁定探測函數設定探測點;報文分揀模塊,用以分檢需要跟蹤的報文;報文信息收集模塊,用以收集各被跟蹤報文經過網絡各層轉發時的信息;探測點撤銷模塊,用以在跟蹤程序結束后,系統動態替換探測函數,撤銷探測點;網絡故障定位模塊,用以根據統計得到的跟蹤報文經過網絡各層轉發信息,進行網絡故障分析。本發明通過使用一種不需要改變系統架構和原有代碼,僅僅通過增加一個第三方的外掛檢測模塊即可實現流量的深度縱向跟蹤,并且該模塊不工作時,對于設備是無損的, 即完全不影響設備的吞吐率指標。而且通過對報文流的統一識別、信息收集以及分類,一步到位得出導致流故障的網絡位置,實現快速定位,并對網絡中各流量轉發狀態做到準確跟
S示ο
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例所涉及的三層網絡處理模塊示意圖;圖2為本發明實施例中流量跟蹤過程的方法流程圖;圖3為本發明實施例中探測函數實現跟蹤報文工作原理示意圖;圖4為本發明實施例中報文在鏈路層格式示意圖;圖5為本發明實施例中報文在網絡層格式示意圖;圖6為本發明實施中跟蹤流量裝置的結構示意圖;圖7為本發明實施中網絡故障定位裝置的結構示意圖。
具體實施例方式為了解決現有技術中網絡流量縱向跟蹤及故障定位的問題,本發明實施例采用的方案主要是使用一種不需要改變網絡本身的系統架構和原有代碼實現的方法,僅僅通過增加一個第三方的外掛檢測模塊即實現任意粒度的流量深度縱向跟蹤,并且該檢測模塊不工作時,對于網絡設備完全無損即完全不影響網絡設備運行的吞吐率指標。同時通過該方法可以對報文流進行統一識別、信息收集以及分類,從這些信息中可以一步到位地到處流故障點,實現網絡中故障快速定位。為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述。如圖1所示的三層網絡處理模塊,為了便于更清楚地描述本發明實施例中只列舉了鏈路層、鏈路層、應用層這三層模型來表示一個網絡處理模塊。但實際中,此處所描述的實施例僅為一個例子,本領域的技術人員應當理解,本發明所涉及的方法不僅可以適用于本實施例,也同樣可以應用在各類網絡構架中。圖1中的箭頭表示報文流經的路徑,在本實施例中,報文的流經路徑為報文從驅動接收,進入鏈路層處理,最終進入網絡層。在所述路徑中報文隨時可以在鏈路層和網絡層中都有直接被轉發。報文在如圖1所示的流經路徑中可能因為各類原因被丟棄,這種情況下,在外界看來就表現為某個流斷開或者流量斷斷續續。然而,任何時候報文都不是憑空消失的,都是由網絡中各層的丟棄行為所引發的。例如, 當本實施例中所述的報文不符合本實施例所例舉的三層網絡模型的安全規則,在進入網絡層入方向安全過濾時就有可能被丟棄了,導致該報文所涉及的流量被斷開,網絡中出現故障。本發明實施例提供了一種如圖2所示的網絡處理模塊的流量跟蹤方法包括步驟101、在網絡各層報文處理入口點綁定探測函數并設定探測點。為了了解網絡各層報文的行蹤,必須在各層處理的報文中識別出需要跟蹤的報文,并將這些報文信息進行記錄,根據這些篩選出的報文信息確定報文在設備的各層中的行程軌跡。為了達到這個目的,首先需要在網絡各層處理報文的入口處必須設置一個報文探測點。當報文一旦到達網絡各層的報文處理探測點,就會被探測到并進入探測程序。在本實施例中,優選地設置報文探測點的方式為,就是在網絡系統中綁定一個探
6測函數通過該函數設定探測點、更具體地說所述報文探測點的設置方法是在網路各層的處理報文代碼入口處指令用特定探測函數替換,使得CPU—旦執行到這些函數即被強制定向到探測函數中,等探測函數執行完畢后再回到原函數繼續執行正常任務指令。圖3顯示了探測函數實現報文跟蹤的完成工作程序。本發明實施例中,探測點的插入方法如圖3所示的函數運行圖,即一個函數linklayer_pkt_decap為例,其反匯編后指令如下,001dc8e0<linklayer_pkt_decap> Idc8e0 :addiu sp, sp, -160Idc8e4 :sd ra,152 (sp)Idc8e8 :sd s2,144(sp)ldc8ec :sd si, 136(sp)Idc8f0 :sd sO, 128 (sp)Idc8f4 :move si, a2Idc8f8 :move s2, a3一般情況下,CPU將按照如上順序執行指令。每次執行一條匯編指令,執行完取下一條指令繼續運行。而在本發明實施例中,為了能夠讓上述例子中linklayer_pkt_decap函數在處理報文時能夠完成報文識別的目的,優選地,通過軟件動態修改代碼段內IdcSeO上的指令, 將其替換為break指令,完成報文探測點的設置,也就是利用break指令會產生CPU異常的功能,使在不修改原代碼的基礎上,動態改變CPU的指令執行路徑,即利用break指令,使程序進入報文探測程序。此時的指令行變為
001dc8e0<linklayer_pkt_decap>
Idc8e0:break
Idc8e4:sd ra,152 (sp)
Idc8e8:sd s2,144(sp)
ldc8ec:sd si,136 (sp)
Idc8f0:sd s0,128(sp)
Idc8f4:move sl,a2
Idc8f8:move s2,a3
具體地,在實施跟蹤之前,必利用探測函數設定探測點,即將被跟蹤函數的入口指
令替換為break指令,并將被替換指令另外保存到內存的備份地址中。以圖2所示的網絡三層結構為例,首先,當有報文進入鏈路層后,鏈路層對報文進行解封裝,同時系統會自動調用函數linklayer_pkt_decap,并且將解封裝后得到的報文結構作為參數傳入所述調用函數進行運算。當CPU執行函數linklayer_pkt_decap中Idc8e0的指令時,該指令被break指令所替換,導致CPU產生一個異常,CPU自動跳轉到異常處理程序中運行,同步地,原運行程序被保存到備份地址,待異常程序運行結束后,跳轉回原程序。步驟102、分揀需要跟蹤的報文。
在本發明實施例中,如圖3所示,所述CPU跳轉進入異常處理程序異常處理程序, 在該程序中將執行探測程序。所述探測程序通過獲取linklayer_pkt_decap的參數,得到當前該函數處理的報文對象。從而在眾多報文中分檢出需要被跟蹤的報文。優選地,為了能夠從每秒幾百萬的報文中找出需要跟蹤的報文,首先需要在網絡設備中對報文特征進行描述。在本發明實施例中,為了達成本發明所需的性能,要求網絡中所有報文的內容在網絡各層的轉發過程中都不發生變化,所有的內容經過各層的轉發都還保留在報文結構中,不發生變化。這樣的結構確保了網絡各層中的報文都使用統一的函數進行統一解析,而不再需要關注該報文的處理具體處于網絡中哪個層上。本發明實施例如圖1所示的網絡處理模塊的網絡層及以下各層中的報文都為“0”拷貝且使用統一報文結構。即,報文在各層解封裝時,并不是將剝離的報文頭抹去,而僅僅是將當前處理位置指針挪到下一層協議開始處。較優的,可以如圖4的和圖5所示本發明實施例中的鏈路層和網絡層處理的報文結構中,從中可以清楚看出,所述報文在鏈路層和網絡層報文上得數據內容沒有發生變化,僅僅是報文在鏈路層處理時指針指向鏈路層的報文頭和報文尾,而進入網絡層處理后,指針指向網絡層的報文頭和報文尾。這樣就的報文結構使得報文特征在網絡各層保持一致便于識別。進一步地,獲取跟蹤報文的方法為,通過提取對如上結構的報文進行解析,獲得報文特征,根據這些特征甄別出相應報文是否是要被跟蹤。具體地,如對于TCP流中的報文來說,提取報文特征即在報文中提取I P源目的地址、源目的端口以及TCP協議號,然后使用這些提取出的信息,與用戶定義的網絡目標流進行對比完成報文的識別。如果對比結果顯示,該報文提取出的特征可以和目標流的特征匹配,則說明該報文就是在眾多的報文中需要進行用戶要跟蹤的那個,否則放棄跟蹤此報文。步驟103、收集需要被跟蹤的報文信息。如上一步驟所述,系統發現與用戶定義的網絡目標流特征一致的需要被跟蹤的報文,系統將自動記錄所述報文出現的探測點位置、出現時間等信息。這些信息將被可以記錄在內存的數據結構中。在本發明實施例中,可以調用一個接口如Recored_flow (probe_point*pb, time_t time)步驟104、撤銷網絡各層中的探測點。由于每個報文在進入網絡層時都會經過探測點即通過探測函數進入探測程序,因此探測點的存在對于系統性能會有較大的影響。所以,當用戶完成指定流量的跟蹤后,可以停止跟蹤,將網絡各層中的探測點撤銷。本發明實施例中,撤銷探測點的方法就是將被 break指令替換的指令從備份指令地址讀取出來重新寫回代碼段,繼續執行被break指令替換掉的原代碼程序。步驟105、分析收集到的被跟蹤報文信息數據。設備對在所述探測程序中收集的信息做進一步的流量分析,即得出需要跟蹤的報文運行軌跡或者故障原因。如下,舉例說明該數據分析的具體方法。如當用戶A反饋訪問服務器常常出現斷線問題。該用戶IP地址為192. 168.9. 11, 服務器的IP地址為192. 168. 0. 100。管理員跟蹤到該用戶的流量經過服務器區防火墻時丟失。需要排查流量丟失的原因。具體方法如下
管理員以IP地址作為跟蹤節點的特征,確定需要跟蹤網絡中所有IP地址為 192. 168. 9. 11 到 192. 168. 0. 100 和 192. 168. 0. 100 到 192. 168. 9. 11 的指定 TCP 流量。確定跟蹤流特征后,管理員將探測函數break動態插入設置探測點,開啟流量跟蹤工作。當用戶嘗試連接服務器時,探測程序將所有經過設備的與192. 168. 9. 11到192. 168. 0. 100和和 192. 168. 0. 100到192. 168. 9. 11匹配的TCP協議特征的報文信息全部收集起來。當信息收集完成后,管理員動態撤銷函數break,停止流量跟蹤,查看跟蹤結果。如,本例中跟蹤結果顯示為指定流量在192. 168. 9. 11到192. 168. 0. 100的方向上,50%的報文執行路徑為驅動層接收一2層報文解析一入方向限速/qos之后就終止了。只有50%的報文一直執行到驅動發送。由此可知,50%的指定流量是被入方向限速/qos模塊丟棄了。依據此線索查看用戶的QOS配置,了解到限速的原因導致該用戶訪問服務器的帶寬被擠壓導致訪問不暢。同樣的,從上述例子中得到的數據可以繪制出每個流在設備上的傳輸路徑。如管理員需要從上述跟蹤動作中看出,50%的指定流的轉發路徑為驅動接收一2層報文解析 —2層轉發一2層報文封裝一驅動發送,管理員可以由此路徑判斷出所述指定流量的處理是否與預期路徑一致,是否被正確的處理了。優選地,在上述例子中,可以增加至少一個時間截,用以統計指令流在網絡各層中的耗時,并可以根據所得結果對系統進行優化。圖6為一種網絡跟蹤流量裝置的結構圖。如圖所示,流量跟蹤裝置包括探測點設定模塊,用以在系統動態綁定探測函數設定探測點。報文分揀模塊,用以分檢需要跟蹤的報文。報文信息收集模塊,用以收集各被跟蹤報文經過網絡各層轉發時的信息。 探測點撤銷模塊,用以在跟蹤程序結束后,系統動態替換探測函數,撤銷探測點。網絡流量結果分析模塊,用以根據統計得到的跟蹤報文經過網絡各層轉發時的信息,進行網絡流量分析。探測點設定模塊在網絡各層報文處理入口點動態通過綁定break探測函數產生 CPU異常,來設定探測點,報文通過所述探測點進入探測程序。報文分揀模塊中,本發明中所有報文具有統一的“O”拷貝報文結構,進入探測程序后,系統根據各報文解析后獲取的特征,分揀出需要跟蹤的報文。分揀出的報文轉發信息在報文信息收集模塊中被收集。流量跟蹤需要結束后,探測點撤銷模塊動態替換break指令從而撤銷網絡各層中的探測點。最后網絡流量結果分析模塊會分析收集到的報文信息,通過這些信息做出網絡流量分析。圖7為一種網絡故障定位裝置的的結構圖。如圖所示,網絡故障定位裝置包括探測點設定模塊,用以在系統動態綁定探測函數設定探測點。報文分揀模塊,用以分檢需要跟蹤的報文。報文信息收集模塊,用以收集各被跟蹤報文經過網絡各層轉發時的信息。探測點撤銷模塊,用以在跟蹤程序結束后,系統動態替換探測函數,撤銷探測點。網絡故障定位模塊,用以根據統計得到的跟蹤報文經過網絡各層轉發信息,進行網絡故障分析。
探測點設定模塊在網絡各層報文處理入口點動態通過綁定break探測函數產生 CPU異常,來設定探測點,報文通過所述探測點進入探測程序。報文分揀模塊中,本發明中所有報文具有統一的“O”拷貝報文結構,進入探測程序后,系統根據各報文解析后獲取的特征,分揀出需要跟蹤的報文。分揀出的報文轉發信息在報文信息收集模塊中被收集。流量跟蹤需要結束后,探測點撤銷模塊動態替換break指令從而撤銷網絡各層中的探測點。最后網絡流量結果分析模塊會分析收集到的報文信息,通過這些信息分析出網絡故障成因。最后應說明的是以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。
權利要求
1.一種網絡流量跟蹤方法,其特征在于,包括如下步驟在網絡各層報文處理入口點綁定探測函數并設定探測點,報文通過探測點進入探測程序;進入探測程序后,系統分揀出需要跟蹤的報文; 系統收集需要被跟蹤的報文信息; 跟蹤結束,撤銷網絡各層中的探測點; 系統分析收集到的被跟蹤報文信息數據。
2.如權利要求1所述的方法,其特征在于,所述方法通過break指令產生CPU異常,設置探測點,從而動態改變CPU指令執行路徑。
3.如權利要求2所述的方法,其特征在于,所述方法中報文結構作為參數傳入所述調用函數,以便所述探測程序根據報文結構提取報文特征。
4.如權利要求1所述的方法,其特征在于,所述網絡中的報文使用統一的“O”拷貝報文結構。
5.如權利要求4所述的方法,其特征在于,通過報文結構解析,提取報文特征與目標流中的對應特征進行對比完成報文的識別,確定需要跟蹤的報文。
6.如權利要求1所述的方法,其特征在于,所述需要跟蹤的報文,經過所述探測點后, 將記錄該報文經過探測點的位置及出現時間信息。
7.如權利要求6所述的方法,其特征在于,所述記錄的報文信息將存放在內存中,以便后續讀取。
8.如權利要求2所述的方法,其特征在于,當報文跟蹤程序結束后,通過替換break指令,撤銷探測點。
9.如權利要求1所述的方法,其特征在于,所述方法可以用于網絡流量跟蹤分析過程。
10.如權利要求1所述的方法,其特征在于,所述方法可以用于網絡故障定位過程。
11.如權利要求10或11所述的方法,其特征在于,可以在所述方法中增加至少一個時間截,用以統計所述跟蹤報文在各網絡中轉發時長。
12.—種網絡跟蹤流量分析裝置,其特征在于,所述裝置包括 探測點設定模塊,用以在系統動態綁定探測函數設定探測點; 報文分揀模塊,用以分檢需要跟蹤的報文;報文信息收集模塊,用以收集各被跟蹤報文經過網絡各層轉發時的信息; 探測點撤銷模塊,用以在跟蹤程序結束后,系統動態替換探測函數,撤銷探測點; 網絡流量結果分析模塊,用以根據統計得到的跟蹤報文經過網絡各層轉發信息,進行網絡流量分析。
13.如權利要求12所述的裝置,其特征在于,所述探測點設定模塊,通過break指令產生CPU異常,設置探測點,從而動態改變CPU指令執行路徑。
14.如權利要求12所述的裝置,其特征在于,所述網絡中的報文使用統一的“0”拷貝報文結構。
15.如權利要求14所述的裝置,其特征在于,所述報文分揀模塊,通過對報文結構進行解析,提取報文特征與目標流中的對應特征進行對比完成報文的識別,確定需要跟蹤的報文。
16.一種網絡故障定位裝置,其特征在于,所述裝置包括 探測點設定模塊,用以在系統動態綁定探測函數設定探測點; 報文分揀模塊,用以分檢需要跟蹤的報文;報文信息收集模塊,用以收集各被跟蹤報文經過網絡各層轉發時的信息; 探測點撤銷模塊,用以在跟蹤程序結束后,系統動態替換探測函數,撤銷探測點; 網絡故障定位模塊,用以根據統計得到的跟蹤報文經過網絡各層轉發信息,進行網絡故障分析。
17.如權利要求16所述的裝置,其特征在于,所述探測點設定模塊,通過break指令產生CPU異常,設置探測點,從而動態改變CPU指令執行路徑。
18.如權利要求16所述的裝置,其特征在于,所述網絡中的報文使用統一的“0”拷貝報文結構。
19.如權利要求18所述的裝置,其特征在于,所述報文分揀模塊,通過對報文結構進行解析,提取報文特征與目標流中的對應特征進行對比完成報文的識別,確定需要跟蹤的報文。
全文摘要
本發明提供一種網絡流量跟蹤及網絡故障定位的方法,所述方法包括如下步驟在網絡各層報文處理入口點綁定探測函數并設定探測點,報文通過探測點進入探測程序。進入探測程序后,系統分揀出需要跟蹤的報文并收集這些需要被跟蹤的報文經過網絡各層時的轉發信息后,撤銷網絡各層中的探測點。最后系統會分析收集到的報文信息,通過這些信息分析網絡流量狀態及分析網絡故障成因。相應裝置包括探測點設定模塊、報文分揀模塊、報文信息收集模塊、探測點撤銷模塊、網絡流量結果分析模塊或網絡故障定位模塊。
文檔編號H04L12/26GK102427423SQ20111034914
公開日2012年4月25日 申請日期2011年11月7日 優先權日2011年11月7日
發明者馬云鶯 申請人:北京星網銳捷網絡技術有限公司