一種測試路由轉發表正確性的方法和系統的制作方法
【專利摘要】本發明本涉及IP路由測試技術。本發明公開了一種測試路由轉發表正確性的方法,包括如下步驟:A、在待測試設備上增加或刪除路由表項,當增加路由表項時向待測設備的接口發送匹配所述路由表項的數據流,刪除路由表項時,不取消所述數據流的發送;B、檢查數據流的轉發結果是否與預期的測試結果相同,若相同則將數據流查找的路由結果信息記錄到路由結果信息記錄表,進入步驟C;否則說明路由表中的路由不正確,結束測試;C、比較記錄的路由表項在路由表中的所有存儲節點的轉發結果信息,獲得所述路由表項是否正確的測試結果;D、判斷所有的路由表項是否測試完成,如是,則結束測試,否則返回步驟A。本發明同時公開了測試系統。本發明能夠完備測試路由表。
【專利說明】一種測試路由轉發表正確性的方法和系統
【技術領域】
[0001]本發明本涉及IP路由測試技術,特別涉及一種測試路由轉發表正確性的方法和系統。
【背景技術】
[0002]隨著網絡技術的發展,在網絡擴張的同時,在網絡傳輸上為滿足網絡容量擴大和網絡傳輸速率增長的需求,網絡中各個節點的轉發設備中的路由表的容量也擴大了,并且為了提高轉發性能,在各種轉發設備中會使用不同的路由算法和數據結構來構建路由表。如有的轉發設備使用TCAM(ternary content addressable memory,三態內容尋址存儲器),有的使用mtrie,有的使用hash,有的使用radix樹,有的使用B樹等路由算法和數據結構來構建路由表,并且即使同一設備中的IPV4和IPV6也可能使用不同的路由算法和數據結構。
[0003]不同的IP轉發設備可以在內部有不同的路由算法,但都要求能正確轉發,尤其是在網絡路由動蕩后,是否仍舊能正確轉發是關乎轉發設備穩定性的重要方面,因此路由表的正確性測試是轉發設備測試的關鍵技術之一。而豐富多樣的內部路由算法,大量的路由表項,以及在路由振蕩的測試場景中,如何才能保證測試的完備性也是路由測試的難點。
[0004]一種常用的路由表正確性測試方法是:通過shell命令來查看路由表項的正確性。在此方法中,要求檢查在增加或刪除路由操作后的路由表項是否正確,并且需要查看變化后的路由表中的相關數據結構的節點的轉發信息是否正確。此方法主要應用的是路由表的遍歷,不同的路由算法和數據結構,查看的信息和節點數目都會不同,但由于在轉發數據時,是應用路由的最長匹配查找,故此方法的缺點是遍歷的正確,不一定等于轉發的正確,單獨只用此方法不能完備地測試路由表的正確性。
[0005]另一種常用的測試方法是:在接口上發送數據流,檢查數據流是否與預期相同被正確轉發。在此方法中,如果想完整測試一條路由表項,需要發送此條路由表項所能覆蓋的以此網段為目的的主機數量相同條數的數據流。如路由表項為:10.0.0.0/8的路由rl,由于掩碼是8,那么此路由所能匹配的主機數量是X = 2(32_8) = 224 = 16M個,如果想完整測試此條路由,需要在接口上發送16M條數據流。而目前即使在接入層的轉發設備中,整個路由表的容量都能達到Y = 50K條路由表項,如果用此方法,測試完整的路由表,那某個時刻的數據流數是X*Y。這是相當大的一個數,而在高端轉發設備中,路由表容量會更大,此時測試需要的數據流會更大。可能會達到輔助測試設備的極限,而測試所耗時間也會導致測試周期相當長。此方法的優點是使用是最長匹配方法來驗證路由表,缺點也是明顯的:一是需要發送非常多的數據流,對輔助測試設備的要求較高,其二是在路由動蕩過程中,該測試方法看不到路由變化的細節,可能會因為動態變化而無法驗證出路由動蕩過程中的正確性。
[0006]以上兩種方法分別涉及到的是遍歷路由算法和查找路由算法,二者是分離的,故在路由動蕩時,某個中間過程導致的路由表項的變化,可能會被忽略或掩蓋從而留下故障隱患。另外,由于路由表可能使用不同的路由算法和數據結構來實現,而每個路由表項中的中間節點信息根據路由算法或數據結構的不同,存儲的信息也不同,在一個測試中僅做遍歷或僅做查找,都還不充分,需要將一個路由項的每個節點都遍歷到并且進行精確匹配,這就要求針對一個路由表項生成多個數據流進行測試。當路由表較大時,數據流較多,利用現有方法要充分測試路由表的正確性常常要耗費巨大的人力物力和時間。
【發明內容】
[0007]有鑒于此,本發明的目的是提供一種路由表正確性的測試方法,縮短測試周期,減少測試人力和測試資源的占用。
[0008]本發明實現上述目的的技術方案是,一種測試路由轉發表正確性的方法,其特征在于,包括如下步驟:
[0009]A、在待測試設備上增加或刪除路由表項,當增加路由表項時向待測設備的接口發送匹配所述路由表項的數據流,刪除路由表項時,不取消所述數據流的發送;
[0010]B、檢查數據流的轉發結果是否與預期的測試結果相同,若相同則將數據流查找的路由結果信息記錄到路由結果信息記錄表,進入步驟C ;否則說明路由表中的路由不正確,結束測試;
[0011]C、比較記錄的路由表項在路由表中的所有存儲節點的轉發結果信息,獲得所述路由表項是否正確的測試結果;
[0012]D、判斷所有的路由表項是否測試完成,如是,則結束測試,否則返回步驟A。
[0013]進一步的,所述步驟A中,增加或刪除路由表項時,至少向待測設備的接口發送匹配所述路由表項的單條數據流。
[0014]具體的,所述路由結果信息至少包括:目的IP地址、路由前綴、掩碼、下一跳地址、網關地址、出接口和路由表項的內部指針。
[0015]具體的,所述步驟B具體為:
[0016]B1、檢查數據流的轉發結果與預期的測試結果是否相同,若相同則進入步驟B2,否則說明路由表錯誤,結束測試;
[0017]B2、在路由結果信息記錄表中查找是否已記錄與預期的測試結果相同的路由結果信息,如是則完成該步驟,否則進入步驟B3 ;
[0018]B3、在路由結果記錄表中添加與預期的測試結果相同的路由表項的路由結果信肩、O
[0019]具體的,所述步驟C具體為:
[0020]Cl、遍歷記錄的路由結果信息在路由表中的各個存儲節點,并比較各個存儲節點的路由信息與記錄的路由結果是否相同,如是,則說明路由正確,結束檢測;否則進入步驟C2 ;
[0021]C2、查找增加或刪除路由的父路由和子路由,查找路由結果不相同的節點的父路由和子路由,比較此二者的父路由和子路由,如果都相同,則說明此節點的路由不正確,結束檢測;否則進入步驟C3 ;
[0022]C3、以路由結果不同的節點構造目的IP地址,查找路由記錄結果表,找不到表項,說明路由錯誤,結束檢測;找到表項,比較結果記錄表中的路由結果與現在節點的路由結果,如果不同,路由錯誤,否則路由正確。
[0023]本發明的另一個目的是,提供一種測試路由轉發表正確性的系統,包括測試儀和待測設備,其特征在于,
[0024]所述測試儀,用于向待測設備的接口發送與增加的路由表項匹配的數據流;且當待測設備刪除所述增加的路由表項時,不取消所述數據流的發送;
[0025]所述待測設備包括路由算法單元和路由測試單元,所述路由算法單元,包括路由算法和路由表,用于提供路由表的操作接口 ;
[0026]所述路由測試單元,包括路由檢測模塊、路由結果管理模塊和接口模塊;
[0027]所述接口模塊,用于完成不同路由表或路由算法的隔離和適配,為路由檢測單元提供接口 ;
[0028]所述路由檢測模塊,用于完成路由檢測的處理邏輯,調用路由結果管理模塊提供的操作接口進行邏輯判斷和處理;檢查數據流的轉發結果是否與預期的測試結果相同,若相同則通知路由結果管理模塊將數據流查找的路由結果信息記錄到路由結果信息記錄表,比較記錄的路由表項在路由表中的所有存儲節點的轉發結果信息,獲得所述路由轉發表項是否正確的測試結果;否則判斷路由表中的路由不正確,結束測試;
[0029]所述路由結果管理模塊,用于將數據流查找的路由結果信息記錄到路由結果信息記錄表,管理路由結果信息記錄表。
[0030]進一步的,所述測試儀進一步用于,增加或刪除路由表項時,至少向待測設備的接口發送匹配所述路由表項的單條數據流。
[0031]具體的,所述路由結果信息至少包括:目的IP地址、路由前綴、掩碼、下一跳地址、網關地址、出接口和路由表項的內部指針。
[0032]具體的,所述路由檢測模塊具體用于,
[0033]檢查數據流的轉發結果與預期的測試結果是否相同,如果不同,則說明路由表錯誤,結束測試;
[0034]如果相同,在路由結果記錄表中查找是否已記錄與預期的測試結果相同的路由結果;如果沒有,則添加一條結果信息表項。
[0035]進一步的,所述路由檢測模塊還用于,
[0036]遍歷記錄的路由表項對應的各個存儲節點,并將節點的路由結果與記錄的路由結果比較,相同,說明路由正確,結束檢測;否則查找增加或刪除路由的父路由和子路由,查找路由結果不相同的節點的父路由和子路由,比較此二者的父路由和子路由,如果都相同,則說明此節點的路由不正確,結束檢測;否則以路由結果不同的節點構造目的IP地址,查找路由記錄結果表,找不到表項,說明路由錯誤,結束檢測;找到表項,比較結果記錄表中的路由結果與現在節點的路由結果,如果不同,路由錯誤,否則路由正確。
[0037]本發明的有益效果是,在測試過程中將路由遍歷和路由匹配查找結合起來,能夠覆蓋測試到每條路由表項的所有節點,做到了完備測試路由表。并且本發明的技術方案與具體的路由算法和數據結構關系不密切,方便應用于自動化測試中測試各種轉發設備。除了靜態路由表測試外,在大量路由動蕩情形下,本發明仍舊能驗證變化過程中的路由轉發表項的正確性,使用本發明可以節約人力、時間和測試資源。
【專利附圖】
【附圖說明】
[0038]圖1是測試路由轉發表正確性的方法流程圖;
[0039]圖2是檢查并記錄路由結果的流程圖;
[0040]圖3是路由檢測的流程圖;
[0041]圖4是測試系統的組成結構示意圖。
【具體實施方式】
[0042]下面結合附圖及實施例,詳細描述本發明的技術方案。
[0043]本發明的技術方案,適用于測試各種路由表,如IPV4的路由表,IPV6的路由表等,本發明的測試方法不需要關心具體路由表是使用什么結構組織路由前綴的,如mtrie樹,radix樹,hash, b樹等。以下為方便理解和描述,以IPV4路由表,mtrie結構為例進行說明。如圖1所示具體流程包括:
[0044]101,測試準備。首先確認物理連接正常,然后啟動測試腳本,配置測試儀和待測設備(以下使用簡稱DUT);測試儀可以是具備收發包和統計功能的計算機,也可以是專用網絡測試儀器。對DUT的配置,主要包括配置接口,IP地址,路由協議等等。
[0045]102,路由表建立。利用測試腳本在DUT上增加一條或多條路由表項,并在網絡測試儀器上向待測設備的接口發送匹配該路由的數據流,每條路由至少發送一條數據流。也可以刪除一條或多條路由表項,但保持原先的數據流不變。即保證增加或刪除的路由表項,至少發送一條數據流。在測試腳本中對這些數據流有相應的轉發結果預期的設置。
[0046]在此步驟中,可以添加和刪除一條或多條路由。此步驟驗證了路由表的添加和刪除操作是否正常,并且在轉發數據流的過程中驗證了路由的最長匹配查找算法,可以排除大部分路由表的正確性問題。經過多次重復102步驟后,就可以根據需要建立起完整的路由表。
[0047]此步驟中可以進行路由動蕩的測試,即快速的增加或刪除多條路由。
[0048]103,初步檢查并記錄路由結果。在步驟102的每一條變化路由(新增或刪除的路由)時,檢查數據流轉發結果與結果預期是否符合,并記錄和更新路由結果記錄表。如圖2所示,如果與預期不符合,則說明路由錯誤,記錄測試結果并結束測試。如果符合預期結果,先查找路由結果記錄表中是否有此路由結果記錄,如果沒有則記錄此數據流路由查找的結果到路由結果記錄表中。路由結果信息至少包括如下內容:目的IP地址、路由前綴、掩碼、下一跳地址、網關地址、出接口地址以及路由表項的內部指針。路由結果記錄表主要是需要精確匹配,可以使用方便的數據結構來組織此表的結構。此表的組織結構與待測試的路由表的結構無關。簡單的可以使用hash表來組織此表。
[0049]在此步驟中,當增加一條路由時,數據流的轉發結果可以是按此路由的結果正常轉發或按子路由結果轉發(有更長掩碼的路由),或者按照負載均衡的路由結果轉發。
[0050]當刪除路由時,數據流轉發結果可以是不能轉發丟棄報文,也可以是正常轉發,還可以是找到了父路由(前綴相同,子網掩碼更短的路由)進行了轉發。
[0051]104,路由檢測。遍歷記錄的路由表項的所有節點,檢測其轉發結果信息是否正確,具體如圖3所示。在數據流的查找結果正確后,在301步驟中,調用路由表的遍歷接口,遍歷此路由的所有存儲這條路由表項的節點。不同的路由表結構,存儲節點不一樣,此遍歷接口由各路由算法提供自己的遍歷接口。以mtrie樹的路由表(查找步長為8,每塊中有256個節點)為例,如果路由前綴是r3:10.40.0.0/18,如果沒有子路由,則此路由的節點數為4個,如果有子路由r4:10.40.0.0/30,則r3的路由節點數為255個,通過mtrie的條件遍歷接口,可以找到第3級的塊,如果路由記錄結果是流10.40.0.1的轉發結果,則還需要遍歷節點 10.40.0.0 ?10.40.0.255,10.40.1.x(x 是 0-255),10.40.2.x, 10.40.3.x 的路由結果進行比較。首先假設沒有子路由r4,則在添加r3時,比較各個節點的結果,發現各個節點的路由結果與記錄表中的相同。假設在加r3前,有子路由r4,并且假設r3沒有父路由,則在節點比較到10.40.0.0時,發現路由結果與記錄結果不同,進入步驟302,此時,查找r3的父路由為空,但r4的父路由是r3。進入303,此時,以10.40.0.1為目的地址,查找路由結果記錄表,找到了 r4的路由結果記錄表項,將此路由節點的路由結果與記錄表中的路由結果比較,相同,則說明路由正確,不同,則說明路由錯誤。在步驟302中,如果r3、r4的父路由、子路由都相同,但節點中的路由結果不同的話,說明表中節點路由錯誤,結束測試,記錄測試結果。
[0052]105,測試判斷,判斷路由測試完成了沒有,如果還需要增加或刪除路由表項,就進入102步驟,否則結束測試。
[0053]本發明測試路由轉發表正確性的系統結構如圖4所示,包括:待測設備410,測試儀器420。
[0054]測試儀器420可以是各種有收發報文功能的設備如PC或測試儀,如果需要自動化測試,則可由測試腳本進行控制。用于向待測設備的接口發送與增加的路由表項匹配的數據流;且當待測設備刪除所述增加的路由表項時,不取消所述數據流的發送;所述待測設備包括路由檢測模塊和路由結果管理模塊。
[0055]所述待測設備410包括路由算法單元411和路由測試單元412,所述路由算法單元411,由各種路由算法和路由表組成,是待測試的實體。如IPV4的radix路由表,或mtrie路由表,或b+樹路由表等。對于一種DUT,一般會包含一到兩種路由表。此單元提供不同路由表的添加,刪除,遍歷,查找等接口,如果路由表結構不同,則路由表的操作接口也不同。包括至少一種路由算法和路由表,用于提供路由表的操作接口。
[0056]所述路由測試單元412包括接口模塊4121、路由檢測模塊4122和路由結果管理模塊 4123 ;
[0057]所述接口模塊4121,用于完成不同路由表或路由算法的隔離和適配,為路由檢測單元提供統一的通用接口。
[0058]所述路由檢測模塊4122,用于完成路由檢測的處理邏輯,調用路由結果管理模塊提供的操作接口進行邏輯判斷和處理;檢查數據流的轉發結果是否與預期的測試結果相同,如是,則通知路由結果管理模塊將數據流查找的路由結果信息記錄到路由結果信息記錄表,比較記錄的路由表項在路由表中的所有存儲節點的轉發結果信息,獲得所述路由轉發表項是否正確的測試結果;否則判斷路由表中的路由不正確,結束測試;
[0059]所述路由結果管理模塊4123,用于將數據流查找的路由結果信息記錄到路由結果信息記錄表,管理路由結果信息記錄表。該路由結果信息記錄表是獨立的表,僅用于測試,是動態生成和變化的。
[0060]綜上所述,本系統是個通用的路由測試系統,可以完備地測試各種路由表的正確性,還能方便地進行自動化部署。
【權利要求】
1.一種測試路由轉發表正確性的方法,其特征在于,包括如下步驟: A、在待測試設備上增加或刪除路由表項,當增加路由表項時向待測設備的接口發送匹配所述路由表項的數據流,刪除路由表項時,不取消所述數據流的發送; B、檢查數據流的轉發結果是否與預期的測試結果相同,若相同則將數據流查找的路由結果信息記錄到路由結果信息記錄表,進入步驟C ;否則說明路由表中的路由不正確,結束測試; C、比較記錄的路由表項在路由表中的所有存儲節點的轉發結果信息,獲得所述路由表項是否正確的測試結果; D、判斷所有的路由表項是否測試完成,如是,則結束測試,否則返回步驟A。
2.根據權利要求1所述的一種測試路由轉發表正確性的方法,其特征在于,所述步驟A中,增加或刪除路由表項時,至少向待測設備的接口發送匹配所述路由表項的單條數據流。
3.根據權利要求1所述的一種測試路由轉發表正確性的方法,其特征在于,所述路由結果信息至少包括:目的IP地址、路由前綴、掩碼、下一跳地址、網關地址、出接口和路由表項的內部指針。
4.根據權利要求1所述的一種測試路由轉發表正確性的方法,其特征在于,所述步驟B具體為: B1、檢查數據流的轉發結果與預期的測試結果是否相同,若相同則進入步驟B2,否則說明路由表錯誤,結束測試; B2、在路由結果信息記錄表中查找是否已記錄與預期的測試結果相同的路由結果信息,如是則完成該步驟,否則進入步驟B3 ; B3、在路由結果記錄表中添加與預期的測試結果相同的路由表項的路由結果信息。
5.根據權利要求1所述的一種測試路由轉發表正確性的方法,其特征在于,所述步驟C具體為:Cl、遍歷記錄的路由結果信息在路由表中的各個存儲節點,并比較各個存儲節點的路由信息與記錄的路由結果是否相同,如是,則說明路由正確,結束檢測;否則進入步驟C2 ;C2、查找增加或刪除路由的父路由和子路由,查找路由結果不相同的節點的父路由和子路由,比較此二者的父路由和子路由,如果都相同,則說明此節點的路由不正確,結束檢測;否則進入步驟C3 ; C3、以路由結果不同的節點構造目的IP地址,查找路由記錄結果表,找不到表項,說明路由錯誤,結束檢測;找到表項,比較結果記錄表中的路由結果與現在節點的路由結果,如果不同,路由錯誤,否則路由正確。
6.一種測試路由轉發表正確性的系統,包括測試儀和待測設備,其特征在于, 所述測試儀,用于向待測設備的接口發送與增加的路由表項匹配的數據流;且當待測設備刪除所述增加的路由表項時,不取消所述數據流的發送; 所述待測設備包括路由算法單元和路由測試單元,所述路由算法單元,包括路由算法和路由表,用于提供路由表的操作接口 ; 所述路由測試單元,包括路由檢測模塊、路由結果管理模塊和接口模塊; 所述接口模塊,用于完成不同路由表或路由算法的隔離和適配,為路由檢測單元提供接口 ; 所述路由檢測模塊,用于完成路由檢測的處理邏輯,調用路由結果管理模塊提供的操作接口進行邏輯判斷和處理;檢查數據流的轉發結果是否與預期的測試結果相同,若相同則通知路由結果管理模塊將數據流查找的路由結果信息記錄到路由結果信息記錄表,比較記錄的路由表項在路由表中的所有存儲節點的轉發結果信息,獲得所述路由轉發表項是否正確的測試結果;否則判斷路由表中的路由不正確,結束測試; 所述路由結果管理模塊,用于將數據流查找的路由結果信息記錄到路由結果信息記錄表,管理路由結果信息記錄表。
7.根據權利要求6所述的一種測試路由轉發表正確性的系統,其特征在于,所述測試儀進一步用于,增加或刪除路由表項時,至少向待測設備的接口發送匹配所述路由表項的單條數據流。
8.根據權利要求6所述的一種測試路由轉發表正確性的系統,其特征在于,所述路由結果信息至少包括:目的IP地址、路由前綴、掩碼、下一跳地址、網關地址、出接口和路由表項的內部指針。
9.根據權利要求6所述的一種測試路由轉發表正確性的系統,其特征在于,所述路由檢測模塊具體用于, 檢查數據流的轉發結果與預期的測試結果是否相同,如果不同,則說明路由表錯誤,結束測試; 如果相同,在路由結果記錄表中查找是否已記錄與預期的測試結果相同的路由結果;如果沒有,則添加一條結果信息表項。
10.根據權利要求6所述的一種測試路由轉發表正確性的系統,其特征在于,所述路由檢測模塊還用于, 遍歷記錄的路由表項對應的各個存儲節點,并將節點的路由結果與記錄的路由結果比較,相同,說明路由正確,結束檢測;否則查找增加或刪除路由的父路由和子路由,查找路由結果不相同的節點的父路由和子路由,比較此二者的父路由和子路由,如果都相同,則說明此節點的路由不正確,結束檢測;否則以路由結果不同的節點構造目的IP地址,查找路由記錄結果表,找不到表項,說明路由錯誤,結束檢測;找到表項,比較結果記錄表中的路由結果與現在節點的路由結果,如果不同,路由錯誤,否則路由正確。
【文檔編號】H04L12/26GK104301186SQ201410625947
【公開日】2015年1月21日 申請日期:2014年11月7日 優先權日:2014年11月7日
【發明者】劉寶琴 申請人:邁普通信技術股份有限公司