丁雪蓮
(內(nèi)蒙古財(cái)經(jīng)學(xué)院計(jì)算機(jī)信息管理系,內(nèi)蒙古呼和浩特 010070)
隨著互聯(lián)網(wǎng)技術(shù)在全球的迅速發(fā)展,高效穩(wěn)定的路由協(xié)議成為保障網(wǎng)絡(luò)性能的重要因素。路由協(xié)議測(cè)試是實(shí)現(xiàn)協(xié)議性能的有效手段,通過(guò)測(cè)試才能保證協(xié)議實(shí)現(xiàn)的正確性。在文獻(xiàn)[1]中,作者針對(duì)路由協(xié)議的特點(diǎn),給出了路由協(xié)議的測(cè)試模式。在對(duì)BGP4[2]協(xié)議進(jìn)行測(cè)試的過(guò)程中,采用了形式化與非形式化相結(jié)合的思想開(kāi)展測(cè)試。在文獻(xiàn)[3]中,實(shí)現(xiàn)了一個(gè)可擴(kuò)展的路由協(xié)議測(cè)試系統(tǒng),在測(cè)試系統(tǒng)中采用工具命令語(yǔ)言TCL(Tool Command Language)來(lái)描述測(cè)試套。在文獻(xiàn)[4]中提出了一種測(cè)試目的自動(dòng)生成方法,將這一方法應(yīng)用到路由協(xié)議的測(cè)試中,具有很好的指導(dǎo)意義。文中給出了用XML來(lái)描述BGP4+[5]測(cè)試套的模板,并針對(duì) BGP4+的實(shí)現(xiàn)Linux RedHat 9.0 Zebra 0.93b中的bgpd進(jìn)行了一致性測(cè)試,列舉了部分測(cè)試?yán)龍?zhí)行的測(cè)試結(jié)果,并對(duì)其進(jìn)行了分析。
隨著IPv6的部署,原本只能支持IPv4的BGP4協(xié)議不能滿足實(shí)際需要,為使BGP4協(xié)議能夠支持IPv6協(xié)議,IETF修訂完成了RFC2858(Multiprotocol Extentions for BGP4,即,BGP4+)。在 BGP4+中,IETF定義了一個(gè)BGP的特殊屬性Multi-Protocol BGP(MP-BGP)來(lái)承載IPv6協(xié)議的路由信息。BGP4+是BGP協(xié)議的一個(gè)擴(kuò)展,同BGP兼容,BGP4+可以在IPv4網(wǎng)絡(luò)上或者是IPv6網(wǎng)絡(luò)上運(yùn)行。
在BGP4協(xié)議中有3部分與IPv4的信息相關(guān),即,NEXT-HOP、NLRI和AGGREGATOR屬性。假設(shè)任何BGP發(fā)言者都有一個(gè)IPv4地址,那么要使BGP4支持多網(wǎng)絡(luò)層協(xié)議的路由只需要加入兩個(gè)功能:把特定的網(wǎng)絡(luò)層協(xié)議分別與NEXT-HOP和NLRI關(guān)聯(lián)起來(lái)。為此在BGP4中增加了兩個(gè)屬性:MP_REACH_NL-RI(Multiprotocol Reachable NLRI)和 MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI)。這兩個(gè)屬性是可選非傳遞的,不支持多協(xié)議擴(kuò)展的BGP發(fā)言者會(huì)忽略這兩個(gè)屬性中攜帶的信息并且不轉(zhuǎn)發(fā)這些信息。MP_REACH_NLRI是結(jié)構(gòu)比較復(fù)雜的屬性,詳細(xì)定義了所使用的網(wǎng)絡(luò)層協(xié)議的類(lèi)型、下一跳的長(zhǎng)度和地址、子網(wǎng)接入點(diǎn)信息和NLRI信息。如果在UPDATE消息中使用了MP_REACH_NLRI屬性則不需要原來(lái)IPv4的NEXI-HOP屬性。而MP_UNREACH_NLRI屬性相對(duì)簡(jiǎn)單得多,如果在UPDATE消息中使用了MP_UNREACH_NLRI屬性則不需要攜帶其他的路徑屬性。這與RFC1771中規(guī)定的如果UP-DATE消息中不包含強(qiáng)制屬性就發(fā)送NOTIFICATION消息有很大的不同。BGP4+中還增加了對(duì)這兩個(gè)新屬性的錯(cuò)誤處理。RFC2858中還采用了BGP能力通告協(xié)議以使對(duì)等體間轉(zhuǎn)發(fā)的UPDATE消息是可以承載IPv6網(wǎng)絡(luò)層可達(dá)信息的。BGP4的這種擴(kuò)展機(jī)制能夠使BGP4攜帶多種網(wǎng)絡(luò)層協(xié)議的路由信息。
在協(xié)商達(dá)成一致后,開(kāi)始交換路由信息。只在初始情況下,需要交互全部路由表。此后,采用增量更新的方式進(jìn)行路由刷新。BGP4+的路由信息存儲(chǔ)在相應(yīng)的路由信息庫(kù)中,經(jīng)過(guò)處理、計(jì)算并通過(guò)決策過(guò)程選擇路由發(fā)送給其他BGP對(duì)等體,其中包括兩類(lèi)操作:路由撤消和路由宣告。對(duì)于無(wú)效的路由信息,BGP4+通過(guò)發(fā)送帶有MP_UNREACH_NLRI路徑屬性的UPDATE消息撤消路由,每一條被撤消的路由都包含一個(gè)二元組 <Length/IP-Prefix>,其中 IPPrefix是一個(gè)地址前綴,表示一個(gè)網(wǎng)絡(luò)地址,其有效長(zhǎng)度由Length說(shuō)明;在一個(gè)UPDATE消息中可以撤消一條或多條路由信息。BGP4+聲明的路由則是由BGP4原來(lái)的路徑屬性和新增的MP_REACH_NLRI進(jìn)行說(shuō)明。MP_REACH_NLRI屬性的網(wǎng)絡(luò)可達(dá)性信息由一個(gè)或多個(gè)<Length/IP-Prefix>二元組構(gòu)成,描述了通過(guò)Next Hop指明的網(wǎng)關(guān)可以到達(dá)的網(wǎng)絡(luò)。在交換路由信息的過(guò)程中,對(duì)等體會(huì)周期性地發(fā)送KEEPALIVE消息,維持雙方的連接。
把BGP4+的一致性測(cè)試過(guò)程大致劃分為4個(gè)階段。第一階段是根據(jù)協(xié)議文本得到一個(gè)獨(dú)立于所有協(xié)議實(shí)現(xiàn)的一致性抽象測(cè)試套,稱(chēng)之為“一致性測(cè)試生成”。第二階段是實(shí)現(xiàn)特定一致性測(cè)試套的執(zhí)行方法組成,稱(chēng)作“一致性測(cè)試實(shí)現(xiàn)”。第三個(gè)階段為“一致性測(cè)試執(zhí)行”,運(yùn)行已經(jīng)具體化的一致性測(cè)試?yán)?。第四階段為“測(cè)試判定”,對(duì)IUT的輸入輸出進(jìn)行觀察,判定測(cè)試結(jié)果是否與協(xié)議說(shuō)明一致,并將測(cè)試執(zhí)行的結(jié)果記錄在BGP4+協(xié)議一致性測(cè)試報(bào)告中,進(jìn)而對(duì)測(cè)試結(jié)果進(jìn)行分析對(duì)比。
ISO/IEC 9646-2根據(jù)不同的控制觀察點(diǎn)定義了不同的抽象測(cè)試方法,現(xiàn)有的端系統(tǒng)抽象測(cè)試方法基本可以分為本地測(cè)試法、協(xié)調(diào)式測(cè)試法、分布式測(cè)試法和遠(yuǎn)程測(cè)試法。由于遠(yuǎn)程測(cè)試法的主要特點(diǎn)是并不要求能訪問(wèn)IUT的上邊界,也不要求顯式的測(cè)試協(xié)調(diào)過(guò)程,而是依賴(lài)被測(cè)協(xié)議來(lái)實(shí)現(xiàn)IUT和LT間的同步。遠(yuǎn)程測(cè)試法所采用的一個(gè)假設(shè)是IUT的狀態(tài)可由LT通過(guò)N-1層服務(wù)與之交換N層PDU來(lái)確定。測(cè)試判決則是由基于下測(cè)試器對(duì)IUT提供的激勵(lì)以及下測(cè)試器所觀察到的IUT的響應(yīng)做出的。由于路由協(xié)議不需要為上層的協(xié)議提供服務(wù),因此在路由協(xié)議的測(cè)試中不需要IUT存在,所以在對(duì)BGP4+路由協(xié)議的測(cè)試中采用了遠(yuǎn)程測(cè)試法,測(cè)試環(huán)境如圖1所示。
圖1 一致性測(cè)試環(huán)境
測(cè)試套描述的是協(xié)議一致性測(cè)試數(shù)據(jù),它在整個(gè)一致性測(cè)試過(guò)程中起著重要作用。ISO/IEC 9646-3中建議使用TTCN作為測(cè)試套的描述方法。TTCN是一種專(zhuān)為描述測(cè)試套的抽象測(cè)試套描述語(yǔ)言,具有明確的語(yǔ)法和語(yǔ)義,能處理一些復(fù)雜說(shuō)明,且可執(zhí)行。正因?yàn)門(mén)TCN有著諸多的優(yōu)點(diǎn),所以有許多標(biāo)準(zhǔn)測(cè)試套都是使用TTCN語(yǔ)言描述的。但是TTCN過(guò)于龐大,實(shí)現(xiàn)其編譯器很困難,而XML是一種界定文本數(shù)據(jù)的簡(jiǎn)便而標(biāo)準(zhǔn)的方法,且XML具有可擴(kuò)展性,允許設(shè)計(jì)人員根據(jù)需要定義自己的標(biāo)記以及文檔結(jié)構(gòu),它可以將數(shù)據(jù)表示為具有層次結(jié)構(gòu)的結(jié)構(gòu)化文本形式,因此使用XML作為測(cè)試套描述語(yǔ)言。任何支持XML的編輯器都可以用來(lái)編輯測(cè)試套文件,任何支持XML的瀏覽器都可以顯示測(cè)試套,而且在瀏覽器中顯示測(cè)試套可以清楚的看到測(cè)試套的層次結(jié)構(gòu)。
用XML描述BGP4+測(cè)試套的層次結(jié)構(gòu)
在分析BGP4+測(cè)試套的功能之后,將用XML描述的BGP4+測(cè)試套分為5個(gè)層次如圖2所示,其中每個(gè)測(cè)試層次都有各自的測(cè)試目的,并根據(jù)IUT的響應(yīng)對(duì)其被測(cè)的行為做出判決,得出測(cè)試結(jié)果。
對(duì)一個(gè)測(cè)試套的形式化描述分為:測(cè)試套(Test Suite)描述,測(cè)試組(Test Group)描述,測(cè)試?yán)?Test Case)描述,測(cè)試步(Test Step)描述,測(cè)試事件(Test Event)描述。
圖2 測(cè)試套的層次結(jié)構(gòu)
(1)測(cè)試套描述:對(duì)應(yīng)于一個(gè)協(xié)議,如BGP4+(RFC2858)。包括測(cè)試套名稱(chēng),測(cè)試套相關(guān)信息,所包含的測(cè)試組的名稱(chēng)及內(nèi)容。
(2)測(cè)試組描述:對(duì)應(yīng)于此協(xié)議的一個(gè)子協(xié)議或稱(chēng)一個(gè)測(cè)試目標(biāo),一個(gè)測(cè)試套中可以包含多個(gè)測(cè)試組。該描述包括測(cè)試組名稱(chēng),測(cè)試組信息,所包含的測(cè)試?yán)拿Q(chēng)及內(nèi)容。
(3)測(cè)試?yán)枋?對(duì)應(yīng)于一個(gè)標(biāo)準(zhǔn)協(xié)議的某一項(xiàng)功能描述,如 RFC2858中關(guān)于處理最大長(zhǎng)度4096 Byte的UPDATE消息的描述。一個(gè)測(cè)試組由一個(gè)以上的測(cè)試?yán)M成。該描述包括測(cè)試?yán)Q(chēng),測(cè)試目的,測(cè)試?yán)嚓P(guān)信息,所包含的測(cè)試數(shù)據(jù)包的名稱(chēng)及內(nèi)容,測(cè)試?yán)膭?dòng)態(tài)行為描述。
(4)測(cè)試步描述:該描述包括測(cè)試狀態(tài)初始化、發(fā)包、收包等,每個(gè)動(dòng)作就是一個(gè)測(cè)試步。一個(gè)測(cè)試?yán)粋€(gè)以上的測(cè)試步。
(5)測(cè)試事件描述:測(cè)試套的最小單元是測(cè)試事件,測(cè)試事件是不可分割的最小單位。測(cè)試步是由一些測(cè)試事件組合起來(lái)完成一個(gè)特定功能的集合。
通過(guò)以上定義的XML模板,對(duì)BGP4+的測(cè)試?yán)M(jìn)行了描述,并運(yùn)用遠(yuǎn)程測(cè)試法對(duì)BGP4+實(shí)現(xiàn)Linux RedHat 9.0 Zebra 0.93b中的bgpd進(jìn)行一致性測(cè)試。列舉一個(gè)BGP4+連接建立功能測(cè)試組的測(cè)試?yán)?,如?所示。
表1 測(cè)試舉例
用XML描述并保存該測(cè)試?yán)?,如圖3所示,將這個(gè)測(cè)試?yán)贚inux環(huán)境下的BGP4+協(xié)議實(shí)驗(yàn)網(wǎng)中執(zhí)行,得到的執(zhí)行結(jié)果與預(yù)期結(jié)果相符,最終結(jié)論為PASS。
參考ISO/IEC9646的建議,根據(jù)協(xié)議的測(cè)試目的和BGP4+協(xié)議標(biāo)準(zhǔn),抽象出一個(gè)測(cè)試套,在這個(gè)測(cè)試套中包含8個(gè)測(cè)試組,分別是:(1)互連行為狀態(tài)機(jī)測(cè)試組;(2)消息格式一致性測(cè)試組;(3)消息處理功能測(cè)試組;(4)路由處理功能測(cè)試組;(5)路由流量控制功能測(cè)試組;(6)BGP4+差錯(cuò)處理功能測(cè)試組;(7)路由反射功能測(cè)試組;(8)Community屬性處理功能測(cè)試組。每個(gè)測(cè)試組中又抽象出不同數(shù)目的測(cè)試?yán)?/p>
使用這些測(cè)試?yán)龑?duì)Linux RedHat 9.0中的路由協(xié)議軟件包Zebra 0.93b進(jìn)行了一致性測(cè)試。下面以BGP4+的UPDATE消息格式一致性測(cè)試組為例,給出測(cè)試?yán)斜砑捌錅y(cè)試結(jié)果,其測(cè)試?yán)斜砣绫?所示。
圖3 XML測(cè)試套文件
表2 測(cè)試?yán)斜?/p>
本文對(duì)下一代域間路由協(xié)議BGP4+進(jìn)行了一致性測(cè)試研究,文中使用XML定義了協(xié)議測(cè)試套的模板,并用該模板實(shí)現(xiàn)了對(duì)BGP4+測(cè)試套的描述,通過(guò)對(duì)BGP4+協(xié)議實(shí)現(xiàn)進(jìn)行測(cè)試,發(fā)現(xiàn)了被測(cè)實(shí)現(xiàn)上的一些不一致問(wèn)題。進(jìn)一步的工作包括建立完整的BGP4+協(xié)議測(cè)試系統(tǒng),同時(shí)將針對(duì)測(cè)試中發(fā)現(xiàn)的不一致的地方對(duì)被測(cè)實(shí)現(xiàn)進(jìn)行分析,在使用XML進(jìn)行測(cè)試套的描述方面還需要進(jìn)一步的規(guī)范化,通用化。
[1] 趙邑新,吳建平,韓博.路由協(xié)議測(cè)試研究――邊界網(wǎng)關(guān)路由協(xié)議 BGP-4測(cè)試[J].通信學(xué)報(bào),2001,22(9):91-98.
[2] Network Working Group.RFC 1771:A Border Gateway Protocol 4(BGP -4)[S].USA:IBM Corp.,1995.
[3] 李建,周顥,趙保華.路由協(xié)議一致性測(cè)試系統(tǒng)研究及實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,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.