丁雪蓮
(內蒙古財經學院計算機信息管理系,內蒙古呼和浩特 010070)
隨著互聯網技術在全球的迅速發展,高效穩定的路由協議成為保障網絡性能的重要因素。路由協議測試是實現協議性能的有效手段,通過測試才能保證協議實現的正確性。在文獻[1]中,作者針對路由協議的特點,給出了路由協議的測試模式。在對BGP4[2]協議進行測試的過程中,采用了形式化與非形式化相結合的思想開展測試。在文獻[3]中,實現了一個可擴展的路由協議測試系統,在測試系統中采用工具命令語言TCL(Tool Command Language)來描述測試套。在文獻[4]中提出了一種測試目的自動生成方法,將這一方法應用到路由協議的測試中,具有很好的指導意義。文中給出了用XML來描述BGP4+[5]測試套的模板,并針對 BGP4+的實現Linux RedHat 9.0 Zebra 0.93b中的bgpd進行了一致性測試,列舉了部分測試例執行的測試結果,并對其進行了分析。
隨著IPv6的部署,原本只能支持IPv4的BGP4協議不能滿足實際需要,為使BGP4協議能夠支持IPv6協議,IETF修訂完成了RFC2858(Multiprotocol Extentions for BGP4,即,BGP4+)。在 BGP4+中,IETF定義了一個BGP的特殊屬性Multi-Protocol BGP(MP-BGP)來承載IPv6協議的路由信息。BGP4+是BGP協議的一個擴展,同BGP兼容,BGP4+可以在IPv4網絡上或者是IPv6網絡上運行。
在BGP4協議中有3部分與IPv4的信息相關,即,NEXT-HOP、NLRI和AGGREGATOR屬性。假設任何BGP發言者都有一個IPv4地址,那么要使BGP4支持多網絡層協議的路由只需要加入兩個功能:把特定的網絡層協議分別與NEXT-HOP和NLRI關聯起來。為此在BGP4中增加了兩個屬性:MP_REACH_NL-RI(Multiprotocol Reachable NLRI)和 MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI)。這兩個屬性是可選非傳遞的,不支持多協議擴展的BGP發言者會忽略這兩個屬性中攜帶的信息并且不轉發這些信息。MP_REACH_NLRI是結構比較復雜的屬性,詳細定義了所使用的網絡層協議的類型、下一跳的長度和地址、子網接入點信息和NLRI信息。如果在UPDATE消息中使用了MP_REACH_NLRI屬性則不需要原來IPv4的NEXI-HOP屬性。而MP_UNREACH_NLRI屬性相對簡單得多,如果在UPDATE消息中使用了MP_UNREACH_NLRI屬性則不需要攜帶其他的路徑屬性。這與RFC1771中規定的如果UP-DATE消息中不包含強制屬性就發送NOTIFICATION消息有很大的不同。BGP4+中還增加了對這兩個新屬性的錯誤處理。RFC2858中還采用了BGP能力通告協議以使對等體間轉發的UPDATE消息是可以承載IPv6網絡層可達信息的。BGP4的這種擴展機制能夠使BGP4攜帶多種網絡層協議的路由信息。
在協商達成一致后,開始交換路由信息。只在初始情況下,需要交互全部路由表。此后,采用增量更新的方式進行路由刷新。BGP4+的路由信息存儲在相應的路由信息庫中,經過處理、計算并通過決策過程選擇路由發送給其他BGP對等體,其中包括兩類操作:路由撤消和路由宣告。對于無效的路由信息,BGP4+通過發送帶有MP_UNREACH_NLRI路徑屬性的UPDATE消息撤消路由,每一條被撤消的路由都包含一個二元組 <Length/IP-Prefix>,其中 IPPrefix是一個地址前綴,表示一個網絡地址,其有效長度由Length說明;在一個UPDATE消息中可以撤消一條或多條路由信息。BGP4+聲明的路由則是由BGP4原來的路徑屬性和新增的MP_REACH_NLRI進行說明。MP_REACH_NLRI屬性的網絡可達性信息由一個或多個<Length/IP-Prefix>二元組構成,描述了通過Next Hop指明的網關可以到達的網絡。在交換路由信息的過程中,對等體會周期性地發送KEEPALIVE消息,維持雙方的連接。
把BGP4+的一致性測試過程大致劃分為4個階段。第一階段是根據協議文本得到一個獨立于所有協議實現的一致性抽象測試套,稱之為“一致性測試生成”。第二階段是實現特定一致性測試套的執行方法組成,稱作“一致性測試實現”。第三個階段為“一致性測試執行”,運行已經具體化的一致性測試例。第四階段為“測試判定”,對IUT的輸入輸出進行觀察,判定測試結果是否與協議說明一致,并將測試執行的結果記錄在BGP4+協議一致性測試報告中,進而對測試結果進行分析對比。
ISO/IEC 9646-2根據不同的控制觀察點定義了不同的抽象測試方法,現有的端系統抽象測試方法基本可以分為本地測試法、協調式測試法、分布式測試法和遠程測試法。由于遠程測試法的主要特點是并不要求能訪問IUT的上邊界,也不要求顯式的測試協調過程,而是依賴被測協議來實現IUT和LT間的同步。遠程測試法所采用的一個假設是IUT的狀態可由LT通過N-1層服務與之交換N層PDU來確定。測試判決則是由基于下測試器對IUT提供的激勵以及下測試器所觀察到的IUT的響應做出的。由于路由協議不需要為上層的協議提供服務,因此在路由協議的測試中不需要IUT存在,所以在對BGP4+路由協議的測試中采用了遠程測試法,測試環境如圖1所示。

圖1 一致性測試環境
測試套描述的是協議一致性測試數據,它在整個一致性測試過程中起著重要作用。ISO/IEC 9646-3中建議使用TTCN作為測試套的描述方法。TTCN是一種專為描述測試套的抽象測試套描述語言,具有明確的語法和語義,能處理一些復雜說明,且可執行。正因為TTCN有著諸多的優點,所以有許多標準測試套都是使用TTCN語言描述的。但是TTCN過于龐大,實現其編譯器很困難,而XML是一種界定文本數據的簡便而標準的方法,且XML具有可擴展性,允許設計人員根據需要定義自己的標記以及文檔結構,它可以將數據表示為具有層次結構的結構化文本形式,因此使用XML作為測試套描述語言。任何支持XML的編輯器都可以用來編輯測試套文件,任何支持XML的瀏覽器都可以顯示測試套,而且在瀏覽器中顯示測試套可以清楚的看到測試套的層次結構。
用XML描述BGP4+測試套的層次結構
在分析BGP4+測試套的功能之后,將用XML描述的BGP4+測試套分為5個層次如圖2所示,其中每個測試層次都有各自的測試目的,并根據IUT的響應對其被測的行為做出判決,得出測試結果。
對一個測試套的形式化描述分為:測試套(Test Suite)描述,測試組(Test Group)描述,測試例(Test Case)描述,測試步(Test Step)描述,測試事件(Test Event)描述。

圖2 測試套的層次結構
(1)測試套描述:對應于一個協議,如BGP4+(RFC2858)。包括測試套名稱,測試套相關信息,所包含的測試組的名稱及內容。
(2)測試組描述:對應于此協議的一個子協議或稱一個測試目標,一個測試套中可以包含多個測試組。該描述包括測試組名稱,測試組信息,所包含的測試例的名稱及內容。
(3)測試例描述:對應于一個標準協議的某一項功能描述,如 RFC2858中關于處理最大長度4096 Byte的UPDATE消息的描述。一個測試組由一個以上的測試例組成。該描述包括測試例名稱,測試目的,測試例相關信息,所包含的測試數據包的名稱及內容,測試例的動態行為描述。
(4)測試步描述:該描述包括測試狀態初始化、發包、收包等,每個動作就是一個測試步。一個測試例包含一個以上的測試步。
(5)測試事件描述:測試套的最小單元是測試事件,測試事件是不可分割的最小單位。測試步是由一些測試事件組合起來完成一個特定功能的集合。
通過以上定義的XML模板,對BGP4+的測試例進行了描述,并運用遠程測試法對BGP4+實現Linux RedHat 9.0 Zebra 0.93b中的bgpd進行一致性測試。列舉一個BGP4+連接建立功能測試組的測試例,如表1所示。

表1 測試舉例
用XML描述并保存該測試例,如圖3所示,將這個測試例在Linux環境下的BGP4+協議實驗網中執行,得到的執行結果與預期結果相符,最終結論為PASS。
參考ISO/IEC9646的建議,根據協議的測試目的和BGP4+協議標準,抽象出一個測試套,在這個測試套中包含8個測試組,分別是:(1)互連行為狀態機測試組;(2)消息格式一致性測試組;(3)消息處理功能測試組;(4)路由處理功能測試組;(5)路由流量控制功能測試組;(6)BGP4+差錯處理功能測試組;(7)路由反射功能測試組;(8)Community屬性處理功能測試組。每個測試組中又抽象出不同數目的測試例。
使用這些測試例對Linux RedHat 9.0中的路由協議軟件包Zebra 0.93b進行了一致性測試。下面以BGP4+的UPDATE消息格式一致性測試組為例,給出測試例列表及其測試結果,其測試例列表如表2所示。

圖3 XML測試套文件

表2 測試例列表
本文對下一代域間路由協議BGP4+進行了一致性測試研究,文中使用XML定義了協議測試套的模板,并用該模板實現了對BGP4+測試套的描述,通過對BGP4+協議實現進行測試,發現了被測實現上的一些不一致問題。進一步的工作包括建立完整的BGP4+協議測試系統,同時將針對測試中發現的不一致的地方對被測實現進行分析,在使用XML進行測試套的描述方面還需要進一步的規范化,通用化。
[1] 趙邑新,吳建平,韓博.路由協議測試研究――邊界網關路由協議 BGP-4測試[J].通信學報,2001,22(9):91-98.
[2] Network Working Group.RFC 1771:A Border Gateway Protocol 4(BGP -4)[S].USA:IBM Corp.,1995.
[3] 李建,周顥,趙保華.路由協議一致性測試系統研究及實現[J].計算機工程與應用,2005(16):119-123.
[4] HENNIGER O,LU M,URAL H.Automatic generation of test purposes for testing distributed systems[J].Information& Software Technology,2003,45(12):793-803.
[5] Network Working Group.RFC 2858:Multiprotocol Extensions for BGP-4[S].USA:IBM Corp.,2000.