互操作性測(cè)試研究——BGP4+測(cè)試
互操作性測(cè)試就是檢測(cè)在不同廠商生產(chǎn)的設(shè)備之間能否實(shí)現(xiàn)正確的通信交互的測(cè)試方法。由于BGP4+[1]是下一代互聯(lián)網(wǎng)中重要的域間路由協(xié)議,因此對(duì)它展開互操作性測(cè)試對(duì)于驗(yàn)證下一代互聯(lián)網(wǎng)絡(luò)產(chǎn)品在真實(shí)網(wǎng)絡(luò)環(huán)境中的互連互通能力具有十分重要的意義,對(duì)于路由設(shè)備與軟件開發(fā)商在對(duì)產(chǎn)品進(jìn)行調(diào)試、驗(yàn)證和改進(jìn)等方面也有著非常重要的作用。
由于互操作性測(cè)試對(duì)于產(chǎn)品的推廣應(yīng)用具有非常重要的意義,因此,國內(nèi)外有許多研究機(jī)構(gòu)在從事互操作性測(cè)試的研究工作,例如:日本的TAHI計(jì)劃研發(fā)了IPv6協(xié)議的互操作性測(cè)試系統(tǒng)。德國的JOIN(Join Open InterNetworks)工程,建立了互操作性測(cè)試實(shí)驗(yàn)網(wǎng)絡(luò)。美國New Hampshire大學(xué)的IOL(Interoperability Lab)專門成立IPv6小組進(jìn)行IPv6相關(guān)協(xié)議的測(cè)試研究工作,在其網(wǎng)站上可以免費(fèi)下載到用于測(cè)試BGP4+、OSPFv3、RIPng等路由協(xié)議的互操作測(cè)試套件。國內(nèi)的清華大學(xué)、中科院計(jì)算所、中國科技大學(xué)、蘭州大學(xué)、上海交通大學(xué)等多所高校也成立了IPv6實(shí)驗(yàn)室在從事這方面的研究。
在互操作性測(cè)試?yán)纳伤惴ㄑ芯糠矫妫瑖鴥?nèi)外有許多相關(guān)的文獻(xiàn),例如,參考文獻(xiàn)[2]中提出了一種生成互操作性測(cè)試?yán)乃惴?,但是這種算法的缺陷是只能處理兩個(gè)內(nèi)部消息交互的情況;參考文獻(xiàn)[3]中研究了在互操作性測(cè)試生成過程中如何避免狀態(tài)爆炸的問題;參考文獻(xiàn)[4]中提出了一種基于有向圖的測(cè)試序列生成算法可以滿足互操作性測(cè)試的最小完全覆蓋準(zhǔn)則。但目前關(guān)于互操作性測(cè)試工具的開發(fā)研究方面的文獻(xiàn)并不多見。
1 BGP4+協(xié)議與BGP4的不同
隨著下一代互聯(lián)網(wǎng)絡(luò)協(xié)議IPv6的部署,原來只能支持IPv4的邊界網(wǎng)關(guān)協(xié)議BGP4已經(jīng)不能滿足實(shí)際的應(yīng)用需要,為了使BGP4能夠支持IPv6,IETF組織修訂完成了RFC2858(Multiprotocol Extentions for BGP4)。在BGP4+中,IETF定義了一個(gè)特殊屬性——MP-BGP(Multi-Protocol BGP)來攜帶IPv6的路由信息,使得BGP4+既可以運(yùn)行在IPv4網(wǎng)絡(luò)上也可以運(yùn)行在IPv6網(wǎng)絡(luò)上。
在BGP4協(xié)議的消息屬性中有三部分與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)起來。因此,IETF在修訂后的BGP4+中增加了MP_REACH_NLRI(Multiprotocol Reachable NLRI)屬性和MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI)屬性。這兩個(gè)屬性是可選非傳遞的,不支持多協(xié)議擴(kuò)展的BGP發(fā)言者可以忽略這兩個(gè)屬性中攜帶的信息并且不轉(zhuǎn)發(fā)這些信息。MP_REACH_NLRI屬性詳細(xì)定義了所使用的網(wǎng)絡(luò)層協(xié)議的類型、下一跳長(zhǎng)度和地址、子網(wǎng)接入點(diǎn)信息和NLRI信息。如果在UPDATE消息中使用了MP_REACH_NLRI屬性,就不需要原來的IPv4的NEXI-HOP屬性了。而MP_UNREACH_NLRI屬性相對(duì)簡(jiǎn)單得多,如果在UPDATE消息中使用了MP_UNREACH_NLRI屬性就不需要攜帶其他的路徑屬性了。RFC1771規(guī)定UPDATE消息中必須包含強(qiáng)制屬性,否則就發(fā)送NOTIFICATION消息,但是RFC2858中增加的這兩個(gè)屬性無形中改變了這一規(guī)定。BGP4+中還增加了對(duì)這兩個(gè)新屬性的錯(cuò)誤處理,而且還采用了BGP能力通告協(xié)議[5],該協(xié)議定義了BGP4+的OPEN消息的可選屬性中可以采用BGP能力通告,用來決定在BGP連接建立時(shí)是否與對(duì)等體使用多協(xié)議擴(kuò)展傳遞路由信息,否則將無法獲知其他對(duì)等體是否能支持這一擴(kuò)展。如果雙方都支持這一擴(kuò)展,它們轉(zhuǎn)發(fā)的UPDATE消息就可以攜帶IPv6網(wǎng)絡(luò)層可達(dá)信息。BGP4+的這種擴(kuò)展機(jī)制是向后兼容的,支持這種擴(kuò)展的路由器能夠與不支持這種擴(kuò)展的路由器完全交互。
2 測(cè)試體系結(jié)構(gòu)
在對(duì)BGP4+進(jìn)行互操作性測(cè)試的過程中選用的體系結(jié)構(gòu)如圖1所示。在該互操作性測(cè)試體系結(jié)構(gòu)中,IUT(被測(cè)實(shí)現(xiàn))A 和IUT B分別代表了兩個(gè)進(jìn)行互操作的產(chǎn)品實(shí)現(xiàn);網(wǎng)絡(luò)協(xié)議分析儀由裝有Ethereal協(xié)議分析軟件的PC機(jī)來代替,它可以捕獲在IUT A和IUT B之間傳遞的內(nèi)部消息,并對(duì)捕獲的信息進(jìn)行觀察和分析,但是不能對(duì)這些消息進(jìn)行更改,這樣可有效地減少外界環(huán)境對(duì)被測(cè)系統(tǒng)的干預(yù),并能體現(xiàn)IUT A和IUT B之間能否進(jìn)行互操作的真實(shí)情況;測(cè)試器A和測(cè)試器B是抽象意義上的互操作性測(cè)試工具。
3 測(cè)試BGP4+
3.1 BGP4+的形式化定義
圖2是完整的BGP4+互連行為有限狀態(tài)機(jī),可以看到,在BGP4+對(duì)等體完全建立連接之前要經(jīng)歷的狀態(tài)包括:Idle、Connect、Active、OpenSent、OpenConfirm和Established。
在BGP4+的有限狀態(tài)機(jī)中,導(dǎo)致狀態(tài)變遷發(fā)生的是BGP的輸入輸出事件,RFC4271中規(guī)定的輸入輸出事件包括Administrative事件、Timer事件、TCP連接事件和BGP消息事件,其中每類事件又包括必選事件和可選事件,具體事件如表1所示。
3.2 測(cè)試?yán)纳膳c應(yīng)用
在對(duì)BGP4+進(jìn)行互操作性測(cè)試的研究中,首先通過有限狀態(tài)機(jī)對(duì)其進(jìn)行形式化描述,然后運(yùn)用了參考文獻(xiàn)[6]中提出的測(cè)試?yán)伤惴▉砩蓽y(cè)試?yán)?,其算法思想如下?br />
(8)全局終態(tài)gs_n=(2,b);
(9)得到互操作測(cè)試套:Tr?椎=(1,a)-V/((nil,uin),(U, nil))(2,b)。
以圖3的BGP4+消息交換實(shí)例來說明測(cè)試?yán)?Idle,Active)---start-a/{(nil,Open),(nil,Open),(nil,KeepAlive),(nil,NotiFMsg),(close,nil)}→(Idle,Idle)的生成方法。在BGP4+的有限狀態(tài)機(jī)中,初始IUT A和IUT B的狀態(tài)分別是Idle和Active,即gs_i=(Idle,Active)、gs_i.Si=Idle、gs_i.Sj=Active。WΦ⇔{(nil,Open)},TrΦ=nil。經(jīng)過多次Call interaction_sequence函數(shù)的調(diào)用,使得兩個(gè)被測(cè)實(shí)現(xiàn)IUT A和IUT B經(jīng)過變遷start-a/{(nil,Open)、(nil,Open)、(nil,KeepAlive)、(nil,NotiFMsg)、(close,nil)}最終到達(dá)gs_n=(Idle,Idle)狀態(tài)。運(yùn)用這個(gè)方法自動(dòng)生成了10個(gè)BGP4+互操作測(cè)試?yán)?。[!--empirenews.page--]
對(duì)于協(xié)議中無法抽取規(guī)范的形式化描述的測(cè)試內(nèi)容則需要給出測(cè)試目的和測(cè)試內(nèi)容,根據(jù)RFC協(xié)議標(biāo)準(zhǔn)的內(nèi)容手工抽取測(cè)試?yán)?。首先,在詳?xì)閱讀RFC協(xié)議標(biāo)準(zhǔn)并充分理解的基礎(chǔ)上,對(duì)協(xié)議進(jìn)行測(cè)試項(xiàng)目的劃分;然后,根據(jù)不同的測(cè)試項(xiàng)目確定該項(xiàng)目中的測(cè)試目的和測(cè)試內(nèi)容;最后,針對(duì)不同的測(cè)試目的設(shè)計(jì)適當(dāng)?shù)臏y(cè)試配置和測(cè)試數(shù)據(jù)。表2是一個(gè)采用手工抽取的測(cè)試?yán)膶?shí)例,表中列出了測(cè)試目的、測(cè)試配置、測(cè)試步驟以及預(yù)期的測(cè)試結(jié)果和測(cè)試判定。被測(cè)系統(tǒng)如圖4所示。
圖5是使用Ethereal捕獲到的在Cisco 1721和模擬路由軟件Zebra-0.95之間傳遞的BGP4+的OPEN消息,其中Hold Time的實(shí)際值為180 s,符合預(yù)期結(jié)果。因?yàn)閰f(xié)議規(guī)定通信雙方的Hold Time以時(shí)間短的一方作為最終協(xié)商結(jié)果,因此,測(cè)試?yán)淖罱K結(jié)果為PASS。
運(yùn)用這些測(cè)試?yán)龑?duì)BGP4+協(xié)議的實(shí)現(xiàn)進(jìn)行了互操作性測(cè)試,下面以Linux下的Zebra-0.95為例,列舉了部分對(duì)協(xié)議可選項(xiàng)處理情況的測(cè)試?yán)斜砑皽y(cè)試結(jié)果,如表3所示。
隨著IPv6協(xié)議簇的廣泛應(yīng)用,對(duì)實(shí)現(xiàn)了IPv6協(xié)議簇的相關(guān)產(chǎn)品的測(cè)試是保證它們能正確在網(wǎng)絡(luò)中工作的關(guān)鍵。BGP4+作為IPv6協(xié)議簇中重要的路由協(xié)議,對(duì)它的測(cè)試有助于進(jìn)一步完善IPv6協(xié)議簇。因此,作為最基本和最重要的域間路由協(xié)議,測(cè)試BGP4+協(xié)議實(shí)現(xiàn)的互操作性具有重要的應(yīng)用價(jià)值。這些研究工作的結(jié)果將會(huì)使下一代互聯(lián)網(wǎng)具有一個(gè)更為穩(wěn)定和堅(jiān)實(shí)的基礎(chǔ)。
本文首先對(duì)BGP4+與BGP4的區(qū)別進(jìn)行了分析,然后介紹了BGP4+互操作性測(cè)試的體系結(jié)構(gòu),最后詳細(xì)講解了生成BGP4+互操作性測(cè)試?yán)姆椒斑\(yùn)用這些測(cè)試?yán)龑?duì)BGP4+協(xié)議實(shí)現(xiàn),如在Linux環(huán)境下對(duì)Zebra-0.95進(jìn)行互操作性測(cè)試所發(fā)現(xiàn)的問題。后續(xù)的工作包括開發(fā)通用性強(qiáng)的互操作性測(cè)試工具以及在提高差錯(cuò)覆蓋率方面進(jìn)一步研究新的測(cè)試?yán)伤惴ā?br />
參考文獻(xiàn)
[1] RFC 2858: multiprotocol extensions for BGP-4. June,2000.
[2] SHIN J, KANG S. Interoperability test suite derivation for the ATM/B-ISDN signaling protocol[J]. IWTCS Proceedings of the IFIP TC6 11th International Workshop on Testing Communicating Systems, 1998: 313-330.
[3] KANG S, SHIN J, KIM M. Interoperability test suite derivation for communication protocols[J]. Computer Networks, 2000, 32(3):347-364.
[4] 林華輝,趙保華,屈玉貴. 基于有向圖的最小完全覆蓋互操作測(cè)試序列生成算法[J].中國科學(xué)技術(shù)大學(xué)學(xué)報(bào),2006,36(2):225-229.
[5] RFC 2842: Capabilities adveritsement with BGP-4, May,2000.
[6] KANG S, KIM M. Interoperability test suite derivation for symmetric communication protocol[C]. Proceeding FORTE X/PSTV XVII′97, 1997, 107:57-72.