檢測等價多路徑路由功能的方法、設備和系統與流程
2023-09-22 21:39:05 9

本發明涉及通信技術領域,尤其涉及檢測等價多路徑路由(equal-costmulti-pathrouting,簡稱ecmp)功能的方法、設備和系統。
背景技術:
網際協議(internetprotocol,縮寫ip)網絡中可能存在多條路徑能夠到達同一ip地址,傳統的路由技術只能利用一條路徑轉發報文,其它路徑處於備份狀態或無效狀態。而ecmp技術可以並行使用多條路徑,增加傳輸帶寬,提高網絡傳輸效率。但在實際網絡運行過程中,可能由於網絡設備的ecmp功能不正確,沒有充分利用多條等價路徑,導致出現網絡擁塞、延時、丟包等問題。
技術實現要素:
本發明實施例提供了一種檢測等價多路徑路由功能的方法、裝置和設備,能夠檢測網絡設備的ecmp功能是否正確。
第一方面,提供一種檢測ecmp功能的方法,包括:網絡檢測設備根據目的ip地址和網絡拓撲信息生成n個包括標籤棧、ttl、源ip地址、所述目的ip地址和埠組的檢測報文;所述埠組包括源埠號和目的埠號;所述標籤棧中包括m個鏈路標籤,所述ttl的值為m的基礎上加1,也即,m+1;所述源ip地址為所述網絡檢測設備的ip地址,其中,m為所述網絡檢測設備到待檢測網絡節點的跳數,m≥1,n≥k,k為所述待檢測網絡節點至所述待檢測ip地址的等價路徑的數量,k≥2,m、n和k為正整數;所述n個檢測報文的標籤棧相同,ttl相同,源ip地址相同,目的ip地址相同;所述n個檢測報文中任意兩個檢測報文的埠組互不相同;所述網絡檢測設備根據所述 標籤棧棧頂的鏈路標籤發送所述n個檢測報文;所述網絡檢測設備接收與所述n個檢測報文對應的n個通知消息,n個通知消息中包括所述待檢測網絡節點在不同等價路徑上的下一跳,即不同反饋節點,的ip地址;所述網絡檢測設備根據所述n個通知消息和預設比值範圍確定所述待檢測網絡節點的ecmp功能是否正確。
這樣,網絡檢測設備生成的n個檢測報文包括相同標籤棧和相同ttl,使得n個檢測報文在轉發過程中經過相同跳數,在標籤轉發過程中都走指定轉發路徑,保證了n個檢測報文在待檢測網絡節點被按照轉發表並通過ecmp功能轉發到不同等價路徑上,觸發所述待檢測網絡節點在不同等價路徑上的下一跳,在ttl的值為0時發送通知消息給所述網絡檢測設備;所述網絡檢測設備根據收到的與n個檢測報文對應的n個通知消息,就可以快速判斷出所述待檢測網絡節點的ecmp功能是否正確。
所述網絡檢測設備具體可以記錄所述n個通知消息中不同源地址對應的通知消息的數量;判斷所述n個通知消息中不同源地址對應的通知消息的數量之間的比值是否滿足所述預設比值範圍,以確定所述待檢測網絡節點的ecmp功能是否正確。換言之,不同源地址對應的(即,不同反饋節點發送的)通知消息的數量,反映了不同等價路徑上經過的檢測報文的數量。這樣,通過不同源地址對應的通知消息的數量之間的比值,就可以判斷n個檢測報文是否在多條等價路徑之間均勻分配,具體來說就是按照預設比值範圍在各條等價路徑上轉發。
可選地,所述n個通知消息中包括第一通知消息和第二通知消息;所述第一通知消息中包括第一反饋節點的ip地址,所述第二通知消息中包括第二反饋節點的ip地址;所述網絡檢測設備接收與所述n個檢測報文對應的n個通知消息,包括:
所述網絡檢測設備接收所述第一通知消息和第二通知消息,所述第一通知消息用於通知所述網絡檢測設備:所述第一反饋節點收到所述待檢測網絡節點 發送的檢測報文,所述第一反饋節點為所述待檢測網絡節點在第一等價路徑上的下一跳,所述第一等價路徑為所述待檢測網絡節點至所述目的ip地址的k條等價路徑中的一條;
所述第二通知消息用於通知所述網絡檢測設備:所述第二反饋節點收到所述待檢測網絡節點發送的檢測報文,所述第二反饋節點為所述待檢測網絡節點在第二等價路徑上的下一跳,所述第二等價路徑為所述k等價路徑中的另一條。
可選地,所述第一反饋節點接收所述待檢測網絡節點轉發的第一檢測報文;所述第一反饋節點將所述第一檢測報文中的ttl的值減去1,並在確定所述第一檢測報文中的ttl的值為0時發送所述第一通知消息;所述第二反饋節點接收所述待檢測網絡節點轉發的第二檢測報文;所述第二反饋節點將所述第二檢測報文中的ttl的值減去1,並在確定所述第二檢測報文中的ttl的值為0時發送所述第二通知消息。
由於待檢測網絡節點至所述目的ip地址至少存在兩條等價路徑,因此收到的n個通知消息中,至少包括第一反饋節點發送的第一通知消息和第二反饋節點發送的第二通知消息。當然,如果出現收到的通知消息均來自一個反饋節點,很顯然所述待檢測網絡節點的ecmp功能不正確,可能是ecmp功能錯誤,也可能所述待檢測網絡節點沒有實現該ecmp功能。
所述網絡檢測設備具體可以根據所述網絡拓撲信息,確定所述網絡檢測設備到所述待檢測網絡節點的跳數(m)以及每一跳的鏈路標籤,並確定所述待檢測網絡節點至所述目的ip地址的等價路徑的數量(k);根據所述等價路徑的數量(k)、所述跳數(m)以及每一跳的鏈路標籤,生成所述n個檢測報文。網絡檢測設備在生成檢測報文時,將ttl的值設為特定值,即所述網絡檢測設備到待檢測網絡節點的跳數加1,就可以保證所述檢測報文在待檢測網絡節點的下一跳(即反饋節點)處理時,因ttl為0向所述網絡檢測設備發送通知消息。
可選地,在所述網絡檢測設備生成所述n個檢測報文之前,所述網絡檢測設備獲取所述網絡拓撲信息,所述網絡拓撲信息包括:所述網絡檢測設備到所述目的ip地址的轉發路徑以及所述轉發路徑上每一跳的路由信息;具體包括所述網絡檢測設備至所述待檢測網絡節點的每一跳的鏈路標籤,以及所述待檢測網絡節點至所述目的ip地址的k條等價路徑。
第二方面,提供一種檢測ecmp功能的方法,包括:網絡節點接收第一檢測報文,所述第一檢測報文中包括標籤棧、ttl、源ip地址、目的ip地址和第一埠組;所述標籤棧中包括m個鏈路標籤,所述ttl的值為m+1,m為大於等於1的正整數,所述源ip地址為網絡檢測設備的ip地址;所述網絡節點彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;所述網絡節點確定所述標籤棧為空時,根據所述目的ip地址和所述網絡節點的轉發表確定所述網絡節點至所述目的ip地址存在k條等價路徑;所述網絡節點使用ecmp功能,選擇所述k條等價路徑中的第一等價路徑轉發所述第一檢測報文。第一反饋節點接收所述第一檢測報文,將所述ttl的值減去1;所述第一反饋節點為所述網絡節點在所述第一等價路徑上的下一跳;所述第一反饋節點確定所述ttl的值為0,並向所述網絡檢測設備發送第一通知消息,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
這樣,通過包括相同標籤棧和相同ttl值的n個檢測報文,指定檢測報文的標籤轉發路徑和跳數,使得檢測報文在待檢測網絡節點根據轉發表通過ecmp轉發到各條等價路徑上,並利用ttl逐跳減1、ttl的值為0觸發不同等價路徑上的下一跳,例如,第一反饋節點和第二反饋節點,分別向網絡檢測設備發送通知消息。這樣,網絡檢測設備根據收到的與n個檢測報文對應的n個通知消息,例如,分別統計來自第一反饋節點和第二反饋節點的通知消息的數量,可以知道各條等價路徑上轉發的檢測報文的數量,從而可以快速判斷所述待檢測網絡節點的ecmp功能是否有問題,提高了故障定位的效率。
所述網絡節點具體可以根據所述源ip地址、所述目的ip地址、所述第一 埠組進行哈希計算;並根據哈希計算的第一結果確定所述第一等價路徑轉發所述第一檢測報文,其中,所述第一結果指向所述第一等價路徑。
所述方法還可以包括:所述網絡節點接收第二檢測報文,所述第二檢測報文中包括所述標籤棧、所述ttl、所述源ip地址、所述目的ip地址和第二埠組;所述網絡節點彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;所述網絡節點確定所述標籤棧為空時,根據所述目的ip地址和所述網絡節點的轉發表確定所述網絡節點存在k條等價路徑;所述網絡節點使用ecmp功能,選擇所述k條等價路徑中的第二等價路徑轉發所述第二檢測報文。第二反饋節點接收所述第二檢測報文,將所述ttl的值減去1;所述第二反饋節點為所述網絡節點在所述第二等價路徑上的下一跳;所述第二反饋節點確定所述ttl的值為0,並向所述網絡檢測設備發送第二通知消息,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
所述網絡節點具體可以根據所述源ip地址、所述目的ip地址、所述第二埠組進行哈希計算;並根據哈希計算的第二結果確定所述第二等價路徑轉發所述第二檢測報文,其中,所述第二結果指向所述第二等價路徑。
第三方面,提供一種網絡檢測設備,所述網絡檢測設備具有實現上述第一方面方法中網絡檢測設備的功能,所述功能可以通過檢測裝置實現,所述檢測裝置可以通過硬體實現,也可以通過硬體執行相應的軟體實現,所述硬體或軟體可以包括一個或多個與上述功能相對應的模塊。
第三方面的一種可能的實現中,所述檢測裝置包括:
報文生成模塊,用於根據目的ip地址和網絡拓撲信息生成n個包括標籤棧、ttl、源ip地址、所述目的ip地址和埠組的檢測報文;所述埠組包括源埠號和目的埠號;所述標籤棧中包括m個鏈路標籤,所述ttl的值為m+1,所述源ip地址為所述網絡檢測設備的ip地址,其中,m為所述網絡檢測設備到待檢測網絡節點的跳數,m≥1,n≥k,k為待檢測網絡節點至所 述目的ip地址的等價路徑的數量,k≥2,m、n和k為正整數;所述n個檢測報文的標籤棧相同,ttl相同,源ip地址相同,目的ip地址相同;所述n個檢測報文中任意兩個檢測報文的埠組互不相同;
發送模塊,用於根據所述標籤棧棧頂的鏈路標籤發送所述n個檢測報文;
接收模塊,用於與所述n個檢測報文對應的n個通知消息;
確定模塊,用於根據所述n個通知消息和預設比值範圍確定所述待檢測網絡節點的ecmp功能是否正確。
所述確定模塊具體可以記錄所述n個通知消息中不同源地址對應的通知消息的數量;判斷所述n個通知消息中不同源地址對應的通知消息的數量之間的比值是否滿足所述預設比值範圍,以確定所述待檢測網絡節點的ecmp功能是否正確。
可選地,所述n個通知消息中包括第一通知消息和第二通知消息;所述第一通知消息中包括第一反饋節點的ip地址;所述第二通知消息中包括第二反饋節點的ip地址;所述接收模塊具體用於:接收所述第一通知消息和第二通知消息,所述第一通知消息用於通知所述網絡檢測設備:所述第一反饋節點收到所述待檢測網絡節點轉發的檢測報文,所述第一反饋節點為所述待檢測網絡節點在第一等價路徑上的下一跳節點,所述第一等價路徑為所述k等價路徑中的一條;所述第二通知消息用於通知所述網絡檢測設備:所述第二反饋節點收到所述待檢測網絡節點轉發的檢測報文,所述第二反饋節點為所述待檢測網絡節點在第二等價路徑上的下一跳節點,所述第二等價路徑為所述k等價路徑中的另一條。所述第一通知消息為所述第一反饋節點在所述ttl的值為0時發送;所述第二通知消息為所述第二反饋節點在所述ttl的值為0時發送。
所述報文生成模塊,具體可以根據所述目的ip地址和所述網絡拓撲信息,確定所述網絡檢測設備到所述目的ip地址的轉發路徑以及所述轉發路徑上的所述待檢測網絡節點;根據所述網絡拓撲信息,確定所述網絡檢測設備到所述待檢測網絡節點的跳數m以及每一跳的鏈路標籤,並確定所述待檢測網絡節 點至所述目的ip地址的等價路徑的數量k;根據所述等價路徑的數量k、所述跳數m以及每一跳的鏈路標籤,生成所述n個檢測報文。所述網絡拓撲信息包括所述轉發路徑以及所述轉發路徑上每一跳的路由信息。
第三方面的另一種可能的實現方式中,所述網絡檢測設備包括:處理器和存儲器;所述存儲器,用於保存網絡拓撲信息,所述網絡拓撲信息包括所述網絡檢測設備到目的ip地址的轉發路徑以及所述轉發路徑上每一跳的路由信息;
所述處理器,用於根據所述目的ip地址和所述網絡拓撲信息生成n個檢測報文,每個檢測報文包括標籤棧、生存時間ttl、源ip地址、所述目的ip地址和埠組;所述埠組包括源埠號和目的埠號;所述標籤棧中包括m個鏈路標籤,所述ttl的值為m+1,所述源ip地址為所述網絡檢測設備的ip地址,其中,m為所述網絡檢測設備到待檢測網絡節點的跳數,m≥1,n≥k,k為待檢測網絡節點至所述待檢測ip地址的等價路徑的數量,k≥2,m、n和k為正整數;所述n個檢測報文的標籤棧相同,所述n個檢測報文的ttl相同,所述n個檢測報文的源ip地址相同,所述n個檢測報文的目的ip地址相同;所述n個檢測報文中任意兩個檢測報文的埠組互不相同;
所述處理器,還用於根據所述標籤棧棧頂的鏈路標籤發送所述n個檢測報文,並接收與所述n個檢測報文對應的n個通知消息;根據所述n個通知消息和預設比值範圍確定所述待檢測網絡節點的ecmp功能是否正確。
可選地,所述處理器具體用於記錄所述n個通知消息中不同源地址對應的通知消息的數量;判斷所述n個通知消息中不同源地址對應的通知消息的數量之間的比值是否滿足所述預設比值範圍,以確定所述待檢測網絡節點的ecmp功能是否正確。
可選地,所述n個通知消息中包括第一通知消息和第二通知消息;所述第一通知消息中包括第一反饋節點的ip地址;所述第二通知消息中包括第二反饋節點的ip地址;
所述處理器具體用於接收所述第一通知消息和第二通知消息,所述第一通 知消息用於通知所述網絡檢測設備:所述第一反饋節點收到所述待檢測網絡節點轉發的檢測報文,所述第一反饋節點為所述待檢測網絡節點在第一等價路徑上的下一跳節點,所述第一等價路徑為所述k等價路徑中的一條;所述第二通知消息用於通知所述網絡檢測設備:所述第二反饋節點收到所述待檢測網絡節點轉發的檢測報文,所述第二反饋節點為所述待檢測網絡節點在第二等價路徑上的下一跳節點,所述第二等價路徑為所述k等價路徑中的另一條。所述第一通知消息為所述第一反饋節點在所述ttl的值為0時發送;所述第二通知消息為所述第二反饋節點在所述ttl的值為0時發送。
可選地,所述處理器具體根據所述目的ip地址和所述網絡拓撲信息,確定所述轉發路徑以及所述待檢測網絡節點;根據所述網絡拓撲信息,確定所述網絡檢測設備到所述待檢測網絡節點的跳數(m)以及每一跳的鏈路標籤,並確定所述待檢測網絡節點至所述目的ip地址的等價路徑的數量(k);根據所述等價路徑的數量(k)、所述跳數(m)以及每一跳的鏈路標籤,生成所述n個檢測報文。
第四方面,提供一種網絡節點,所述網絡節點具有實現上述第二方面方法中網絡節點(包括待檢測網絡節點,中間網絡節點等)的功能,所述功能可以通過硬體實現,也可以通過硬體執行相應的軟體實現,所述硬體或軟體可以包括一個或多個與上述功能相對應的模塊。
一種可能的實現中,所述網絡節點包括接收模塊,報文處理模塊和轉發模塊;
所述接收模塊,用於接收接收第一檢測報文,所述第一檢測報文中包括標籤棧、ttl、源ip地址、目的ip地址和第一埠組;其中,所述標籤棧中包括m個鏈路標籤,所述ttl的值為m+1,m為大於等於1的正整數,所述源ip地址為網絡檢測設備的ip地址;
所述報文處理模塊,用於彈出所述標籤棧棧頂的鏈路標籤,將所述ttl 的值減去1;判斷所述標籤棧是否為空;當確定所述標籤棧為空時(此時,所述網絡節點為待檢測網絡節點),根據所述目的ip地址和所述網絡節點的轉發表確定所述網絡節點至所述目的ip地址存在k條等價路徑,則使用ecmp功能為所述第一檢測報文選擇所述k條等價路徑中的第一等價路徑;
所述轉發模塊,用於向所述報文處理模塊選擇出的所述第一等價路徑轉發所述第一檢測報文。
第一反饋節點接收所述第一檢測報文,將所述ttl的值減去1,所述第一反饋節點為所述網絡節點在所述第一等價路徑上的下一跳。所述第一反饋節點確定所述ttl的值為0時向所述網絡檢測設備發送第一通知消息,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
所述報文處理模塊,具體根據所述源ip地址、所述目的ip地址、所述第一埠組,進行哈希計算;並根據哈希計算的結果,確定所述第一等價路徑用於轉發所述第一檢測報文,其中,所述哈希計算的結果指向所述第一等價路徑。
所述轉發模塊,還用於當所述報文處理模塊確定所述標籤棧不為空時,根據所述標籤棧棧頂的鏈路標籤,轉發所述第一檢測報文。此時,所述網絡節點為中間網絡節點,對所述第一檢測報文繼續進行標籤轉發,直至發送給待檢測網絡節點。
所述接收模塊還用於接收第二檢測報文,所述第二檢測報文中包括所述標籤棧、所述ttl、所述源ip地址、所述目的ip地址和第二埠組。相應地,所述報文處理模塊,還用於對所述第二檢測報文進行如下處理:彈出所述標籤棧棧頂的鏈路標籤,將所述ttl的值減去1;判斷所述標籤棧是否為空;當確定所述標籤棧為空時(此時,所述網絡節點為待檢測網絡節點),根據所述目的ip地址和所述網絡節點的轉發表確定所述網絡節點至所述目的ip地址存在所述k條等價路徑,則使用ecmp功能為所述第二檢測報文選擇所述k條等價路徑中的第二等價路徑。所述轉發模塊,還用於向所述報文處理模塊選擇出的所述第二等價路徑轉發所述第二檢測報文。
第二反饋節點接收所述第二檢測報文,將所述ttl的值減去1,所述第二反饋節點為所述網絡節點在所述第二等價路徑上的下一跳。所述第二反饋節點確定所述ttl的值為0時向所述網絡檢測設備發送第二通知消息,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
另一種可能的實現中,所述網絡節點包括處理器和存儲器;進一步還包括通信接口;所述處理器,所述存儲器和所述通信接口之間可以通過總線相互連接;
所述存儲器,用於存儲所述網絡節點的轉發表;所述處理器,用於接收第一檢測報文,所述第一檢測報文中包括標籤棧、ttl、源ip地址、目的ip地址和第一埠組;彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;判斷所述標籤棧是否為空;當確定所述標籤棧為空時,根據所述目的ip地址和所述轉發表確定所述網絡節點至所述目的ip地址存在k條等價路徑,則使用ecmp功能,選擇所述k條等價路徑中的第一等價路徑轉發所述第一檢測報文。
第一反饋節點接收所述第一檢測報文,將所述ttl的值減去1;所述第一反饋節點為所述網絡節點在所述第一等價路徑上的下一跳;所述第一反饋節點確定所述ttl的值為0,並向所述網絡檢測設備發送第一通知消息,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
所述處理器,還用於當確定所述標籤棧不為空時,根據所述標籤棧棧頂的鏈路標籤,轉發所述檢測報文。此時,所述網絡節點為中間網絡節點,對所述檢測報文繼續進行標籤轉發,直至發送給待檢測網絡節點。
所述處理器,具體根據所述源ip地址、所述目的ip地址、所述第一埠組,進行哈希計算;並根據哈希計算的結果,確定所述第一等價路徑用於轉發所述第一檢測報文,其中,所述哈希計算的結果指向所述第一等價路徑。
所述處理器,還用於接收第二檢測報文,所述第二檢測報文中包括所述標籤棧、所述ttl、所述源ip地址、所述目的ip地址和第二埠組;並對所述 第二檢測報文進行如下處理:彈出所述標籤棧棧頂的鏈路標籤,將所述ttl的值減去1;判斷所述標籤棧是否為空;當確定所述標籤棧為空時,根據所述目的ip地址和所述網絡節點的轉發表確定存在k條等價路徑,則使用ecmp功能選擇所述k條等價路徑中的第二等價路徑轉發所述第二檢測報文。
第二反饋節點接收所述第二檢測報文,將所述ttl的值減去1,所述第二反饋節點為所述網絡節點在所述第二等價路徑上的下一跳。所述第二反饋節點確定所述ttl的值為0,則向所述網絡檢測設備發送第二通知消息,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
第五方面,提供了一種檢測ecmp功能的方法,包括:網絡檢測設備根據目的ip地址和網絡拓撲信息生成n個檢測報文,每個檢測報文包括標籤棧、生存時間ttl、源ip地址、所述目的ip地址和埠組;所述埠組包括源埠號和目的埠號,所述標籤棧中包括m個鏈路標籤,所述ttl的值大於等於m+2,所述源ip地址為所述網絡檢測設備的ip地址,其中,m為所述網絡檢測設備到待檢測網絡節點的跳數,m≥1,n≥k,k為所述待檢測網絡節點至所述目的ip地址的等價路徑的數量,k≥2,m、n和k為正整數;所述n個檢測報文的標籤棧相同,所述n個檢測報文的ttl相同,所述n個檢測報文的源ip地址相同,所述n個檢測報文的目的ip地址相同;所述n個檢測報文中任意兩個檢測報文的埠組互不相同;所述網絡檢測設備根據所述標籤棧棧頂的鏈路標籤發送所述n個檢測報文;所述網絡檢測設備接收與所述n個檢測報文對應的n個通知消息;所述網絡檢測設備根據所述n個通知消息和預設比值範圍確定所述待檢測網絡節點的ecmp功能是否正確。
這樣,當待檢測網絡節點至所述目的ip地址的等價路徑上的存在多個節點時,不限定ttl的值為m+1,也就是不限定必須待檢測網絡節點在各條等價路徑上的下一跳向網絡檢測設備發送通知消息。例如,可以設定ttl的值為m+2,使得所述待檢測網絡節點在各條等價路徑上的下一跳的下一跳因ttl 為0向網絡檢測設備發送通知消息。由於網絡檢測設備有網絡拓撲信息,因此可以在生成檢測報文的時候,設定特定的ttl來保證仍然由各條等價路徑上的節點反饋通知消息,這樣仍然可以根據來自不同等價路徑上反饋節點發送的通知消息,判斷待檢測網絡節點的ecmp功能是否正確。
可選地,所述n個通知消息中包括第一通知消息和第二通知消息;所述第一通知消息中包括第一反饋節點的ip地址;所述第二通知消息中包括第二反饋節點的ip地址;所述網絡檢測設備接收與所述n個檢測報文對應的n個通知消息,包括:
所述網絡檢測設備接收所述第一通知消息,所述第一通知消息用於通知所述網絡檢測設備:所述第一反饋節點收到檢測報文,所述第一反饋節點為所述待檢測網絡節點至所述目的ip地址的第一等價路徑上的節點;
所述網絡檢測設備接收第二通知消息,所述第二通知消息用於通知所述網絡檢測設備:所述第二反饋節點收到檢測報文,所述第二反饋節點為所述待檢測網絡節點至所述目的ip地址的第二等價路徑上的節點。
第六方面,提供一種網絡檢測設備,所述網絡檢測設備具有實現上述第五方面方法中網絡檢測設備的功能,所述功能可以通過檢測裝置實現,所述檢測裝置可以通過硬體實現,也可以通過硬體執行相應的軟體實現,所述硬體或軟體可以包括一個或多個與上述功能相對應的模塊。
第七方面,提供了一種檢測ecmp功能的方法,包括:網絡節點接收第一檢測報文,所述第一檢測報文中包括標籤棧、ttl、源ip地址、目的ip地址和第一埠組;所述標籤棧中包括m個鏈路標籤,所述ttl的值大於等於m+2,m為大於等於1的正整數,所述源ip地址為網絡檢測設備的ip地址;所述網絡節點彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;所述網絡節點確定所述標籤棧為空時,根據所述目的ip地址和所述網絡節點的轉發表確定所述網絡節點至所述目的ip地址存在k條等價路徑;所述網絡節點使用ecmp功能,選擇所述k條等價路徑中的第一等價路徑轉發所述第一 檢測報文。第一反饋節點接收所述第一檢測報文,將所述ttl的值減去1;所述第一反饋節點確定所述ttl的值為0時,向所述網絡檢測設備發送第一通知消息,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確,所述第一反饋節點為所述第一等價路徑上的節點。
這樣,當待檢測網絡節點至所述目的ip地址的等價路徑上的存在多個節點時,通過將ttl的值設定為大於等於m+2的正整數,使得各條等價路徑上除所述待檢測網絡節點的下一跳之外的節點因ttl為0向網絡檢測設備發送通知消息。例如,設定ttl的值為m+2,使得所述待檢測網絡節點在各條等價路徑上的下一跳的下一跳因ttl為0向網絡檢測設備發送通知消息。由於網絡檢測設備有網絡拓撲信息,因此在生成檢測報文的時候,可以根據等價路徑上節點的數量,設定特定的ttl來保證由各條等價路徑上除所述待檢測網絡節點的下一跳之外的節點反饋通知消息,這樣仍然可以根據來自不同等價路徑上反饋節點發送的通知消息,判斷待檢測網絡節點的ecmp功能是否正確。
可選地,所述方法還包括:所述網絡節點接收第二檢測報文,所述第二檢測報文中包括所述標籤棧、所述ttl、所述源ip地址、所述目的ip地址和第二埠組;所述網絡節點彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;所述網絡節點確定所述標籤棧為空時,根據所述目的ip地址和所述網絡節點的轉發表確定存在所述k條等價路徑;所述網絡節點使用ecmp功能,選擇所述k條等價路徑中的第二等價路徑轉發所述第二檢測報文。第二反饋節點接收所述第二檢測報文,將所述ttl的值減去1;所述第二反饋節點確定所述ttl的值為0時,向所述網絡檢測設備發送第二通知消息,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確,所述第二反饋節點為所述第二等價路徑上的節點,所述第二反饋節點與所述第一反饋節點互不相同。
第八方面,提供一種網絡節點,所述網絡節點具有實現上述第七方面方法中網絡節點(包括待檢測網絡節點,中間網絡節點等)的功能,的功能,所述 功能可以通過硬體實現,也可以通過硬體執行相應的軟體實現,所述硬體或軟體可以包括一個或多個與上述功能相對應的模塊。
第九方面,提供了一種計算機存儲介質,該計算機存儲介質中存儲有程序代碼,該程序代碼中包括實現上述第一方面或第五方面的方法的指令。
第十方面,提供了一種計算機存儲介質,該計算機存儲介質中存儲有程序代碼,該程序代碼中包括實現上述第二方面或第七方面的方法的指令。
第十一方面,提供一種檢測ecmp功能的系統,包括網絡檢測設備,待檢測網絡節點,第一反饋節點和第二反饋節點;
所述網絡檢測設備,用於根據目的ip地址和網絡拓撲信息生成n個包括標籤棧、ttl、源ip地址、所述目的ip地址和埠組的檢測報文;所述埠組包括源埠號和目的埠號;所述標籤棧中包括m個鏈路標籤,所述ttl的值為大於等於m+1,m為所述網絡檢測設備到所述待檢測網絡節點的跳數,m≥1,n≥k,k為所述待檢測網絡節點至所述目的ip地址的等價路徑的數量,k≥2,n、m、k為正整數;所述n個檢測報文的標籤棧相同,ttl相同,源ip地址相同,目的ip地址相同;所述n個檢測報文中任意兩個檢測報文的埠組互不相同;根據所述標籤棧棧頂的鏈路標籤發送所述n個檢測報文;
所述待檢測網絡節點,用於接收所述n個檢測報文中的第一檢測報文,所述第一檢測報文中包括所述標籤棧、所述ttl、所述源ip地址、所述目的ip地址和第一埠組,彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;當確定所述標籤棧為空時,根據所述目的ip地址和所述待檢測網絡節點的轉發表確定所述待檢測網絡節點至所述目的ip地址存在k條等價路徑;使用ecmp功能,選擇所述k條等價路徑中的第一等價路徑轉發所述第一檢測報文;
第一反饋節點,用於接收所述第一檢測報文,將所述ttl的值減去1;在確定所述ttl的值為0時,向所述網絡檢測設備發送通知消息;所述第一反 饋節點為所述第一等價路徑上的節點;當所述ttl的值為m+1時,所述第一反饋節點為所述網絡節點在所述第一等價路徑上的下一跳;當所述ttl的值為m+2時,所述第一反饋節點為所述網絡節點在所述第一等價路徑上的下一跳的下一跳;
所述待檢測網絡節點,還用於接收所述n個檢測報文中的第二檢測報文,所述第二檢測報文中包括所述標籤棧、所述ttl、所述源ip地址、所述目的ip地址和第二埠組,彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;當確定所述標籤棧為空時,根據所述目的ip地址和所述待檢測網絡節點的轉發表確定所述待檢測網絡節點至所述目的ip地址存在k條等價路徑;使用ecmp功能,選擇所述k條等價路徑中的第二等價路徑轉發所述第二檢測報文;
第二反饋節點,用於接收所述第二檢測報文,將所述ttl的值減去1;在確定所述ttl的值為0時,向所述網絡檢測設備發送通知消息;所述第二反饋節點為所述第二等價路徑上的節點;當所述ttl的值為m+1時,所述第二反饋節點為所述待檢測網絡節點在所述第二等價路徑上的下一跳;當所述ttl的值為m+2時,所述第二反饋節點為所述待檢測網絡節點在所述第二等價路徑上的下一跳的下一跳;
所述網絡檢測設備,還用於接收與所述n個檢測報文對應的n個通知消息,n個通知消息中包括所述待檢測網絡節點在不同等價路徑上的節點例如,第一反饋節點和第二反饋節點,的ip地址;根據所述n個通知消息和預設比值範圍確定所述待檢測網絡節點的ecmp功能是否正確。
可選地,所述檢測轉發表的系統中還包括若干中間網絡節點。在所述待檢測網絡節點接收所述n個檢測報文之前,中間網絡節點接收所述n個檢測報文,彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;所述中間網絡節點確定所述標籤棧不為空,並根據所述標籤棧棧頂的鏈路標籤,繼續轉發所述n個檢測報文,直至所述待檢測網絡節點收到所述n個檢測報文。這樣, 通過檢測報文中的特定標籤棧和特定ttl值,可以控制中間網絡節點僅根據鏈路標籤對所述檢測報文進行標籤轉發,只有在待檢測網絡節點,因標籤棧為空,才會根據轉發表使用ecmp功能選擇等價路徑轉發所述n個檢測報文。
上述各個方面中,n可以為k的倍數。n的取值越大,檢測精度越高。所述通知消息可以為網絡控制報文協議(internetcontrolmessageprotocol,縮寫icmp)報文。
本申請提供的技術方案,當需要檢測待檢測網絡節點的ecmp功能是否正確時,網絡檢測設備生成包括相同標籤棧和相同ttl值的n個檢測報文,指定檢測報文的標籤轉發路徑和跳數,並利用ttl逐跳減1、ttl的值為0時會觸發待檢測網絡節點的下一跳,即所述反饋節點,向網絡檢測設備發送通知消息。這樣,根據收到的與n個檢測報文對應的n個通知消息,網絡檢測設備可以知道各條等價路徑上轉發的檢測報文的數量,從而可以快速判斷確定所述待檢測網絡節點的ecmp功能是否有問題,提高了故障定位的效率。
附圖說明
圖1為本申請實施例提供的檢測ecmp功能的系統的結構示意圖;
圖2為本申請實施例提供的一種檢測ecmp功能的方法流程圖;
圖3為本申請實施例提供的檢測ecmp功能的信息交互示意圖;
圖4為本申請實施例提供的一種檢測ecmp功能的檢測裝置的結構示意圖;
圖5為本申請實施例提供的另一種檢測ecmp功能的檢測裝置的結構示意圖;
圖6為本申請實施例提供的網絡檢測設備的結構示意圖;
圖7為本申請實施例提供的一種網絡節點結構示意圖;
圖8為本申請實施例提供的另一種網絡節點結構示意圖。
具體實施方式
本申請提供的技術方案中,網絡檢測設備生成包括生存時間(timetolive,縮寫ttl)和鏈路標籤的n個檢測報文,通過鏈路標籤指定傳輸每個檢測報文的網絡路徑,通過ttl指定該檢測報文經過的跳數,用於對待檢測網絡節點的ecmp功能進行檢測。具體地,網絡檢測設備確定所述網絡檢測設備到所述待檢測網絡節點的跳數m以及每一跳的鏈路標籤,生成n個檢測報文,n大於等於所述待檢測網絡節點至目的ip地址的等價路徑的數量k;每個檢測報文中包括標籤棧、ttl、源ip地址,目的ip地址和埠組;標籤棧包括m個鏈路標籤,依次為所述網絡檢測設備到所述待檢測網絡節點的m跳的鏈路標籤,ttl的值為m的基礎上至少加1,也即,ttl的值大於等於m+1。n個檢測報文中的標籤棧、ttl、源ip地址和目的ip地址均相同;n個檢測報文的埠組互不相同。所述n個檢測報文從所述網絡檢測設備轉發至所述待檢測網絡節點的過程中,根據標籤棧中的鏈路標籤進行標籤轉發,鏈路標籤逐跳彈出,ttl值逐跳減1,到達所述待檢測網絡節點後標籤棧為空,因此所述待檢測網絡節點通過轉發表和ecmp功能,將所述n個檢測報文轉發到不同等價路徑上,觸發不同等價路徑上的反饋節點因ttl的值為0向所述網絡檢測設備發送通知消息,具體地,該通知消息可以是網絡控制報文協議(internetcontrolmessageprotocol,縮寫icmp)報文。網絡檢測設備根據不同等價路徑上的反饋節點發送的通知消息,判斷待檢測網絡節點的ecmp功能是否正確。可以理解,當網絡檢測設備收到的與n個檢測報文對應的n個通知消息,按照預設比值範圍分布在待檢測網絡節點的多條等價路徑上時,可以確定該待檢測網絡節點的ecmp功能正確,否則錯誤。
icmp用於在主機與路由器之間傳遞控制信息,包括報告錯誤、狀態信息等。icmp報文有不同的類型,例如icmp差錯報告報文主要用於向數據通信中的源端報告錯誤。icmp差錯報告報文的數據區通常包括出錯報文的首部,還可以包括該出錯報文的前64位數據。當數據報文中ttl為0時,路由器會 丟棄該數據報文,並發送類型為超時(類型值為11,代碼為0)的icmp差錯報告報文給該數據報文的發送者(源端)。本申請實施例中,通知消息可以為icmp報文,該icmp報文就是指類型值為11、代碼為0的icmp差錯報告報文。
舉例來說,網絡節點有2條等價路徑,假定預設比值範圍為1:1;網絡檢測設備發送12個檢測報文,收到12個icmp報文;如果網絡檢測設備收到的12個icmp報文中,6個icmp報文的源地址為網絡節點的一條等價路徑上的節點1,另外6個icmp報文的源地址為網絡節點的另一條等價路徑上的節點2,則很顯然該12個icmp報文在該網絡節點的2條等價路徑之間的分布為1:1,滿足預設比值範圍,則確定網絡節點的ecmp功能正確。如果網絡檢測設備收到的12個icmp報文中,8個icmp報文的源地址為網絡節點的一條等價路徑上的節點1,另外4個icmp報文的源地址為網絡節點的另一條等價路徑上的節點2,則很顯然該12個icmp報文在該網絡節點的2條等價路徑之間的分布為2:1,不滿足預設比值範圍,則確定網絡節點的ecmp功能不正確。
再舉例來說,網絡節點有2條等價路徑,假定預設比值範圍為(1:1~1.2:1);網絡檢測設備發送22個檢測報文,收到22個icmp報文;如果網絡檢測設備收到的22個icmp報文中,12個icmp報文的源地址為網絡節點的一條等價路徑上的節點1,另外10個icmp報文的源地址為網絡節點的另一條等價路徑上的節點2,則很顯然該22個icmp報文在該網絡節點的2條等價路徑之間分布為1.2:1,滿足預設比值範圍,則確定網絡節點的ecmp功能正確。如果網絡檢測設備收到的22個icmp報文中,13個icmp報文的源地址為網絡節點的一條等價路徑上的節點1,另外9個icmp報文的源地址為網絡節點的另一條等價路徑上的節點2,則很顯然該22個icmp報文在該網絡節點的2條等價路徑之間的分布為13:9(約1.44:1),不滿足預設比值範圍,則確定網絡節點的ecmp功能不正確。
實際網絡場景中,待檢測網絡節點可能存在不同數量的等價路徑,例如, 3條等價路徑,4條等價路徑等。本申請具體實施方式中以網絡節點有2條等價路徑為例說明,不作為對本申請技術方案的限定。
本申請實施例提供的檢測ecmp功能的方法可以根據需要隨時使用,也可以在發往待檢測ip地址的數據報文出現丟包、延時或網絡擁塞,而網絡正常,換言之,沒有其他故障(例如,鏈路故障等)的情況下,用於檢測網絡路徑上的待檢測網絡節點的ecmp功能是否正確。
下面結合附圖和具體實施方式對本申請的技術方案作詳細的說明。
圖1為本申請實施例提供的一種檢測ecmp功能的系統的結構示意圖,該系統100中包括網絡檢測設備110和網絡節點r1,網絡節點r1至目的ip地址包括至少兩條等價路徑,也即網絡節點r1為等價路逕入口節點。圖1中以兩條等價路徑120(r1-r2-r4)和120』(r1-r3-r4)為例,其中網絡節點r1為等價路逕入口節點,網絡節點r4為等價路徑出口節點,網絡節點r2為等價路徑120上的等價路徑中間節點,網絡節點r3為等價路徑120』上的等價路徑中間節點。所述系統100中還可以包括其他網絡節點,例如圖1中所示的r0和r5。圖1中的各個網絡節點(r0,r1,r2,r3,r4和r5)具體可以為路由器,交換機等設備。
圖1所示的等價路徑120和120』均只存在一個等價路徑中間節點,這種情況下,網絡檢測設備生成的n個檢測報文中,ttl的值只能設置為m+1。當然,在實際網絡環境中,可能等價路徑中間節點的數量大於1(圖1中未示出)。假設等價路徑120和120』上均存在2個等價路徑中間節點,則網絡檢測設備生成的n個檢測報文中,ttl的值可以均設置為m+1,也可以均設置為m+2。可以理解,如果存在3個等價路徑中間節點,則網絡檢測設備生成的n個檢測報文中,ttl的值可以均設置為m+1,也可以均設置為m+2,也可以均設置為m+3,以此類推。本申請實施例中,將等價路逕入口節點稱為待檢測網絡節點,網絡檢測設備到待檢測網絡節點之間的節點稱為中間網絡節點,將等價路徑上向所述網絡檢測設備發送通知消息的等價路徑中間節點稱為反饋節點。
本申請實施例中,所述待檢測網絡節點至目的ip地址的每條等價路徑上至少包括一個等價路徑中間節點。
圖2為本申請實施例提供的一種檢測等價多路徑實現的方法的流程示意圖,可以檢測網絡節點的等價多路徑實現是否正確,所述方法包括:
201、網絡檢測設備根據網絡拓撲信息生成n個檢測報文,所述n個檢測報文中每個檢測報文包括標籤棧、ttl、源ip地址、目的ip地址和埠組;
所述標籤棧中包括m個鏈路標籤,所述ttl的值大於等於m+1,優選的,所述ttl的值為m+1;其中,m為所述網絡檢測設備到待檢測網絡節點的跳數,m≥1,n≥k,k為所述待檢測網絡節點的等價路徑的數量,k≥2,m、n和k為正整數。所述檢測報文的源ip地址為所述網絡檢測設備的ip地址,例如1.1.1.1。所述目的ip地址通常為主機的ip地址,例如192.168.1.1。
無論所述k條等價路徑中每條等價路徑僅包括一個等價路徑中間節點,還是包括多個等價路徑中間節點,所述ttl的值均可設置為m+1,這樣更簡單高效。當然,如果所述k條等價路徑中每條等價路徑均包括兩個及以上等價路徑中間節點時,所述ttl的值也可以大於等於m+2,這種情況下,檢測報文會被多轉發一跳或幾跳,反饋節點不是待檢測網絡節點在各條等價路徑上的下一跳,但同樣可以反映檢測報文被發送到哪條等價路徑上了,也能夠解決技術問題,實現本發明目的。
所述n個檢測報文的標籤棧相同,所述n個檢測報文的ttl相同,所述n個檢測報文的源ip地址相同,所述n個檢測報文的目的ip地址相同。
所述n個檢測報文中任意兩個檢測報文的埠組互不相同;埠組包括源埠號和目的埠號,源埠號為所述網絡檢測設備的通信埠的埠號;目的埠號為所述待檢測ip地址對應的節點的通信埠的埠號。互不相同的埠組可以是源埠號相同,目的埠號不同;例如,6個檢測報文,埠組分別為(a,b1),(a,b2),(a,b3),(a,b4),(a,b5),(a,b6)。互不相同的埠組也可以是源埠號不同,目的埠號相同;例如,6個檢測報 文,埠組分別為(a1,b),(a2,b),(a3,b),(a4,b),(a5,b),(a6,b)。互不相同的埠組也可以是源埠號不同,目的埠號也不同;例如,6個檢測報文,埠組分別為(a1,b1),(a2,b2),(a3,b3),(a4,b4),(a5,b5),(a6,b6)。當然,互不相同的埠組也可以是部分源埠號不同,部分目的埠號不同,例如,6個檢測報文,埠組分別為(a1,b1),(a2,b1),(a3,b1),(a2,b2),(a3,b2),(a3,b3)。具體實現中,只要保證任意兩個檢測報文的埠組之間至少有一個埠號不同即可。
具體地,所述網絡檢測設備根據所述目的ip地址和所述網絡拓撲信息,確定所述網絡檢測設備到所述目的ip地址的轉發路徑以及所述轉發路徑上的所述待檢測網絡節點;所述網絡檢測設備根據網絡拓撲信息,確定所述網絡檢測設備到待檢測網絡節點的跳數(m)以及每一跳的鏈路標籤,並確定所述待檢測網絡節點至所述目的ip地址的等價路徑的數量(k);然後所述網絡檢測設備根據所述等價路徑的數量(k)、所述跳數(m)以及每一跳的鏈路標籤,生成所述n個檢測報文,所述n個檢測報文包括相同的:標籤棧、ttl、源ip地址和目的ip地址,所述n個檢測報文還包括互不相同的埠組(源埠號,目的埠號)。
所述網絡拓撲信息包括:所述網絡檢測設備到所述目的ip地址的轉發路徑以及所述轉發路徑上每一跳的路由信息;具體來說,包括所述網絡檢測設備至所述待檢測網絡節點的每一跳的鏈路標籤,以及所述待檢測網絡節點至所述目的ip地址的k條等價路徑。鏈路標籤指定了報文的單跳轉發路徑。所述k條等價路徑,是所述轉發路徑中的一段。
本申請實施例中,所述網絡檢測設備可以先通過網絡拓撲管理裝置獲取網絡拓撲信息。所述網絡拓撲管理裝置可以是軟體定義網絡(software-definednetworking,縮寫sdn)控制器。具體實現中,所述網絡檢測設備和所述網絡拓撲管理裝置可以在同一個物理設備中實現,也可以是在不同的物理設備中實現。
以圖1所示系統為例,網絡檢測設備110要確定網絡中到192.168.1.1這個待檢測ip地址的轉發路徑中網絡節點r1的ecmp功能是否正確。所述網絡檢測設備110根據網絡拓撲信息,確定網絡節點r1到所述待檢測ip地址存在2條等價路徑,並確定所述網絡檢測設備110到網絡節點r1的跳數為2(即,所述網絡檢測設備110到r0,以及r0到r1共兩跳),鏈路標籤分別為:8801和8802,所述網絡檢測設備110生成n(≥2)個檢測報文,每個檢測報文的標籤棧中均包括2個鏈路標籤:8801和8802;每個檢測報文的ttl的值均為3;每個檢測報文的源ip地址均為所述網絡檢測設備的ip地址(例如,1.1.1.1),每個檢測報文的目的ip地址均為所述待檢測ip地址(例如,192.168.1.1)。
202、所述網絡檢測設備根據所述標籤棧棧頂的鏈路標籤發送所述n個檢測報文;
標籤棧的操作與通常的堆棧「後進先出」的操作一樣。標籤入棧是指向報文加入一個標籤,使標籤棧的深度加1;標籤出棧是指從報文中去掉一個標籤,換言之,彈出標籤,使標籤棧的深度減1。報文中,標籤自棧底至棧頂按照自內往外的順序封裝。在報文轉發過程中,決定如何轉發報文的標籤始終是標籤棧棧頂的標籤,也即報文中最外層的標籤。
具體地,所述網絡檢測設備可以通過(multiprotocollabelswitching,縮寫mpls)定義的標籤轉發方式實現本申請的檢測轉發表的方法,檢測報文可以是mpls報文,檢測報文中的標籤棧為mpls標籤棧。當然,也可以採用其他支持段路由(segmentrouting)中鏈路標籤轉發的實現方式,本申請對此不做限制。
繼續上面例子,所述網絡檢測設備110生成的所述n個檢測報文中,每個檢測報文的標籤棧中自棧底至棧頂(報文自內而外)的鏈路標籤依次為8802,8801;ttl的值為3。所述網絡檢測設備110根據所述標籤棧棧頂的鏈路標籤8801依次發送各個檢測報文至網絡節點r0。
對於網絡檢測設備發送的n個檢測報文,重複執行n次如下步驟203~207 的操作:
203、網絡節點接收所述n個檢測報文中的一個檢測報文,將所述檢測報文中的標籤棧棧頂的鏈路標籤彈出,將所述檢測報文中的ttl的值減去1;
網絡節點每收到一個檢測報文時,均是將該檢測報文中標籤棧棧頂的鏈路標籤彈出並將ttl的值減去1。
204、所述網絡節點判斷所述檢測報文中標籤棧是否為空;
所述網絡節點在彈出所述檢測報文中標籤棧棧頂的鏈路標籤之後,需要判斷所述檢測報文中的標籤棧是否為空,以確定對所述檢測報文繼續進行標籤轉發還是根據轉發表進行ip路由轉發。當所述網絡節點確定所述檢測報文中的標籤棧不為空時,即所述網絡節點為中間網絡節點,則繼續步驟205;當所述網絡節點確定所述檢測報文中的標籤棧為空時,即所述網絡節點為待檢測網絡節點,則繼續步驟206;
205、當所述網絡節點確定所述標籤棧不為空時,所述網絡節點根據所述標籤棧棧頂的鏈路標籤,轉發所述檢測報文。
例如圖1中網絡節點r0為中間網絡節點,收到檢測報文處理後,標籤棧不為空,繼續跟進標籤棧棧頂的鏈路標籤轉發檢測報文。
206、當所述網絡節點確定所述標籤棧為空時,所述網絡節點根據所述目的ip地址和所述網絡節點的轉發表,確定所述網絡節點至所述待檢測ip地址存在k條等價路徑,所述網絡節點使用ecmp功能選擇一條等價路徑轉發所述檢測報文;
當所述網絡節點確定所述標籤棧為空時,所述網絡節點即為待檢測網絡節點,例如圖1中的網絡節點r1,可以理解的是,此時所述ttl的值為1。所述網絡節點根據所述目的ip地址和所述網絡節點的轉發表,並使用自己的ecmp功能,將所述檢測報文轉發到一條等價路徑上,所述網絡節點在該條等價路徑上的下一跳,即為反饋節點,收到所述檢測報文後,將所述ttl的值減去1,這樣ttl的值為0觸發所述反饋節點向所述網絡檢測設備發送通知消 息。
所述網絡節點使用ecmp功能,選擇一條等價路徑轉發所述檢測報文,具體包括:所述網絡節點根據所述源ip地址、所述目的ip地址和所述檢測報文的埠組進行哈希計算,得到哈希計算的結果,該哈希計算的結果指向一條等價路徑;根據該哈希計算的結果,確定該條等價路徑用於轉發所述檢測報文。
哈希計算是利用哈希函數(hashfunction),也稱散列函數,將任意長度的數據映射(map)為固定長度的數據。哈希計算的結果,也就是哈希函數返回的值,通常稱為哈希值,哈希值通常是唯一的。
所述網絡節點提供的ecmp功能包括:根據四元組,即,源ip地址、目的ip地址和埠組(源埠號,目的埠號),進行哈希計算,根據哈希計算的結果確定等價路徑。
所述網絡節點可以根據哈希計算的結果,採用如下方式一或方式二,確定等價路徑;當然還有其他實現方式,本申請對此不做限定。
方式一:用所述等價路徑的數量k對所述哈希計算的結果做取模運算,取模運算的結果標識一條等價路徑;
方式二:根據所述哈希計算的結果查詢哈希結果與等價路徑的對應關係,確定與所述哈希計算的結果對應的等價路徑;所述網絡節點上可以預先配置所述哈希結果與等價路徑的對應關係。
207、反饋節點接收所述檢測報文,將所述ttl的值減去1,所述反饋節點確定所述ttl的值為0並向網絡檢測設備發送通知消息;
反饋節點收到所述檢測報文之後,將所述ttl的值減去1,所述反饋節點確定所述ttl的值為0時向所述網絡檢測設備發送通知消息,例如icmp報文,所述通知消息的源ip地址為所述反饋節點的ip地址。反饋節點為等價路徑上的一個等價路徑中間節點。
這樣,所述網絡檢測設備收到所述通知消息之後,根據所述通知消息的源ip地址就可以知道所述檢測報文走的是哪條等價路徑了。
如果所述網絡節點的ecmp功能正確,所述n個檢測報文會被均勻分配給所述k條等價路徑轉發,即所述k條等價路徑之間負載均衡;而如果所述網絡節點的ecmp功能不正確,可能導致所述k條等價路徑中的某(些)條負載過重,即大多數甚至全部的檢測報文都通過所述k條等價路徑中的某(些)條等價路徑轉發。
208、所述網絡檢測設備接收與所述n個檢測報文對應的n個通知消息,根據所述n個通知消息和預設比值範圍確定所述網絡節點的ecmp功能是否正確。具體地,所述網絡檢測設備統計所述n個通知消息中不同源地址的通知消息的數量;例如,統計源地址為第一源ip地址的icmp報文數量,源地址為第二源ip地址的icmp報文數量;可選地,如果存在兩條以上的等價路徑,還有源地址為第三源ip地址的icmp報文數量。然後,所述網絡檢測設備計算不同源地址的通知消息的數量之間的比值,並判斷該比值是否滿足預設比值範圍;如果滿足預設比值範圍,換句話說,所述n個檢測報文均勻分布在所述k條等價路徑上轉發,則可以確定所述網絡節點的ecmp功能正確;如果不滿足預設比值範圍,則可以確定所述網絡節點的ecmp功能不正確。
由於每個icmp報文會攜帶檢測報文的首部,因此網絡檢測設備可以確定與n個檢測報文對應的n個icmp報文。
當然,如果出現收到的通知消息均來自一個反饋節點,即源地址相同,很顯然所述待檢測網絡節點的ecmp功能不正確,可能是ecmp功能錯誤,也可能所述待檢測網絡節點沒有實現該ecmp功能。
所述預設比值範圍可以根據如下任意一個或多個參數的組合,結合具體應用場景來設定,對此本申請不做具體限定:
網絡配置參數,例如,等價路徑之間的預配置負載比值,例如1:1,2:3等;
檢測精度要求,例如,高、中、低等;一般檢測精度要求越高預設比值範圍的跨度越小;
用戶需求,例如負載、帶寬、時延等。
舉例來說,可以基於預配置負載比值,例如1:1,當檢測精度要求為高時,可以設定預設比值範圍為1:1~1.1:1;當檢測精度為低時,可以設定預設比值範圍為1:1~3:1
n可以取值為等價路徑的數量k的倍數;例如,等價路徑數量為3,n可以取值為36,54,96等。
n也可以根據預設比值範圍的精度來確定取值。舉例來說,如果預設比值範圍為1:1~3:1(或者1:1~1:3),即精度要求不高,則n可以取值較小,例如48,72等;而如果預設比值範圍為1:1~1.2:1(或者1:1~1:1.2),即精度要求較高,則n取值較小可能無法準確檢測網絡節點的ecmp功能,此時建議n取值大一些,例如220,500等。
總的來說,為了保證檢測結果的準確性,所述網絡檢測設備可以發送儘量多的檢測報文,即,n取值較大,例如200,500,1000等。
本申請提供的技術方案,網絡檢測設備根據網絡拓撲信息發送多個檢測報文檢測網絡節點的ecmp功能是否正常,檢測報文經過標籤轉發後,由該網絡節點通過ecmp功能進行ip路由轉發,轉發到不同等價路徑上,不同等價路徑上的反饋節點因檢測報文中ttl為0向網絡檢測設備反饋icmp報文,然後網絡檢測設備可以統計收到的不同源ip地址的icmp報文數量,從而可以判斷網絡節點的ecmp功能是否正確。如果收到的不同源ip地址的icmp報文數量之間比值滿足預設比值範圍,則可以確定該網絡節點的ecmp功能正確;否則,可以確定該網絡節點的ecmp功能不正確。
具體地,結合圖1所示的系統,本申請實施例提供了檢測網絡節點的ecmp功能的信息交互流程圖,用於網絡檢測設備110對網絡節點r1的ecmp功能進行檢測。參見圖3所示的檢測ecmp功能的信息交互示意圖,檢測過程包括:
301、網絡檢測設備110根據目的ip地址網絡拓撲信息生成n個檢測報文,所述n個檢測報文中每個檢測報文包括標籤棧,ttl,源ip地址,所述目的 ip地址和埠組;所述n個檢測報文的標籤棧相同、ttl相同、源ip地址相同、目的ip地址相同,埠組互不相同的;
具體地,所述網絡檢測設備110根據所述目的ip地址和所述網絡拓撲信息,確定所述網絡檢測設備到所述目的ip地址的轉發路徑以及所述轉發路徑上的所述待檢測網絡節點;所述網絡檢測設備110根據網絡拓撲信息,確定所述網絡檢測設備110到網絡節點r1的跳數為2(即,所述網絡檢測設備110到網絡節點r0,以及網絡節點r0到網絡節點r1共兩跳),鏈路標籤分別為:8801和8802。所述網絡檢測設備110生成n個檢測報文,所述n個檢測報文包括相同的標籤棧、相同的ttl、相同的源ip地址和相同的目的ip地址,以及互不相同的埠組。如圖3所示,標籤棧中均包括2個鏈路標籤,自棧底至棧頂(報文自內而外)依次為第二鏈路標籤8802,第一鏈路標籤8801;ttl的值均為3;源ip地址均為所述網絡檢測設備110的ip地址,例如1.1.1.1;各個檢測報文之間的埠組,即源埠號(sport)和目的埠號(dport),互不相同。本申請實施例中,互不相同的埠組以目的埠號相同,源埠號互不相同為例;例如,圖3所示dport=b,sport=a1,a2,…。
接下來,網絡檢測設備會根據所述標籤棧棧頂的第一鏈路標籤(8801)發送所述n個檢測報文。各個網絡節點會收到所述n個檢測報文,並對所述n個檢測報文一一進行處理。如下步驟302~307和302』~307』是對所述n個檢測報文中示例的任意兩個檢測報文的處理過程。
302、所述網絡檢測設備110根據所述標籤棧棧頂的第一鏈路標籤(8801)發送第一檢測報文至網絡節點r0;
所述第一檢測報文為所述網絡檢測設備110發送的n個檢測報文中的一個,所述第一檢測報文包括所述標籤棧,所述ttl,所述源ip地址和所述目的ip地址;所述第一檢測報文還包括第一埠組,例如圖3所示的sport=a1,dport=b;
303、所述網絡節點r0接收所述第一檢測報文,彈出所述標籤棧棧頂的第 一鏈路標籤(8801),並將所述ttl的值減去1;
所述第一檢測報文經所述網絡節點r0處理後,所述標籤棧中包括1個鏈路標籤,即第二鏈路標籤8802;所述ttl的值為2。此時,所述標籤棧棧頂的標籤即為該第二鏈路標籤8802。
然後所述網絡節點r0需要判斷所述標籤棧是否為空,以確定對所述第一檢測報文繼續進行標籤轉發還是根據轉發表進行ip路由轉發。
304、所述網絡節點r0確定所述標籤棧不為空,並根據所述標籤棧棧頂的第二鏈路標籤(8802)轉發所述第一檢測報文至網絡節點r1;
所述網絡節點r0為中間網絡節點。
305、所述網絡節點r1接收所述第一檢測報文,彈出所述標籤棧棧頂的第二鏈路標籤(8802),並將所述ttl的值減去1;
然後所述網絡節點r1需要判斷所述標籤棧是否為空,以確定對所述第一檢測報文繼續進行標籤轉發還是根據轉發表進行ip路由轉發。
參見圖3,所述第一檢測報文經所述網絡節點r1處理後,所述ttl的值為1,所述標籤棧為空(其中沒有鏈路標籤了),所述網絡節點r1為待檢測網絡節點,需要根據轉發表對所述第一檢測報文進行ip路由轉發。
306、所述網絡節點r1確定所述標籤棧為空,並根據所述目的ip地址和所述網絡節點r1的轉發表,確定所述網絡節點r1存在2條等價路徑;所述網絡節點r1使用自己的ecmp功能,選擇等價路徑120轉發所述第一檢測報文;
具體地,所述網絡節點r1根據所述目的ip地址查詢所述網絡節點r1的轉發表,發現存在2條到達所述目的ip地址的轉發條目,即,存在2條到所述目的ip地址的等價路徑。所述網絡節點r1需要通過ecmp功能,確定用於轉發所述第一檢測報文的等價路徑。
所述網絡節點r1根據所述第一檢測報文中的四元組:所述源ip地址、所述目的ip地址和第一埠組,通過ecmp功能選擇等價路徑120轉發所述第 一檢測報文。具體地,所述網絡節點r1對所述第一檢測報文中的四元組進行哈希計算,得到哈希計算的第一結果(第一哈希值),該第一結果指向等價路徑120;根據該第一結果,例如用等價路徑的數量k對該第一結果進行取模運算,確定等價路徑120轉發所述第一檢測報文。
307、所述網絡節點r2接收所述第一檢測報文,將所述ttl的值減去1,所述網絡節點r2確定所述ttl的值為0,並向所述網絡檢測設備110發送第一通知消息;
所述網絡節點r2為等價路徑中間節點,是所述網絡節點r1(即待檢測網絡節點)在等價路徑120上的下一跳。
所述網絡節點r2確定所述ttl的值為0時生成第一通知消息,發送給所述網絡檢測設備110;由於所述第一檢測報文的源ip地址為所述網絡檢測設備的ip地址,因此當所述ttl的值為0時,所述網絡節點r2知道需要向那個設備發送通知消息。具體地,所述網絡節點r2根據所述第一檢測報文,生成所述第一通知消息。例如圖3所示,所述第一通知消息為第一icmp報文,所述第一icmp報文中包括所述網絡節點r2的ip地址,所述第一icmp報文中還包括所述第一檢測報文的首部。
本申請實施例中,將網絡節點r2發送的通知消息,即源地址為網絡節點r2的ip地址的通知消息,均稱為第一通知消息。可選地,網絡節點r2對應多個不同的檢測報文向網絡檢測設備110發送了多個第一通知消息,每個第一通知消息中攜帶不同的埠組。
302』、所述網絡檢測設備110根據所述標籤棧棧頂的第一鏈路標籤(8801)發送第二檢測報文至網絡節點r0;
303』、所述網絡節點r0接收所述第二檢測報文,彈出所述標籤棧棧頂的第一鏈路標籤(8801),並將所述ttl的值減去1;
所述第二檢測報文也是所述網絡檢測設備110發送的n個檢測報文中的一個,所述第二檢測報文也包括所述標籤棧,所述ttl,所述源ip地址和所述 目的ip地址;所述第二檢測報文還包括第二埠組,例如圖3所示的sport=a2,dport=b;
所述第二檢測報文經所述網絡節點r0處理後,所述標籤棧中包括1個鏈路標籤,即第二鏈路標籤8802;所述ttl的值為2。此時,所述標籤棧棧頂的標籤即為該第二鏈路標籤8802。
然後所述網絡節點r0需要判斷所述標籤棧是否為空,以確定對所述第二檢測報文繼續進行標籤轉發還是根據轉發表進行ip路由轉發。
304』、所述網絡節點r0確定所述標籤棧不為空,並根據所述標籤棧棧頂的第二鏈路標籤(8802)發送所述第二檢測報文至網絡節點r1;
305』、所述網絡節點r1接收所述第二檢測報文,彈出所述標籤棧棧頂的第二鏈路標籤(8802),並將所述ttl的值減去1;
然後所述網絡節點r1需要判斷所述標籤棧是否為空,以確定對所述第二檢測報文繼續進行標籤轉發還是根據轉發表進行ip路由轉發。
參見圖3,所述第二檢測報文經所述網絡節點r1處理後,所述ttl的值為1,所述標籤棧為空(其中沒有鏈路標籤了),所述網絡節點r1,即待檢測網絡節點,對所述第二檢測報文進行ip路由轉發。
306』、所述網絡節點r1確定所述標籤棧為空,並根據所述目的ip地址和所述網絡節點r1的轉發表,確定所述網絡節點存在2條等價路徑;所述網絡節點r1使用ecmp功能,選擇等價路徑120』轉發所述第一檢測報文;
具體地,所述網絡節點r1根據所述目的ip地址查詢所述網絡節點r1的轉發表,發現存在2條到達所述目的ip地址的轉發條目,即,存在2條到所述目的ip地址的等價路徑。所述網絡節點r1需要使用ecmp功能為所述第二檢測報文選擇一條等價路徑。
具體地,所述網絡節點r1根據四元組:所述源ip地址、所述目的ip地址和第二埠組,進行哈希計算,得到哈希計算的第二結果(第二哈希值),該第二結果指向等價路徑120』;根據該第二結果確定等價路徑120』,例如,用 等價路徑的數量k對該第二結果進行取模運算,確定選擇該等價路徑120』,然後向等價路徑120』發送所述第二檢測報文。
307』、所述網絡節點r3接收所述第二檢測報文,將所述ttl的值減去1,所述網絡節點r3確定所述ttl的值為0並向所述網絡檢測設備110發送第二通知消息;
所述網絡節點r3為所述網絡節點r1,即待檢測網絡節點,在等價路徑120』上的下一跳。
所述網絡節點r3確定所述ttl的值為0時根據所述第二檢測報文生成第二通知消息,例如圖3所示的第二icmp報文,發送給所述網絡檢測設備110;由於所述第二檢測報文的源ip地址為所述網絡檢測設備的ip地址,因此當所述ttl的值為0時,所述網絡節點r3知道需要向那個設備發送第二通知消息。所述第二icmp報文中包括所述網絡節點r3的ip地址;所述第二icmp報文還包括所述第二檢測報文的首部,包括所述源ip地址和所述目的ip地址。
本申請實施例中,將網絡節點r3發送的通知消息,即源地址為網絡節點r2的ip地址的通知消息,均稱為第二通知消息。可選地,網絡節點r3對應多個不同的檢測報文向網絡檢測設備110發送了多個第二通知消息,每個第二通知消息中攜帶不同的埠組。
308、所述網絡檢測設備110根據預設比值範圍,收到的第一通知消息的數量和收到的第二通知消息的數量,判斷所述網絡節點r1的ecmp功能是否正確。
本申請實施例中,將來自不同等價路徑上反饋節點發送的通知消息,分別稱為第一通知消息,第二通知消息;如果存在兩條以上等價路徑,還有第三通知消息,第四通知消息等。
所述網絡檢測設備可以對應第一通知消息設置一個計數器,用於統計第一通知消息,即,源地址為網絡節點r2的ip地址的通知消息,的數量。所述網絡檢測設備可以對應第二通知消息設置一個計數器,用於統計第二通知消息, 即,源地址為網絡節點r3的ip地址的通知消息的數量。
第一通知消息的數量可以反映所述網絡節點r1通過等價路徑120轉發的檢測報文的數量;第二通知消息的數量可以反映所述網絡節點r1通過等價路徑120』轉發的檢測報文的數量。根據第一通知消息的數量與第二通知消息的數量之間的比值,可以看出所述網絡節點r1的等價路徑之間是否負載均衡。
具體地,所述網絡檢測設備110統計收到的第一通知消息的數量(即源地址為r2的ip地址的通知消息的數量)和第二通知消息的數量(即源地址為r3的ip地址的通知消息的數量),判斷第一通知消息的數量與第二通知消息的數量之間的比值是否滿足預設比值範圍,以判斷所述網絡節點r1的ecmp功能是否正確。如果第一通知消息的數量與第二通知消息的數量之間的比值滿足預設比值範圍,則可以確定所述網絡節點r1的ecmp功能正確;如果不滿足預設比值範圍,則可以確定所述網絡節點r1的ecmp功能不正確。
可選地,第一通知消息的數量與第二通知消息的數量之間的比值越接近預配置負載比值,說明所述網絡節點r1的ecmp功能的準確度越高。
本實施例中,以n個檢測報文中的ttl的值設置為m+1,由待檢測網絡節點在不同等價路徑上的下一跳作為反饋節點發送通知消息,說明檢測ecmp功能的過程。當然,如果等價路徑上存在兩個及以上的等價路徑中間節點時,可以將n個檢測報文中的ttl的值均設置為m+2,由等價路徑上待檢測網絡節點的下一跳的下一跳(等價路徑中間節點)發送通知消息;如果等價路徑上存在三個及以上的等價路徑中間節點時,也可以將n個檢測報文中的ttl的值均設置為m+3。當然,對於等價路徑上存在兩個及以上的等價路徑中間節點的情況,仍將n個檢測報文中的ttl的值均設置為m+1,更簡單高效。
本申請實施例提供的檢測ecmp功能的方法,網絡檢測設備根據網絡拓撲信息生成包括特定鏈路標籤和特定ttl值的n個檢測報文,指定檢測報文的轉發路徑,並利用ttl逐跳減1、ttl的值為0時會觸發不同等價路徑上的反饋節點,向網絡檢測設備發送通知消息(icmp報文)。這樣網絡檢測設備根據 來自不同等價路徑上反饋節點發送的通知消息的數量,就可以檢測待檢測網絡節點的ecmp功能是否正常,從而提高故障定位的效率。
在本申請圖2和圖3所示實施例提供的檢測ecmp功能的方法基礎上,接下來具體描述提供網絡檢測設備側功能的檢測裝置和網絡檢測設備。
參見圖4,為本申請實施例提供的一種檢測ecmp功能的檢測裝置400,所述檢測裝置400可以設置在網絡檢測設備中,用於實現如本申請圖2和3所示實施例中所述檢測ecmp功能的方法。所述檢測裝置400包括:
報文生成模塊401,用於根據目的ip地址和網絡拓撲信息生成n個檢測報文,每個檢測報文包括標籤棧、生存時間ttl、源網際協議ip地址、目的ip地址和埠組;所述埠組包括源埠號和目的埠號;所述標籤棧中包括m個鏈路標籤,所述ttl的值大於等於m+1,優選的,所述ttl的值為m+1;所述源ip地址為所述網絡檢測設備的ip地址,其中,m≥1,n≥k,k為待檢測網絡節點的等價路徑的數量,k≥2,m、n和k為正整數;所述n個檢測報文的標籤棧相同,所述n個檢測報文的ttl相同,所述n個檢測報文的源ip地址相同,所述n個檢測報文的目的ip地址相同;所述n個檢測報文中任意兩個檢測報文的埠組互不相同;
發送模塊402,用於根據所述標籤棧棧頂的鏈路標籤發送所述n個檢測報文;
接收模塊403,用於接收與所述n個檢測報文對應的n個通知消息;
確定模塊404,用於根據所述n個通知消息和預設比值範圍確定所述待檢測網絡節點的ecmp功能是否正確。
所述報文生成模塊,具體用於:根據所述目的ip地址和所述網絡拓撲信息,確定所述網絡檢測設備到所述目的ip地址的轉發路徑以及所述轉發路徑上的所述待檢測網絡節點;根據所述網絡拓撲信息,確定所述網絡檢測設備到所述待檢測網絡節點的跳數m以及每一跳的鏈路標籤,並確定所述待檢測網 絡節點的等價路徑的數量k;根據所述等價路徑的數量k、所述跳數m以及每一跳的鏈路標籤,生成所述n個檢測報文。
參見圖5所示,所述檢測裝置400還包括拓撲獲取模塊405,用於獲取所述網絡拓撲信息,所述網絡拓撲信息包括所述網絡檢測設備至所述目的ip地址的轉發路徑以及所述轉發路徑上每一跳的路由信息。具體包括所述網絡檢測設備至所述待檢測網絡節點的每一跳的鏈路標籤,以及所述待檢測網絡節點到所述目的ip地址的k條等價路徑。所述k條等價路徑為所述轉發路徑上的一段。
所述拓撲獲取模塊405可以先通過網絡拓撲管理裝置獲取網絡拓撲信息。所述網絡拓撲管理裝置可以是sdn控制器。具體實現中,所述檢測裝置400和所述網絡拓撲管理裝置可以在同一個物理設備中實現,也可以是在不同的物理設備中實現。
當所述待檢測網絡節點收到第一檢測報文(所述第一檢測報文為所述n個檢測報文中的任意一個)之後,所述待檢測網絡節點彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1。所述待檢測網絡節點確定所述標籤棧為空(可以理解此時所述檢測報文中的ttl的值為1),因此要根據轉發表對所述第一檢測報文進行ip路由轉發;所述待檢測網絡節點根據所述目的ip地址和所述待檢測網絡節點的轉發表確定存在k條等價路逕到所述目的ip地址(即待檢測ip地址),於是使用ecmp功能,選擇所述k條等價路徑中的一條等價路徑轉發所述第一檢測報文;所述待檢測網絡節點在該等價路徑上的下一跳節點,即反饋節點,接收所述第一檢測報文,將所述ttl的值減去1,導致所述ttl的值為0觸發該反饋節點向所述網絡檢測設備發送通知消息。
所述n個通知消息中包括第一通知消息和第二通知消息;所述第一通知消息中包括第一反饋節點的ip地址,所述第二通知消息中包括第二反饋節點的ip地址。當然,如果所述待檢測網絡節點存在兩條以上的等價路徑,則還可以包括第三通知消息,所述第三通知消息中包括第三反饋節點的ip地址。
所述接收模塊具體用於:
接收所述第一通知消息,所述第一通知消息用於通知所述網絡檢測設備:所述第一反饋節點收到所述待檢測網絡節點發送的檢測報文;所述第一通知消息為所述第一反饋節點在所述ttl的值為0時發送;所述第一反饋節點為第一等價路徑上的節點(等價路徑中間節點)。若所述第一檢測報文中所述ttl的值為m+1,所述第一反饋節點為所述待檢測網絡節點在第一等價路徑上的下一跳;若所述第一檢測報文中所述ttl的值為m+2,所述第一反饋節點為所述待檢測網絡節點在第一等價路徑上的下一跳的下一跳,以此類推。
接收第二通知消息,所述第二通知消息用於通知所述網絡檢測設備:所述第二反饋節點收到所述待檢測網絡節點發送的檢測報文;所述第二通知消息為所述第二反饋節點在所述ttl的值為0時發送;所述第二反饋節點為第二等價路徑上的節點(等價路徑中間節點)。若所述第一檢測報文中所述ttl的值為m+1,所述第二反饋節點為所述待檢測網絡節點在第二等價路徑上的下一跳。
所述確定模塊具體用於:記錄所述n個通知消息中不同源地址對應的通知消息的數量;判斷所述n個通知消息中不同源地址對應的通知消息的數量之間的比值是否滿足所述預設比值範圍,以確定所述待檢測網絡節點的ecmp功能是否正確。如果不同源地址對應的通知消息的數量之間的比值在所述預設比值範圍內,則可以確定所述待檢測網絡節點的ecmp功能正確;如果不同源地址對應的通知消息的數量之間的比值不在所述預設比值範圍內,則可以確定所述待檢測網絡節點的ecmp功能不正確。具體地,所述確定模塊記錄第一通知消息(源地址為第一反饋節點的ip地址)的數量和第二通知消息(源地址為第二反饋節點的ip地址)的數量,計算第一通知消息的數量和第二通知消息的數量之間的比值,如果該比值在所述預設比值範圍內,則確定所述待檢測網絡節點的ecmp功能正確;如果該比值不在所述預設比值範圍內,則確定所述待 檢測網絡節點的ecmp功能不正確。
參見圖6,為本申請實施例提供的一種網絡檢測設備600,用於實現如本申請圖2和3所示實施例中所述檢測轉發表的方法。所述網絡檢測設備包括:處理器601,存儲器602和通信接口603;
所述處理器601,所述存儲器602和所述通信接口603之間可以通過總線604相互連接;總線604可以是外設部件互連標準(peripheralcomponentinterconnect,簡稱pci)總線或擴展工業標準結構(extendedindustrystandardarchitecture,簡稱eisa)總線等。所述總線可以分為地址總線、數據總線、控制總線等。為便於表示,圖6中僅用一條粗線表示,但並不表示僅有一根總線或一種類型的總線。
所述存儲器602,用於存儲網絡拓撲信息,所述網絡拓撲信息包括所述網絡檢測設備到所述目的ip地址的轉發路徑以及所述轉發路徑上每一跳的路由信息;具體包括所述網絡檢測設備至所述待檢測網絡節點的每一跳的鏈路標籤,以及所述待檢測網絡節點到所述目的ip地址的k條等價路徑。
所述處理器601,用於根據目的ip地址和所述網絡拓撲信息生成n個檢測報文,所述n個檢測報文中的每個檢測報文包括標籤棧、ttl、源ip地址、所述目的ip地址和埠組;所述埠組包括源埠號和目的埠號;所述標籤棧中包括m個鏈路標籤,所述ttl的值大於等於m+1,優選的,所述ttl的值為m+1;所述源ip地址為所述網絡檢測設備的ip地址,其中,m為所述網絡檢測設備到待檢測網絡節點的跳數,m≥1,n≥k,k為所述待檢測網絡節點至所述待檢測ip地址的等價路徑的數量,k≥2,m、n和k為正整數;所述n個檢測報文的標籤棧相同,所述n個檢測報文的ttl相同,所述n個檢測報文的源ip地址相同,所述n個檢測報文的目的ip地址相同;所述n個檢測報文中任意兩個檢測報文的埠組互不相同;根據所述標籤棧棧頂的鏈路標籤,發送所述n個檢測報文;接收與所述n個檢測報文對應的n個通知消 息;根據所述n個通知消息和預設比值範圍確定所述待檢測網絡節點的ecmp功能是否正確。
所述處理器601,具體用於根據所述網絡拓撲信息,確定所述網絡檢測設備到所述待檢測網絡節點的跳數m以及每一跳的鏈路標籤,並確定所述待檢測網絡節點的等價路徑的數量k;根據所述等價路徑的數量k、所述跳數m以及每一跳的鏈路標籤,生成所述n個檢測報文。
所述處理器601,具體用於記錄所述n個通知消息中不同源地址對應的通知消息的數量;判斷所述n個通知消息中不同源地址對應的通知消息的數量之間的比值是否滿足所述預設比值範圍,以確定所述待檢測網絡節點的ecmp功能是否正確。
所述n個通知消息中包括第一通知消息和第二通知消息;所述第一通知消息中包括第一反饋節點的ip地址,所述第二通知消息中包括第二反饋節點的ip地址。當然,如果所述待檢測網絡節點存在兩條以上的等價路徑,則還可以包括第三通知消息,所述第三通知消息中包括第三反饋節點的ip地址。
所述處理器601具體用於:
接收所述第一通知消息,所述第一通知消息用於通知所述網絡檢測設備:所述第一反饋節點收到所述待檢測網絡節點發送的檢測報文;所述第一通知消息為所述第一反饋節點在所述ttl的值為0時發送;所述第一反饋節點為第一等價路徑上的等價路徑中間節點。若所述第一檢測報文中所述ttl的值為m+1,所述第一反饋節點為所述待檢測網絡節點在第一等價路徑上的下一跳;
接收第二通知消息,所述第二通知消息用於通知所述網絡檢測設備:所述第二反饋節點收到所述待檢測網絡節點發送的檢測報文;所述第二通知消息為所述第二反饋節點在所述ttl的值為0時發送;所述第二反饋節點為第二等價路徑上的等價路徑中間節點。若所述第二檢測報文中所述ttl的值為m+1,所述第二反饋節點為所述待檢測網絡節點在第二等價路徑上的下一跳。
所述第一通知消息為所述第一反饋節點在所述ttl的值為0時發送;所 述第二通知消息為所述第二反饋節點在所述ttl的值為0時發送。
所述處理器601,還用於獲取所述網絡拓撲信息。具體可以通過網絡拓撲管理裝置獲取網絡拓撲信息。所述網絡拓撲管理裝置可以是sdn控制器。具體實現中,所述網絡檢測設備和所述網絡拓撲管理裝置可以在同一個物理設備中實現,也可以是在不同的物理設備中實現。
所述存儲器602可以包括易失性存儲器(英文:volatilememory),例如隨機存取存儲器(英文:random-accessmemory,縮寫:ram);存儲器602也可以包括非易失性存儲器(英文:non-volatilememory),例如快閃記憶體(英文:flashmemory),硬碟(英文:harddiskdrive,縮寫:hdd)或固態硬碟(英文:solid-statedrive,縮寫:ssd);存儲器602還可以包括上述種類的存儲器的組合。
本申請實施例中,所述通信接口603代表所述網絡檢測設備600與網絡中其他網絡節點通信的接口,可以是一個或多個,可以是光接口、電接口,或各類接口的組合。為便於表述,本申請中用通信接口603表示,並不作為對本申請技術方案的限定。
所述處理器601可以是中央處理器(英文:centralprocessingunit,縮寫:cpu),網絡處理器(英文:networkprocessor,縮寫:np)或者cpu和np的組合。處理器601還可以進一步包括硬體晶片。上述硬體晶片可以是專用集成電路(英文:application-specificintegratedcircuit,縮寫:asic),可編程邏輯器件(英文:programmablelogicdevice,縮寫:pld)或其組合。上述pld可以是複雜可編程邏輯器件(英文:complexprogrammablelogicdevice,縮寫:cpld),現場可編程邏輯門陣列(英文:field-programmablegatearray,縮寫:fpga),通用陣列邏輯(英文:genericarraylogic,縮寫:gal)或其任意組合。
可選地,所述存儲器602還用於存儲程序指令;所述處理器601可以調用存儲器602中存放的程序指令,執行圖2和圖3所示實施例中網絡檢測設備的 一個或多個步驟,或其中可選的實施方式,實現上述圖2和圖3所示的檢測轉發表的方法。
本申請實施例提供的網絡檢測設備通過包括特定鏈路標籤和特定ttl值的n個檢測報文,可以檢測待檢測網絡節點的ecmp功能是否正常,從而提高故障定位的效率。
在本申請圖2和圖3所示實施例提供的檢測ecmp功能的方法基礎上,接下來具體描述實現上述方法中的待檢測網絡節點。
參見圖7,為本申請實施例提供的一種網絡節點700,所述網絡節點700用於實現如本申請圖2和3所示實施例中所述檢測ecmp功能的方法。所述網絡節點700包括接收模塊701,報文處理模塊702和轉發模塊703;
所述接收模塊701,用於接收接收第一檢測報文,所述第一檢測報文中包括標籤棧、ttl、源ip地址、目的ip地址和第一埠組;其中,所述標籤棧中包括m個鏈路標籤,所述ttl的值為m+1;所述源ip地址為網絡檢測設備的ip地址
可以理解當網絡節點700收到的第一檢測報文中,標籤棧中僅包括一個鏈路標籤,ttl的值為2時,所述網絡節點700即為待檢測網絡節點。
所述報文處理模塊702,用於彈出所述標籤棧棧頂的鏈路標籤,將所述ttl的值減去1;判斷所述標籤棧是否為空;當確定所述標籤棧為空(此時,所述網絡節點為待檢測網絡節點),且根據所述目的ip地址和所述網絡節點的轉發表確定所述網絡節點至所述目的ip地址存在k條等價路徑時,使用ecmp功能為所述第一檢測報文選擇所述k條等價路徑中的第一等價路徑。
所述報文處理模塊702,具體根據所述源ip地址、所述目的ip地址、所述第一埠組,進行哈希計算,得到第一哈希值,該第一哈希值指向第一等價路徑;根據該第一哈希值,例如,用等價路徑的數量k對該第一哈希值進行取模運算,確定所述第一等價路徑用於轉發所述第一檢測報文。
所述轉發模塊703,用於向所述報文處理模塊702選擇的所述第一等價路徑轉發所述第一檢測報文。第一反饋節點接收所述第一檢測報文,將所述ttl的值減去1,所述第一反饋節點為所述第一等價路徑上的節點(等價路徑中間節點)。所述第一反饋節點確定所述ttl的值為0,則向所述網絡檢測設備發送第一通知消息,例如,圖3所示的第一icmp報文,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
所述轉發模塊703,還用於當所述報文處理模塊702確定所述標籤棧不為空時,根據所述標籤棧棧頂的鏈路標籤,轉發所述第一檢測報文。此時,所述網絡節點為中間網絡節點,對所述檢測報文繼續進行標籤轉發,直至發送給待檢測網絡節點。
所述接收模塊701還用於接收第二檢測報文,所述第二檢測報文中包括所述標籤棧、所述ttl、所述源ip地址、所述目的ip地址和第二埠組。相應地,所述報文處理模塊702,還用於對所述第二檢測報文進行如下處理:彈出所述標籤棧棧頂的鏈路標籤,將所述ttl的值減去1;判斷所述標籤棧是否為空;當確定所述標籤棧為空時(此時,所述網絡節點為待檢測網絡節點),根據所述目的ip地址和所述網絡節點的轉發表確定存在k條等價路徑,則使用ecmp功能為所述第二檢測報文選擇所述k條等價路徑中的第二等價路徑。
所述報文處理模塊702,具體根據所述源ip地址、所述目的ip地址、所述第二埠組,進行哈希計算,得到第二哈希值,該第二哈希值指向第二等價路徑;根據該第二哈希值,例如,用等價路徑的數量k對該第二哈希值進行取模運算,確定所述第二等價路徑用於轉發所述第二檢測報文。
所述轉發模塊703,還用於向所述報文處理模塊702選擇的所述第二等價路徑轉發所述第二檢測報文。第二反饋節點接收所述第二檢測報文,將所述ttl的值減去1,所述第二反饋節點為所述網絡節點在所述第二等價路徑上的下一跳。所述第二反饋節點確定所述ttl的值為0,則向所述網絡檢測設備發送第二通知消息,例如,圖3所示的第二icmp報文,以便所述網絡檢測設備 確定所述網絡節點的ecmp功能是否正確。
參見圖8,為本申請實施例提供的一種網絡節點800,用於實現如本申請圖2和3所示實施例中所述ecmp功能的方法。所述網絡節點800包括:處理器801,存儲器802和通信接口803;
所述處理器601,所述存儲器602和所述通信接口603之間可以通過總線604相互連接;總線604可以是pci總線或eisa總線等。所述總線可以分為地址總線、數據總線、控制總線等。為便於表示,圖8中僅用一條粗線表示,但並不表示僅有一根總線或一種類型的總線。
所述存儲器802,用於存儲所述網絡節點800的轉發表。
所述處理器801,用於接收第一檢測報文,所述第一檢測報文中包括標籤棧、ttl、源ip地址、目的ip地址和第一埠組;其中,所述標籤棧中包括m個鏈路標籤,所述ttl的值大於等於m+1,所述源ip地址為網絡檢測設備的ip地址,m為大於等於1的正整數;
所述處理器801,還用於彈出所述標籤棧棧頂的鏈路標籤,並將所述ttl的值減去1;判斷所述標籤棧是否為空;當確定所述標籤棧為空時(此時,所述網絡節點800為待檢測網絡節點),根據所述目的ip地址和所述轉發表確定存在k條等價路徑,則使用ecmp功能,選擇所述k條等價路徑中的第一等價路徑轉發所述第一檢測報文。第一反饋節點接收所述第一檢測報文,將所述ttl的值減去1;所述第一反饋節點為所述第一等價路徑上的節點(等價路徑中間節點);所述第一反饋節點確定所述ttl的值為0,並向所述網絡檢測設備發送第一通知消息,例如,圖3所示的第一icmp報文,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
所述處理器801,還用於當確定所述標籤棧不為空時,根據所述標籤棧棧頂的鏈路標籤,轉發所述第一檢測報文。此時,所述網絡節點800為中間網絡節點,對所述第一檢測報文繼續進行標籤轉發,直至發送給待檢測網絡節點。
所述處理器801,具體根據所述源ip地址、所述目的ip地址、所述第一埠組,進行哈希計算,得到第一哈希值,所述第一結果指向第一等價路徑;根據所述第一哈希值,確定所述第一等價路徑用於轉發所述第一檢測報文。
所述處理器801,還用於接收第二檢測報文,所述第二檢測報文中包括所述標籤棧、所述ttl、所述源ip地址、所述目的ip地址和第二埠組;並對所述第二檢測報文進行如下處理:彈出所述標籤棧棧頂的鏈路標籤,將所述ttl的值減去1;判斷所述標籤棧是否為空;當確定所述標籤棧為空時(此時,所述網絡節點為待檢測網絡節點),根據所述目的ip地址和所述網絡節點的轉發表確定存在k條等價路徑,則使用ecmp功能選擇所述k條等價路徑中的第二等價路徑轉發所述第二檢測報文。第二反饋節點接收所述第二檢測報文,將所述ttl的值減去1,所述第二反饋節點為所述第二等價路徑上的等價路徑中間節點。所述第二反饋節點確定所述ttl的值為0,則向所述網絡檢測設備發送第二通知消息,例如,圖3所示的第二icmp報文,以便所述網絡檢測設備確定所述網絡節點的ecmp功能是否正確。
所述處理器801,具體根據所述源ip地址、所述目的ip地址、所述第二埠組,進行哈希計算,得到第一哈希值,所述第一哈希值指向第一等價路徑;根據所述第一哈希值,確定所述第二等價路徑用於轉發所述第二檢測報文。
所述存儲器802可以包括易失性存儲器,例如ram;存儲器802也可以包括非易失性存儲器,例如flash,hdd,ssd;存儲器802還可以包括上述種類的存儲器的組合。
本申請實施例中,所述通信接口803代表所述網絡節點800與網絡中其他網絡節點通信的接口,可以是一個或多個,可以是光接口、電接口,或各類接口的組合。為便於表述,本申請中用通信接口803表示,並不作為對本申請技術方案的限定。
所述處理器801可以是cpu,np,或者cpu和np的組合;所述處理器也可以是硬體晶片。上述硬體晶片可以是asic,pld或其組合。上述pld可 以是cpld,fpga,gal或其任意組合。
可選的,所述處理器801,還用於獲取所述轉發表。具體地,所述處理器801根據路由表生成所述轉發表。所述存儲器802還可用於存儲所述路由表。所述網絡節點800可以採用傳統的方法得到所述路由表,在此不再贅述。
可選地,所述存儲器802還用於存儲程序指令;所述處理器601可以調用存儲器802中存放的程序指令,執行圖2和圖3所示實施例中網絡節點的一個或多個步驟,或其中可選的實施方式,實現上述圖2和圖3所示的檢測ecmp功能的方法。
本申請實施例提供的網絡節點,在收到網絡檢測設備發送的包括特定鏈路標籤和特定ttl值的n個檢測報文後,彈出標籤棧棧頂的鏈路標籤並將ttl的值減1。到待檢測網絡節點轉發該n個檢測報文時,由於標籤棧為空,需要根據轉發表使用ecmp功能為每個檢測報文選擇一條等價路徑。待檢測網絡節點在各條等價路徑上的下一跳,即反饋節點,收到檢測報文後,將所述ttl的值減1,導致所述ttl值為0,觸發反饋節點向網絡檢測設備發送通知消息。網絡檢測設備根據不同等價路徑上的反饋節點發送的通知消息,就可以判斷n個檢測報文是否按照預設比值範圍在待檢測網絡節點的k條等價路徑之間分配,從而可以確定待檢測網絡節點的ecmp功能是否正常,提高了故障定位的效率。
以上所述,僅為本發明較佳的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應該以權利要求的保護範圍為準。