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