【文章內(nèi)容簡介】
OPNET simulation of BGP ProtocolAbstractThe paper proposes a design method which is based on OPENT simulation software, uses the modular development and uses BGP protocol on the basis of introducing the basic concept and characteristics of the border gateway protocol (Border Gateway Protocol, BGP) .It established specific measures to change the routing priority and modify the AS_Path attribute to control routing to solve the problem through setting up BGP model,it has solved the convergence of BGP. The method has the advantages of low cost, easy access to the hardware environment, convenient popularization,and so it has a certain reference value.Key words Border gateway Routing protocol OPENT simulationI緒論 Internet是一個全球互聯(lián)的計算機網(wǎng)絡(luò)。隨著Internet的飛速發(fā)展,在全球范圍的層面上,對其進行有效地管理將變得越來越困難。出于管理和擴展的目的,因特網(wǎng)被分割成許多不同的自治系統(tǒng)(Autonomous System, AS)[1]。換句話說,因特網(wǎng)是由自治系統(tǒng)匯集而成的。AS自身可以有自己的一套規(guī)則和策略,能夠把自己和其它AS惟一地區(qū)別開來。 一個AS是擁有同一選路策略、在同一技術(shù)管理部門下運行的一組路由器。每個AS被看作是一個進行自我管理的網(wǎng)絡(luò),一個自治系統(tǒng)只負責(zé)管理自己內(nèi)部的路由。以AS為邊界,可以將常用的動態(tài)路由協(xié)議分為AS間的外部網(wǎng)關(guān)協(xié)議(Exterior Gateway Protocol, EGP)和AS內(nèi)部的內(nèi)部網(wǎng)關(guān)協(xié)議(Interior Gateway Protocol , IGP )[1]。邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol, BGP)就是為TCP網(wǎng)絡(luò)設(shè)計的用于自治系統(tǒng)之間的EGP路由協(xié)議。該協(xié)議的基本功能是與其他BGP協(xié)議自治系統(tǒng)交換網(wǎng)絡(luò)層可達信息(Network Layer Reachable Information, NLRI),這種可達信息包含了通往目標所要穿越的自治系統(tǒng)記錄,利用這些信息,系統(tǒng)就可以構(gòu)建一個無環(huán)的自治系統(tǒng)連接圖,并把形成的外部路由信息發(fā)布給內(nèi)部網(wǎng)關(guān)協(xié)議IGP。隨著Internet的迅速發(fā)展,網(wǎng)絡(luò)拓撲的日趨復(fù)雜,多個自治系統(tǒng)間的通信的要求越來越高,BGP協(xié)議也顯得越來越重要。BGP協(xié)議這種復(fù)雜的路由協(xié)議,它靈活的自主配置策略機制帶來方便的同時,也不可避免的存在錯誤的策略配置,進而引發(fā)路由振蕩的后果[3]。目前解決方法有兩種:一種是靜態(tài)方法:即在沒有發(fā)生路由振蕩的情況下,對路由策略進行分析,發(fā)現(xiàn)沖突的路由策略,并加以修改;另一種是動態(tài)方法:即引入額外的路由振蕩檢測機制,在交換路由信息的過程中,發(fā)現(xiàn)并消除路由振蕩。 Aradhan首先提出討論BGP持續(xù)路由振蕩問題,并定義了安全性的概念。他認為,路由振蕩的原因并不是單一的AS策略配置問題,而是由于很多個AS之間的交互才引發(fā)的問題[4]。在沒有配置錯誤的情況下也是有可能發(fā)生的,而且由于AS更傾向于保持自己AS域內(nèi)策略的保密性,所以,它更難于檢測和解決。 Govindan R, Alaettinoglu C, Eddy G等人提出以路由注冊的方式進行全球合作來避免路由策略沖突的產(chǎn)生[7]。這個機制主要包含了這樣幾個部分:一是RPSL}8], RPSL是IETF用于描述路由策略的高級語言;二是路由注冊器(routing registry ),AS管理員會將自己的策略注冊到互聯(lián)網(wǎng)路由注冊處(IRR, Internet Routing Registry;三是分析所收集策略的工具,這個工具用來檢測連通性和策略沖突并進行管理。 Gary —PPL ( Pathbased PolicyLanguage ),這個語言將策略規(guī)則轉(zhuǎn)化為描述網(wǎng)絡(luò)服務(wù)以及接入控制信息的形式化邏輯,再編寫編譯器來評估網(wǎng)絡(luò)策略規(guī)則的正確性,并且返回有沖突策略的信息,這里的正確性包括策略規(guī)則的句法和語義上的正確[10]。 Gao和Rexford提出由分級結(jié)構(gòu)、過濾和網(wǎng)絡(luò)拓撲等限制來確保路由的穩(wěn)定,并表明網(wǎng)絡(luò)經(jīng)濟會自然保障路由的穩(wěn)定[12]。其基本思想是,利用AS間的經(jīng)濟關(guān)系形成的互聯(lián)網(wǎng)層次結(jié)構(gòu),為達到目的網(wǎng)絡(luò)的路由設(shè)定一個偏序關(guān)系,這種基于AS圖的業(yè)務(wù)分級結(jié)構(gòu)和與之相匹配的AS間的多種商業(yè)協(xié)議足以使BGP協(xié)議收斂。在這個結(jié)構(gòu)中假設(shè)了三種AS關(guān)系,以及由此根據(jù)商業(yè)關(guān)系制定路由策略,Gao和Rexford規(guī)定不允許存在客戶—提供者循環(huán)(例如,不能有AS經(jīng)過若干個提供者后,又成為自己的非直接客戶)。 本文在介紹邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol,BGP)基本概念和特點的基礎(chǔ)上,提出了基于OPENT路由仿真軟件,采用模塊化開發(fā),進行BGP協(xié)議設(shè)計的方法;通過搭建BGP模型,確立了改變路由的優(yōu)先級以及修改AS_Path屬性來控制選路的具體措施,解決了BGP的收斂問題。論文主要基于OPENT平臺進行BGP協(xié)議的設(shè)計,OPENT有強大的網(wǎng)絡(luò)功能且成本低廉,硬件環(huán)境容易獲取,便于推廣和使用;BGP協(xié)議開發(fā)過程中,結(jié)合OPENT網(wǎng)絡(luò)仿真軟件進行測試,僅需一臺PC機就可以完成所有網(wǎng)絡(luò)實驗,有一定的推廣價值;基于OPENT路由軟件采用模塊化開發(fā)方法,便于新的協(xié)議的開發(fā)和移植,如果加入更多的協(xié)議,便可以設(shè)計出功能更全的路由軟件,讓其運行在高性能多網(wǎng)卡的PC機上,就可以充當(dāng)路由器的角色,有潛在的商業(yè)價值。1 邊界網(wǎng)關(guān)協(xié)議概述 BGP定義邊界網(wǎng)關(guān)協(xié)議(BGP)是運行于TCP上的一種自治系統(tǒng)的路由協(xié)議。它既不是基于純粹的鏈路狀態(tài)算法(發(fā)送路由信息到互聯(lián)網(wǎng)上所有的結(jié)點,然而對于每個路由器,僅發(fā)送它的路由表中描述了其自身鏈路狀態(tài)的那一部分),也不是基于純粹的距離向量算法(網(wǎng)絡(luò)中的每條鏈路分配給一個權(quán)值,而且到目的地的距離被定義為到達目的地的路由統(tǒng)權(quán)值的總和。因為必須保存計算所需的距離值,路由表的每一項都額外添加了一個字段,添加的字段包含了沿著對應(yīng)下一跳的路徑到達表項目的地的距離[1]。BGP是唯一一個用來處理像因特網(wǎng)大小的網(wǎng)絡(luò)的協(xié)議,也是唯一能夠妥善處理好不相關(guān)路由域間的多路連接的協(xié)議。BGP構(gòu)建在EGP(內(nèi)部網(wǎng)關(guān)協(xié)議)的經(jīng)驗之上,BGP系統(tǒng)的主要功能是和其他的BGP系統(tǒng)交換網(wǎng)絡(luò)可達信息[1]。網(wǎng)絡(luò)可達信息包括列出的AS(自治系統(tǒng):同構(gòu)型的網(wǎng)關(guān)連接的英特網(wǎng))的信息。這些信息有效地構(gòu)造了AS互聯(lián)的拓撲圖,并由此清除了路由環(huán)路,同時在AS級別上可實施策略決策。[3]。 內(nèi)部網(wǎng)關(guān)協(xié)議和外部網(wǎng)關(guān)協(xié)議 BGP的消息格式BGP有4種報文類型:Open、Update、Notification、Keepalive。這些報文有相同的報文頭,: BGP報文的報文頭格式:216。 Marker:16字節(jié),用于標明BGP報文邊界,所有比特均為“1”。216。 Length:2字節(jié),BGP消息總長度(包括報文頭在內(nèi)),以字節(jié)為單位。216。 Type:1字節(jié),BGP報文的類型。其取值從1到5,分別表示Open、Update、 Notification、Keepalive和Routerefresh消息。其中,前四種報文是在RFC 1771中定義,而Type為5的報文則是在RFC 2918中定義的。Open報文 Open報文是TCP連接建立后發(fā)送的第一個消息,用于建立BGP對等體之間的連接關(guān)系。 Open報文:216。 Version:BGP的版本號。對于BGP4來說,其值為4。216。 My autonomous system:本地AS號。通過比較兩端的AS號可以確定是EBGP 連接,還是IBGP連接。216。 Hold time:保持時間。在建立對等體關(guān)系時兩端要協(xié)商Hold Time,并保持一致。如果在這個時間內(nèi),未收到對端發(fā)來的Keepalive報文或Update報文,則認為BGP連接中斷。216。 BGP identifier:BGP標識符。以IP地址的形式表示,用來識別BGP路由器。Opt Par Len(Optional Parameters Length):可選參數(shù)的長度。如果為0,則沒有可選參數(shù)。216。 Optional parameters:可選參數(shù)。用于多協(xié)議擴展(Multiprotocol Extensions)等功能。Update報文Update報文用于在對等體之間交換路由信息。它既可以發(fā)布可達路由信息,也可以撤銷不可達路由信息。: Update報文一條Update報文可以通告一類具有相同路徑屬性的可達路由,這些路由放在NLRI(Network Layer Reachable Information,網(wǎng)絡(luò)層可達信息)字段中,Path Attributes字段攜帶了這些路由的屬性,BGP根據(jù)這些屬性進行路由的選擇;同時Update報文還可以攜帶多條不可達路由,被撤銷的路由放在Withdrawn Routes字段中。:216。 Unfeasible routes length:不可達路由字段的長度,以字節(jié)為單位。如果為0則說明沒有Withdrawn Routes字段。216。 Withdrawn routes:不可達路由的列表。216。 Total path attribute length:路徑屬性字段的長度,以字節(jié)為單位。如果為0則說明沒有Path Attributes字段。216。 Path atributes:與NLRI相關(guān)的所有路徑屬性列表,每個路徑屬性由一個TLV(TypeLengthValue)三元組構(gòu)成。BGP正是根據(jù)這些屬性值來避免環(huán)路,進行選路,協(xié)議擴展等。216。 NLRI(Network Layer Reachability Information):可達路由的前綴和前綴長度二元組。Notification報文當(dāng)BGP檢測到錯誤狀態(tài)時,就向?qū)Φ润w發(fā)出Notification報文,之后BGP連接會立即中斷。: Notification報文:216。 Error code:差錯碼,指定錯誤類型。216。 Error subcode:差錯字碼,錯誤類型的詳細信息。216。 Data:用于輔助發(fā)現(xiàn)錯誤的原因,它的內(nèi)容依賴于具體的差錯碼和差錯子碼,記錄的是出錯部分的數(shù)據(jù),長度不固定。Keepalive報文BGP會周期性地向?qū)Φ润w發(fā)出Keepalive消息,用來保持連接的有效性。其消息格式中只包含報文頭,沒有附加其他任何字段。這些報文通過TCP的連接傳送。在BGP中上述4種報文可實現(xiàn)以下三個功能過程。1)建立鄰居關(guān)系:位于不同自制系統(tǒng)中的路由器,首先要建立鄰居關(guān)系,然后才能周期性地交換路由信息。建立鄰居的過程是一個路由器發(fā)送Open報文,另一個路由器若愿意接受請求,則以Keepalive報文應(yīng)答。至于路由器如何知道對方的IP地址,協(xié)議中并沒有規(guī)定,可以由管理員在配置中提供。Open報文中包含發(fā)送者的IP地址及其所屬自制系統(tǒng)的標識,另外還有一個保持時間參數(shù),即定期交換信息的時間長度。接受者把Open報文中的保持時間與自己的保持時間計數(shù)器比較,選擇其中的較小者,這個數(shù)就是一次交換信息保持有效的最長時間。建立鄰居關(guān)系的一對路由器,以選定的周期交換路由信息。2)鄰居的可到達性:這個過程維護鄰居關(guān)系的有效性。通過周期地互換發(fā)送Keepalive報文,雙方都知道對方的活動狀態(tài)。3)網(wǎng)絡(luò)的可到達性:每個路由器保持一個數(shù)據(jù)庫,記錄著它可到達的所有子網(wǎng)。當(dāng)情況有變化時,更新報文把最新信息及時地廣播給所有實現(xiàn)BGP的路由器。Update報文包含兩類信息:一類是以前發(fā)布過的,而現(xiàn)在要作廢的路由器的表;另一類是路由器的屬性信息。前者列出了已經(jīng)關(guān)機或失效的一些路由器,接受者把有關(guān)內(nèi)容從本地數(shù)據(jù)庫中刪除。后者包含以下三種信息。216。 網(wǎng)絡(luò)層可到達信息:是發(fā)送路由器可到達的子網(wǎng)的列表,每個子網(wǎng)以其網(wǎng)絡(luò)地址標識。216。 通過的自治系統(tǒng):是數(shù)據(jù)報經(jīng)過的自制系統(tǒng)的標識符。這主要用于通信策略控制。收到這個信息的路由器可以據(jù)此決定是否走這條通路,例如機密報文可能要選擇某些自制系統(tǒng);或者了解到某個自制系統(tǒng)的性能參數(shù)、擁擠程度等,從此決定繞開該網(wǎng)絡(luò)。216。 下一段:是指可作文下一步轉(zhuǎn)發(fā)的邊界路由器的IP地址??梢允拱l(fā)送者的地址,也可以是另外的邊界路由器的地址。為了獲得一個鄰站,路由器首先要打開通往某個感興趣的相鄰路由器的TCP連接,然后發(fā)送一個Open報文。這個報文標識出了發(fā)送方所屬的自制系統(tǒng)。并且提供了該路由器的IP地址。在這個報文中還有一個Hold Time參數(shù),它指出發(fā)送方建議的Hold Time的值設(shè)定為多少秒。如果接收方準備打開鄰站關(guān)系,那么它需要計算Hold Timer的值,也就是在它自己的Hold Time和Open報文中的Hold Time之中取較小的那個值。計算得到的值同,是發(fā)送方連續(xù)收到Keepalive和/或Update報文之間的最大時間間隔,以秒為單位。Keepalive報文只含有首部。所有的路由器都要經(jīng)常向它的各個對等路由器發(fā)送這種報文,以防止Hold Timer超時。Update報文用于傳輸路由信息,它指出該信息是來自內(nèi)部網(wǎng)關(guān)協(xié)議,還是BGP或者其它方式。同時它還與其它屬