一種發送測試路由的方法和系統的製作方法
2023-04-25 22:09:16 1
專利名稱:一種發送測試路由的方法和系統的製作方法
技術領域:
本發明涉及網絡測試技術,尤其涉及一種發送測試路由的方法和系統。
背景技術:
BGP(Border Gateway Protocol,邊界網關協議)是Internet上最重要的路由協議之一,它是目前自治系統之間採用的唯一路由協議,因此,有人稱BGP為網際網路的心臟(BGP Is The Heart Of Internet)。BGP經歷了不同的發展階段,從1989年的最初版本BGP1,發展到了1993年的版本BGP4,其功能也在隨著Internet的增長不斷地加強和擴大。從最初的基本的自治系統間的路由功能,到聚合,團體,反射,聯盟,衰減,能力通告,多協議擴展,路由刷新等,可以說BGP的發展緊密跟隨著Internet的發展,Internet上的BGP路由的數目也從1989年的很少條數增加到2001年的約10萬條,自治系統的個數在2001年也增加到9000個左右。因此BGP功能的強大和健壯與否是檢驗核心路由器的重要指標。
為了測試路由器對於大量的BGP路由的處理,需要使用一定的測試方法向路由器添加大量的路由,然後觀察路由器對於這些大量路由的處理,從而判斷路由器對於接收到的路由的處理是否正確。
現有的測試方案為,生成符合網上路由前綴長度規律分布的路由,創建多個包含不同路由前綴的路由池,然後從路由池中讀取並發送路由到被測試路由器。
從以上現有技術方案可以看出,由於生成的測試路由沒有隨機特性,故發送到被測試路由器的測試路由不能模擬路由器在網際網路接收到路由,從而無法準確的測試出路由器處理網際網路路由的性能。
發明內容
本發明的目的是提供一種發送測試路由的方法和系統,以實現生成符合網上路由前綴長度分布規律,且具有隨機特性的測試路由,並將所述測試路由發送給被測試設備。
為達到上述的目的,本發明通過以下技術方案實現
一種發送測試路由的方法,包括1)依據網上路由分布規律,計算出各種路由前綴長度的路由的生成數目,採用隨機算法生成所述生成數目的各種路由前綴長度的隨機路由;2)依據網上路由分布規律,計算出各種路由前綴長度的路由的測試數目,從所述步驟1)生成的隨機路由中,讀取所述測試數目的各種路由前綴長度的路由;3)發送所述讀取的測試路由到被測試設備。
優選的,在所述步驟1)之前,預置路由總生成數目;在所述步驟2)之前,預置預定路由總測試數目;所述總測試數目不大於總生成數目。
優選的,所述步驟1)生成隨機路由的過程包括21)獲取所述各種路由前綴長度中的一種路由前綴長度;22)採用隨機算法生成一條所述獲取的路由前綴長度的路由前綴,判斷所述生成的路由前綴是否與已存在的具有相同路由前綴長度的路由前綴相同,如果是,刪除所述生成的路由前綴,繼續步驟22);否則,繼續步驟23);23)判斷獲取的路由前綴長度的路由前綴的生成數目是否與所述步驟1)計算出的該種路由前綴長度路由的生成數目相等,如果是,繼續步驟24);否則,繼續步驟22);24)判斷所述各種路由前綴長度是否都已經被獲取,如果是,結束;否則,從未被獲取的路由前綴長度中,獲取一種路由前綴長度,繼續步驟22)。
優選的,所述步驟2)讀取路由的過程包括31)獲取所述各種路由前綴長度中的一種路由前綴長度;32)從所述獲取的路由前綴長度的生成路由中,讀取所述步驟2)該種路由前綴長度測試數目的路由;33)判斷所述各種路由前綴長度是否都已經被獲取,如果是,結束;否則,從未被獲取的路由前綴長度中,獲取一種路由前綴長度,繼續步驟32)。
優選的,所述被測試設備為啟用邊界網關協議BGP的路由器,所述步驟3)發送測試路由之前,與被測試路由器建立邊界網關協議會話BGP Session。
優選的,所述步驟3)發送過程包括把測試路由加入到添加路由的更新Update報文中,發送給測試路由器;或把測試路由加入到撤銷路由的更新Update報文中,發送給測試路由器。
優選的,所述步驟32)的讀取為隨機讀取。
優選的,所述的隨機算法為使用偽隨機函數產生偽隨機數的算法。
一種發送測試路由的系統,包括參數預置輸入模塊、隨機路由生成模塊、測試路由讀取模塊、測試路由發送模塊所述參數預置輸入模塊用於輸入網上路由分布規律參數,計算出各種路由前綴長度的路由的生成數目和各種路由前綴長度的路由的測試數目;所述隨機路由生成模塊用於讀取所述各種路由前綴長度的路由的生成數目,採用隨機算法生成所述生成數目的各種路由前綴長度的隨機路由;所述測試路由讀取模塊用於讀取所述各種路由前綴長度的路由的測試數目,從所述生成的各種路由前綴長度的隨機路由中,讀取測試數目的所述各種路由前綴長度的路由;所述測試路由發送模塊用於發送所述讀取的測試路由到被測試設備。
優選的,所述參數預置輸入模塊還用於輸入預置路由總生成數目和預定路由總測試數目,根據網上路由分布規律計算出各種路由前綴長度的路由的生成數目和各種路由前綴長度的路由的測試數目。
從上述的技術方案可以看出,本發明通過預先設置路由總生成數目和總測試數目,依據網上路由分布規律,計算出各種路由前綴長度的路由的生成數目和測試數目,採用隨機算法生成所述生成數目的各種路由前綴長度的隨機路由,從生成的隨機路由中,讀取所述測試數目的各種路由前綴長度的路由,然後發送所述讀取的測試路由到被測試設備。通過這種方法,使得發送到被測試設備的路由不僅符合網上路由分布規律,而且具有隨機特性,測試路由與被測試設備在實際網際網路中接收到的路由一致;從而可以準確的測試該設備在實際工作環境中處理路由的能力。
圖1為本發明的方法流程圖;圖2為本發明隨機路由生成的方法流程圖;圖3為本發明測試路由讀取的方法流程圖;圖4為本發明的系統示意圖。
具體實施例方式
本發明提供了一種發送測試路由的方法和系統,其基本思路是首先生成符合網上路由前綴長度分布規律的預置數目的隨機路由,然後從生成的路由中,讀取預定數目的各種路由前綴長度的測試路由,將所述測試路由發送到被測試設備。
請參考圖1,為本發明的方法流程圖,包括步驟P1.預置路由總生成數目,依據網上路由分布規律,計算出各種路由前綴長度的路由的生成數目,採用隨機算法生成所述生成數目的各種路由前綴長度的路由。
P2.預定路由總測試數目,依據網上路由分布規律,計算出各種路由前綴長度的路由的測試數目,從所述步驟P1生成的路由中,讀取所述測試數目的各種路由前綴長度的路由;所述總測試數目不大於總生成數目。
P3.發送所述讀取的測試路由到被測試設備。
為進一步理解本發明,以下通過具體實施方式
對本技術方案的方法流程進行詳細的描述。
從上述本發明的基本思想可知,本發明可以分為生成隨機路由、讀取測試路由和發送測試路由三個部分,下面按實施步驟順序對這三個部分進行描述。
請參考圖2,為本發明隨機路由生成的方法流程圖,包括A1.預置路由總生成數目,根據網上路由分布規律,計算各種路由前綴長度的路由的生成數目。
上述路由前綴為路由的網絡地址部分信息。
上述路由前綴長度為路由的網絡地址部分信息的長度(單位為bit),也就是掩碼長度。
具體的,表1列出了某時段網上路由前綴長度(IPv4)分布規律,即各種路由前綴所佔總路由前綴的百分比,該分布規律由單位時間統計得出。預置總生成路由為1000萬條,在生成隨機路由的時候,如果路由總數很大,按照這個表中的路由分布規律,前綴長度為8的路由數目為2000條,但是除去第1位元組為0,127,以及大於等於224的路由,有效的路由數目只有222條。後面,還有些前綴長度的路由數目也有這樣的問題,因此在具體實現的時候,涉及到修正的問題。前綴長度為8的路由數目最大就設置為222,其它類似情況的前綴長度的路由數目也設置為該種長度的有效路由的最大數目,最後,設置前綴長度為31的路由數目為指定路由總數與其它所有前綴長度的路由總和的差。各種前綴長度路由的生成數目,以及根據前綴的具體情況更正後的有效路由數目如表1所示。
表1在程序實現中,可以使用一個數組,比如ULONG ulMaxPrefixIpNum[33],每個元素表示一種前綴長度的路由數目,ulMaxPrefixIpNum[8]就表示前綴長度為8的有效路由數目。ULONG是32bit的無符號整數。
A2.設置起始生成路由前綴長度n為2。對IPv4協議的路由來說,路由前綴長度為1~32。
A3.利用偽隨機函數生成路由前綴長度為n的路由前綴。
具體的,在程序實現中,首先初始化一個數組,比如ULONGulRoutesInfoList[10000000]來表示生成的1000萬條路由。從前綴長度為2開始,依次生成各種前綴長度的路由在路由生成過程中,利用偽隨機函數每生成一條路由。
路由生成的方法舉例因為一條路由,比如10.1.160.3,實際上可以用4個字節(1個字節是8bit)表示,依次是10,1,160,3。所以生成隨機路由的時候,可以使用偽隨機函數,比如rand,來分別生成4個偽隨機數,每個偽隨機數的範圍在0-255之間。由這4個偽隨機數一起,就組成了一條路由,共32bit。然後,再根據前綴長度(比如18)來取前面的18bit,修改後面的14bit為0。比如10.1.160.3用二進位表示成32bit,是00001010 00000001 10100000 00000011,根據前綴長度18,取前面的18bit,修改後面的14bit修改為0,得到2進位的32bit結果為00001010 00000001 10000000 00000000,用點分10進位表示就是10.1.128.0。為了處理簡單,存放到表示路由的本地文件中的時候存放4個字節,依次是10,1,128,0。
A4.判斷該路由前綴長度的路由前綴是否已經存在?如果是,則刪除此次生成的路由前綴,繼續步驟A3,否則,繼續步驟A5。
A5.將該路由前綴加入路由前綴長度為n的緩衝區。具體的,在程序實現中,可以使用數組ulRoutesInfoList作為數據存放的緩衝區。
A6.判斷是否已經生成指定數目的該種路由前綴長度的路由。如果是,繼續步驟A7;否則,繼續步驟A3。所述指定數目為在步驟A1計算出來的該種路由前綴長度生成的路由數目。
A7.前綴長度n+1,判斷n是否大於32,如果是,繼續步驟A8;否則,繼續步驟A3。IPv4最長的前綴長度為32,故大於32表示路由已經全部生成。
A8.將所有生成路由寫入測試設備的本地文件。
具體的,創建一個.txt文件,先寫入4個字節的路由總數,這裡是1000萬;再寫入整個數組ulRoutesInfoList[10000000]的內容。
需要特別說明的是,以上隨機路由生成方法,僅為本發明隨機路由生成方法的一種具體實施例,本發明可根據需要採用其他隨機路由生成方法,只要首先生成符合網上路由前綴長度分布規律的預置數目的隨機路由即可,由此處不再贅述。
在生成隨機路由後,進入讀取測試路由流程。
請參考圖3,為本發明測試路由讀取的方法流程圖,包括B1.預定路由總測試數目,根據網上路由分布規律,計算各種路由前綴長度的路由的測試數目。
首先輸入在測試過程中需要發送的路由數目,允許用戶根據測試需要,輸入需要向路由器添加、撤消、振蕩的路由數目,比如,輸入需要發送的測試路由為20萬條;然後根據網上前綴長度規律和輸入的路由總數計算各種前綴長度的路由數目,計算原理和步驟A1相同。
B2.根據路由的測試數目,從系統中分配內存s1。
具體的,如果測試路由為20萬條,每條路由包括前綴長度1個字節,前綴4個字節,所以需要分配內存s1的大小為20萬*(4+1)=100萬字節的空間。在程序實現中,可以使用一個數組,比如ULONG ulMaxPrefixIpNum[33],每個元素表示一種前綴長度的路由數目,ulMaxPrefixIpNum[8]就表示前綴長度為8的有效路由數目,ULONG是32bit的無符號整數。
B3.從存儲生成路由的文件,把全部路由讀取到內存s2中。
具體的,生成的路由為1000萬條;分配4*1000萬字節大小的內存,讀取所有路由到內存s2。因為這1000萬條路由是按各種前綴長度依次生成的,所以在內存s2中清楚的知道某個前綴長度的路由的起始和結束位置。
B4.設置起始測試路由前綴長度n為2。
B5.在路由前綴長度n的生成路由數目範圍內生成一個隨機數。可以使用偽隨機函數生成隨機數。
B6.從隨機數開始,依順序讀取指定數目的路由前綴n的路由,如果讀到最後還不夠,再從第一條開始讀起,把讀取的路由添加到內存s1。
為了使得每次測試,即使路由總數相同,比如都是20萬條,最後從文件獲取的路由也不完全相同,在讀取某個前綴長度的路由的時候,先在該前綴長度的路由總數範圍內生成一個隨機數,假設為m,從該種前綴長度的第m條路由開始讀取所需路由,如果讀到最後還不夠指定數目,再返回去繼續從該前綴長度的生成路由的第1條開始讀取。
以下對該步驟舉例說明定義1個數據結構,表示路由,包括前綴長度和前綴typedef struct tagBGP_ROUTES_INFO{BYTE ucLen;//路由的prefix len,也就是20.0.0.1/16裡面的16UCHAR ucaPrefix[4];//也就是20.0.0.1/16裡面的20 0 0 1四個字節}BGP_ROUTES_INFO_S;生成1個BGP_ROUTES_INFO_S類型的臨時變量,比如pBgpV4RoutesInfo,讀取各種前綴的路由後,將前綴長度寫入pBgpV4RoutesInfo的ucLen,將前綴寫入pBgpV4RoutesInfo的ucaPrefix,然後將pBgpV4RoutesInfo寫入內存s1。
假設輸入的路由數目為10,最後從文件中讀取到5條前綴長度為23,5條前綴長度為24的路由,分別如下14.5.24.0/23,142.97.240.0/23,159.157.148.0/23,125.21.192.0/23,205.2.62.0/23186.81.104.0/24,54.208.184.0/24,194.137.80.0/24,117.75.59.0/24,146.139.49.0/24。
那麼內存s1的內容(以下為16進位)就為17 0E 05 18 00 17 8E 61 F0 00 17 9F 9D 94 00 17 7D 15 C0 00 17 CD 02 3E 0018 BA 51 68 0018 36 D0 B8 00 18 C2 89 50 00 18 75 4B 3B 00 18 92 8B 3100需要說明的是,步驟B5和B6通過在路由前綴長度n的生成路由數目範圍內生成一個隨機數,然後從隨機數開始順序讀取指定數目的路由前綴n的路由。也可以把路由前綴長度n的生成路由數目範圍作為一個數據段,使用隨機的方法,每次從這個數據段隨機讀取一條路由,直到讀取夠指定數目的路由前綴n的路由為止。
B7.前綴長度n+1,判斷n是否大於32。如果是,繼續步驟B8;否則,繼續步驟B5。
B8.測試路由讀取結束。
另外,需要說明的是,上述讀取測試路由的方法,僅為本發明讀取測試路由的方法進行詳細說明的一種具體實施例,本發明亦可以採用其他隨機方式讀取測試路由,此處亦不再贅述。
在讀取測試路由後,進入測試路由發送流程。以下實施例為將測試路由發送給啟用BGP的路由器。
C1.在測試工具與路由器來建立BGP Session。
在測試工具與路由器之間建立BGP Session的基本過程包括,先在測試工具與DUT(device under test,被測設備)之間建立tcp連接,目的埠號為179,然後在tcp連接的基礎上互相發送BGP Open報文,BGP KeepAlive報文,就建立起BGP Session了。建立BGP Session後,互相每隔一段時間發送BGPKeepAlive報文,就可以維護BGP Session。
C2.組織包含上述讀取的測試路由在內的Update報文。所述Update報文包括添加路由的Update報文和撤銷路由的Update報文。Update報文包括報文頭,測試路由和Session相關屬性。
添加路由的Update報文是tcp數據包,tcp目的埠號為179,其數據部分包括Update報文頭,以及Origin,As_Path,Next_Hop,Local-Preference等路由屬性,還有添加的各條路由,所述路由包括前綴長度和前綴。
撤消路由的Update報文是tcp數據包,tcp目的埠號為179,其數據部分包括Update報文頭,以及撤消的各條路由,所述路由包括前綴長度和前綴。
具體的,添加路由和撤消路由的Update報文中,10.1.128.0/18封裝到Update報文中的時候,實際上先填寫18,然後填寫3個字節10,1,128,最後的1個字節0是不寫到Update報文中的,也就是只填寫前綴長度所表示的有效字節。如果前綴長度大於24,有效字節為4,需要填寫4個字節的前綴;前綴長度小於或等於24而大於16,有效字節為3,需要填寫3個字節的前綴;前綴長度小於或等於16而大於8,有效字節為2,需要填寫2個字節的前綴;前綴長度小於或等於8,有效字節為1,需要填寫1個字節的前綴。
C3.將Update報文發送給路由器。除發送添加路由和撤銷路由外,在對路由器的測試還包括路由震蕩,所述路由震蕩為添加路由和撤消路由交替進行,路由震蕩的過程就是交替向路由器發送添加路由和撤消路由的Update報文,添加路由和撤消路由之間的時間間隔由用戶設置。
另外,如果測試過程對時間沒有緊迫的要求,可以每次測試的時候生成符合網上前綴長度分布規律的隨機路由,然後直接發送給路由器進行測試。
另外還可以收集網上的路由器上的路由表中的數量足夠多的路由,存放成文件,每次測試的時候,從文件中隨機讀取其中的部分路由。
請參考圖4,為本發明的系統示意圖。
本發明的發送測試路由的系統100包括參數預置輸入模塊110、隨機路由生成模塊120、測試路由讀取模塊130、測試路由發送模塊140參數預置輸入模塊110用於輸入預置路由總生成數目、預定路由總測試數目和網上路由分布規律參數,計算出各種路由前綴長度的路由的生成數目和各種路由前綴長度的路由的測試數目;隨機路由生成模塊120用於讀取所述各種路由前綴長度的路由的生成數目,採用隨機算法生成所述生成數目的各種路由前綴長度的隨機路由;測試路由讀取模塊130用於讀取所述各種路由前綴長度的路由的測試數目,從所述生成的各種路由前綴長度的隨機路由中,讀取所述測試數目的路由;測試路由發送模塊140用於發送所述讀取的測試路由到被測試設備。
首先,將網上路由分布規律參數和預置路由總生成數目輸入到參數預置輸入模塊110,參數預置輸入模塊110計算出各種路由前綴長度的路由的生成數同。然後隨機路由生成模塊120讀取所述各種路由前綴長度的路由的生成數目,採用隨機算法生成所述生成數目的各種路由前綴長度的隨機路由。將預定路由總測試數目輸入到參數預置輸入模塊110,參數預置輸入模塊110計算出各種路由前綴長度的路由的測試數目,可以理解的是,可以在輸入路由總生成數目的時候,同時輸入路由總測試數目。測試路由讀取模塊130讀取各種路由前綴長度的路由的測試數目,從上述生成的各種路由前綴長度的隨機路由中,讀取所述測試數目的路由。測試路由發送模塊140用於發送所述讀取的測試路由到被測試設備200。從而實現了路由測試系統100發送符合網上路由分布規律,且具有隨機特性的測試路由到被測試設備200。
以上對本發明所提供的一種發送測試路由的方法和系統進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式
及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
權利要求
1.一種發送測試路由的方法,其特徵在於,包括1)依據網上路由分布規律,計算出各種路由前綴長度的路由的生成數目,採用隨機算法生成所述生成數目的各種路由前綴長度的隨機路由;2)依據網上路由分布規律,計算出各種路由前綴長度的路由的測試數目,從所述步驟1)生成的隨機路由中,讀取所述測試數目的各種路由前綴長度的路由;3)發送所述讀取的測試路由到被測試設備。
2.根據權利要求1所述的方法,在所述步驟1)之前,預置路由總生成數目;在所述步驟2)之前,預置預定路由總測試數目;所述總測試數目不大於總生成數目。
3.根據權利要求2所述的方法,其特徵在於,所述步驟1)生成隨機路由的過程包括21)獲取所述各種路由前綴長度中的一種路由前綴長度;22)採用隨機算法生成一條所述獲取的路由前綴長度的路由前綴,判斷所述生成的路由前綴是否與已存在的具有相同路由前綴長度的路由前綴相同,如果是,刪除所述生成的路由前綴,繼續步驟22);否則,繼續步驟23);23)判斷獲取的路由前綴長度的路由前綴的生成數目是否與所述步驟1)計算出的該種路由前綴長度路由的生成數目相等,如果是,繼續步驟24);否則,繼續步驟22);24)判斷所述各種路由前綴長度是否都已經被獲取,如果是,結束;否則,從未被獲取的路由前綴長度中,獲取一種路由前綴長度,繼續步驟22)。
4.根據權利要求3所述的方法,其特徵在於,所述步驟2)讀取路由的過程包括31)獲取所述各種路由前綴長度中的一種路由前綴長度;32)從所述獲取的路由前綴長度的生成路由中,讀取所述步驟2)該種路由前綴長度測試數目的路由;33)判斷所述各種路由前綴長度是否都已經被獲取,如果是,結束;否則,從未被獲取的路由前綴長度中,獲取一種路由前綴長度,繼續步驟32)。
5.根據權利要求4所述的方法,其特徵在於,所述被測試設備為啟用邊界網關協議BGP的路由器,所述步驟3)發送測試路由之前,與被測試路由器建立邊界網關協議會話BGP Session。
6.根據權利要求5所述的方法,其特徵在於,所述步驟3)發送過程包括把測試路由加入到添加路由的更新Update報文中,發送給測試路由器;或把測試路由加入到撤銷路由的更新Update報文中,發送給測試路由器。
7.根據權利要求6所述的方法,其特徵在於,所述步驟32)的讀取為隨機讀取。
8.根據權利要求1~7其中之一的方法,其特徵在於,所述的隨機算法為使用偽隨機函數產生偽隨機數的算法。
9.一種發送測試路由的系統,其特徵在於,包括參數預置輸入模塊、隨機路由生成模塊、測試路由讀取模塊、測試路由發送模塊所述參數預置輸入模塊用於輸入網上路由分布規律參數,計算出各種路由前綴長度的路由的生成數目和各種路由前綴長度的路由的測試數目;所述隨機路由生成模塊用於讀取所述各種路由前綴長度的路由的生成數目,採用隨機算法生成所述生成數目的各種路由前綴長度的隨機路由;所述測試路由讀取模塊用於讀取所述各種路由前綴長度的路由的測試數目,從所述生成的各種路由前綴長度的隨機路由中,讀取測試數目的所述各種路由前綴長度的路由;所述測試路由發送模塊用於發送所述讀取的測試路由到被測試設備。
10.根據權利要求9所述的系統,其特徵在於所述參數預置輸入模塊還用於輸入預置路由總生成數目和預定路由總測試數目,根據網上路由分布規律計算出各種路由前綴長度的路由的生成數目和各種路由前綴長度的路由的測試數目。
全文摘要
本發明公開了一種發送測試路由的方法和系統,其基本思路是首先生成符合網上路由前綴長度分布規律的隨機路由,然後從生成的路由中,讀取測試路由,將所述測試路由發送到被測試設備。本發明可以實現發送給被測試設備的路由符合網上路由分別規律,且具有隨機特性,測試路由與被測試設備在實際網際網路中接收到的路由一致;從而可以準確的測試該設備處理實際路由的能力。
文檔編號H04L12/26GK101047571SQ20061008299
公開日2007年10月3日 申請日期2006年6月23日 優先權日2006年6月23日
發明者鄭遠明 申請人:華為技術有限公司