BGP4+協(xié)議及一致性測(cè)試
——
下一代互聯(lián)網(wǎng)將以IPv6為核心技術(shù),IPv6網(wǎng)絡(luò)的形成是一個(gè)漸進(jìn)的發(fā)展過(guò)程,這個(gè)過(guò)程的第一步是穿過(guò)IPv4網(wǎng)絡(luò)的“海洋”連接各個(gè)IPv6實(shí)驗(yàn)網(wǎng)“孤島”,第二步是在IPv6商業(yè)網(wǎng)絡(luò)逐步建立的情況下,實(shí)現(xiàn)不同運(yùn)營(yíng)商IPv6網(wǎng)絡(luò)的互聯(lián),同時(shí)實(shí)現(xiàn)運(yùn)營(yíng)商網(wǎng)絡(luò)內(nèi)部不同IPv6自治域之間的互聯(lián),通過(guò)逐步的互聯(lián)使網(wǎng)絡(luò)的規(guī)模不斷擴(kuò)大,最終形成統(tǒng)一的IPv6大網(wǎng)。
支持IPv6的邊界網(wǎng)關(guān)協(xié)議(BGP4+)是支持上述幾種互聯(lián)方式的唯一的IPv6域間路由協(xié)議,對(duì)于實(shí)現(xiàn)IPv6網(wǎng)的互聯(lián)互通、完成IPv4到IPv6網(wǎng)絡(luò)技術(shù)的平穩(wěn)過(guò)渡起著非常關(guān)鍵的作用。BGP4+是對(duì)BGP4協(xié)議的擴(kuò)展,沿用了RFC1771中規(guī)定的BGP4的基本消息格式,增加了RFC2858規(guī)定的用于傳送IPv6路由信息的擴(kuò)展屬性,并按照RFC1771中的規(guī)定對(duì)所有IPv6路由進(jìn)行處理,同時(shí)支持RFC1966、RFC1997等協(xié)議中規(guī)定的BGP路由反射、BGP聯(lián)盟等擴(kuò)展功能。
建立BGP4+會(huì)話連接的兩個(gè)路由器可以位于一個(gè)自治域內(nèi),也可以位于不同的自治域邊界上,前者構(gòu)成了兩個(gè)IBGP4+對(duì)等體,后者構(gòu)成了兩個(gè)EBGP4+對(duì)等體。兩個(gè)BGP4+對(duì)等體之間使用TCP協(xié)議建立傳輸層的連接,本地監(jiān)聽(tīng)TCP的179端口,在TCP連接之上傳送BGP4+協(xié)議消息。
BGP4+協(xié)議的內(nèi)容包含三方面的規(guī)定:一是消息傳送規(guī)程的規(guī)定,二是路由處理方面的規(guī)定,三是消息格式的規(guī)定。下文將就這三方面的規(guī)定做簡(jiǎn)要介紹。此外,由于BGP4+在IPv6網(wǎng)的發(fā)展階段有獨(dú)特的重要作用,對(duì)IP路由器進(jìn)行BGP4+協(xié)議一致性檢驗(yàn)是非常必要和重要的,因此本文對(duì)一致性測(cè)試的內(nèi)容也將做簡(jiǎn)要說(shuō)明。
二 通信規(guī)程
BGP4+規(guī)定了一個(gè)簡(jiǎn)單而高效的通信規(guī)程,主要包括連接的建立、保持和斷開(kāi)方面的規(guī)定。
BGP4+對(duì)等體向?qū)Χ税l(fā)送OPEN消息,其中包含協(xié)議版本號(hào)、連接保持時(shí)間、本地的路由器標(biāo)識(shí)符、認(rèn)證信息等,對(duì)端如果接受這些參數(shù),就回復(fù)KEEPALIVE消息確認(rèn)連接的建立。
BGP4+會(huì)話連接成功地建立之后,路由器可以將需要建立或刪除的路由信息通過(guò)UPDATE消息傳送到對(duì)端。如果沒(méi)有路由信息需要傳送,路由器要定期向?qū)Χ税l(fā)送KEEPALIVE消息,以便保持連接的激活狀態(tài)。
對(duì)端路由器收到UPDATE消息后,如果認(rèn)為路由信息正確,則在完成本地的路由處理后向其他BGP4+對(duì)等體轉(zhuǎn)發(fā)路由信息;如果認(rèn)為路由信息有錯(cuò),則回復(fù)一個(gè)NOTIFICATION消息報(bào)告錯(cuò)誤狀態(tài)。
BGP4+會(huì)話連接的斷開(kāi)存在兩種情況,一種是在超過(guò)了一個(gè)規(guī)定的時(shí)間后,在既沒(méi)收到路由也沒(méi)收到KEEPALIVE消息的情況下自動(dòng)斷開(kāi)連接;還有一種情況是在收到NOTIFICATION消息后斷開(kāi)連接,終止BGP4+會(huì)話關(guān)系。
三 路由處理規(guī)程
由于路由信息均通過(guò)UPDATE消息傳送,因此路由處理方面的規(guī)定主要是針對(duì)UPDATE消息進(jìn)行的處理。從下文UPDATE消息的格式上可以看出,隨路由一同傳來(lái)的還有路由的屬性,包括路由的來(lái)源、經(jīng)過(guò)的自治域、路由的本地優(yōu)先級(jí)、權(quán)值等信息,根據(jù)這些信息確定路由的有效性,決定是否向本地路由庫(kù)中添加路由或刪除某個(gè)路由、是否向其他BGP4+對(duì)等體轉(zhuǎn)發(fā)路由以及如何轉(zhuǎn)發(fā),隨后完成一系列相關(guān)動(dòng)作。路由處理上主要包括下列功能:
1.路由轉(zhuǎn)發(fā)
路由器收到UPDATE消息后,如果確認(rèn)路由有效,則在本地的路由表中增加或刪除相應(yīng)路由,同時(shí)將路由信息向其他BGP4+對(duì)等體轉(zhuǎn)發(fā)。如果收到的路由信息來(lái)自EBGP4+對(duì)等體,則要向其他所有EBGP4+對(duì)等體和自治域內(nèi)的所有的IBGP4+對(duì)等體轉(zhuǎn)發(fā)路由;如果路由來(lái)自IBGP4+對(duì)等體,則向所有EBGP4+對(duì)等體轉(zhuǎn)發(fā)路由,不把路由轉(zhuǎn)發(fā)給自治域內(nèi)的其他任何IBGP4+對(duì)等體。
2.路由選擇
如果路由器收到了兩個(gè)不同的BGP4+對(duì)等體發(fā)來(lái)的同一條路由,就要選擇其中的一條做為本地路由并向其他對(duì)等體轉(zhuǎn)發(fā),路由選擇遵循如下幾條主要原則
?。?)外部對(duì)等體發(fā)來(lái)的路由優(yōu)于內(nèi)部對(duì)等體發(fā)來(lái)的路由;
?。?)對(duì)于從外部對(duì)等體收到的路由,優(yōu)先選擇MULTI-EXIT-DISC值低的路由(應(yīng)注意此時(shí)兩條路由應(yīng)來(lái)自同一個(gè)外部自治域,否則不具備可比較性);
?。?)對(duì)于所有從內(nèi)部對(duì)等體收到的路由,優(yōu)先選擇LOCAL-PREF值高的路由;
?。?)能夠根據(jù)預(yù)先設(shè)置的策略優(yōu)先選擇某個(gè)路由;
(5)在所有可比較條件均相同的情況下,根據(jù)BGP4+標(biāo)識(shí)符打破平局,選擇BGP4+標(biāo)識(shí)符值低的路由。
3.重疊路由處理
如果路由器收到了兩個(gè)不同的BGP4+對(duì)等體發(fā)來(lái)的兩條重疊路由,通常要選擇更精確(more specific)的路由,即地址前綴更長(zhǎng)的路由。
4.路由聚合
路由器收到兩個(gè)不同的BGP4+對(duì)等體發(fā)來(lái)的兩條路由后,如果發(fā)現(xiàn)兩條路由可以聚合,則要將他們聚合起來(lái)轉(zhuǎn)發(fā)給第三方,同時(shí)要在UPDATE消息中對(duì)聚合的路由正確地賦予ORIGIN、AS_PATH等路由屬性字段的值。
5.路由傳送流量控制
路由器既要傳送BGP4+等控制信息,又要傳送用戶IP業(yè)務(wù)流,兩類數(shù)據(jù)的傳送和處理是共享線路帶寬和節(jié)點(diǎn)設(shè)備資源的,控制信息的過(guò)多傳送會(huì)影響用戶IP業(yè)務(wù)的質(zhì)量,因此BGP4+中規(guī)定了路由傳送的流量控制策略,設(shè)置了若干個(gè)計(jì)時(shí)器,保證建立路由的UPDATE消息的傳送會(huì)間隔一定時(shí)間,同時(shí)保證刪除路由的UPDATE消息立即傳送,不受時(shí)間間隔約束。
6.路由反射
BGP4+協(xié)議要求IBGP4+對(duì)等體收到來(lái)自其他自治域的路由消息后,要轉(zhuǎn)發(fā)給本自治域內(nèi)的所有IBGP4+對(duì)等體,這就意味著IGBP4+對(duì)等體之間要建立全網(wǎng)狀的連接,這對(duì)網(wǎng)絡(luò)的擴(kuò)展顯然是不利的。因此,RFC1966中規(guī)定了一個(gè)擴(kuò)展的功能,即將IBGP4+對(duì)等體分成若干組,每組選一個(gè)路由器做為反射路由器(RR),其他路由器為客戶(Client)。
協(xié)議規(guī)定,RR之間建立網(wǎng)狀連接,組與組之間路由的轉(zhuǎn)發(fā)要通過(guò)RR;在組內(nèi),以RR為核心建立星型連接,client之間路由的傳遞要通過(guò)RR轉(zhuǎn)發(fā),組內(nèi)這種路由信息的傳送方式被形象地比喻為“反射“。通過(guò)這種方式保證了路由信息送達(dá)所有的IBGP4+對(duì)等體,同時(shí)避免了所有IBGP4+對(duì)等體的全網(wǎng)狀連接。RFC1966對(duì)主要的處理功能進(jìn)行了規(guī)定。
7.BGP聯(lián)盟
解決IBGP4+自治域內(nèi)所有對(duì)等體全網(wǎng)狀互連的另一個(gè)方式是使用BGP聯(lián)盟,即將一個(gè)自治域劃分為若干子域,使自治域成為多個(gè)子域構(gòu)成的聯(lián)盟。子域內(nèi)部的對(duì)等體可進(jìn)行網(wǎng)狀互聯(lián),子域之間不需要網(wǎng)狀互聯(lián)。聯(lián)盟對(duì)外使用一個(gè)統(tǒng)一的AS號(hào),對(duì)內(nèi)為每個(gè)子域分配了內(nèi)部的AS號(hào)。同時(shí),在BGP消息中還規(guī)定了一個(gè)COMMUNITIES屬性,利用這個(gè)屬性的值來(lái)控制路由信息傳播的范圍。RFC1997對(duì)相關(guān)的路由處理功能進(jìn)行了規(guī)定。
四 消息格式
BGP消息分為四類,即OPEN、UPDATE、KEEPALIVE和NOTIFICATION,消息功能分別如下
(1)Open:用于請(qǐng)求建立BGP4+會(huì)話連接;
?。?)Update:用于傳送建立或刪除路由的信息;
(3)Notification:在出現(xiàn)路由差錯(cuò)時(shí)向?qū)Χ税l(fā)送通知,同時(shí)將出錯(cuò)原因告知對(duì)端;
(4)Keepalive:為保持激活狀態(tài)而傳送的消息,此外建立連接時(shí)做Open消息的響應(yīng)。
四類消息采用通用的BGP4+消息格式,消息由標(biāo)簽(marker)、消息長(zhǎng)度、消息類型、消息體四個(gè)部分構(gòu)成,前三個(gè)部分構(gòu)成了BGP4+消息的通用消息頭。
BGP4+通用消息頭中,各個(gè)字段的功能如下:
?。?) Marker – 包含信息接收端可預(yù)測(cè)值,例如認(rèn)證信息;
?。?) Length – 以字節(jié)為單位的包括消息頭在內(nèi)的消息總長(zhǎng)度;
?。?) Type – 消息類型代碼。“1”為Open消息,“2”為UPDATE消息,“3”為NOTIFICATION消息,“4”為KEEPALIVE。
1.Open消息格式
OPEN消息用于發(fā)起建立BGP會(huì)話連接
Open消息中各個(gè)字段的功能如下:
?。?) ersion :指明發(fā)端路由器使用的協(xié)議版本號(hào);
(2) My Autonomous System :指明發(fā)端路由器的本地AS號(hào);
?。?) Hold Time :發(fā)端路由器建議的保持激活時(shí)間;
?。?) BGP Identifier :發(fā)端路由器的標(biāo)識(shí)符;
(5) OptParmLen :指明以字節(jié)為單位的可選參數(shù)字段的長(zhǎng)度;
?。?) Optional Parameters :其中包含一些可選參數(shù),例如認(rèn)證信息等。
2.UPDATE消息格式
BGP4+協(xié)議中所有的路由信息都是通過(guò)UPDATE消息傳送的。
UPDATE消息中各個(gè)字段的功能如下:
(1)不可達(dá)路由長(zhǎng)度:指明刪除路由字段的長(zhǎng)度,以字節(jié)為單位;
?。?)刪除路由:其中包含若干需要?jiǎng)h除的IPv4路由的地址前綴,如果單純傳送IPv6路由,這一字段可以為空;
?。?)路徑屬性總長(zhǎng)度:指明路徑屬性字段的長(zhǎng)度,以字節(jié)為單位;
?。?)路徑屬性:其中包含與路由相關(guān)的參數(shù)以及IPv6路由信息;
(5)網(wǎng)絡(luò)層可達(dá)信息:其中包含若干需要建立的IPv4路由的地址前綴,如果單純傳送IPv6路由,這一字段可以為空。
BGP4+是對(duì)BGP4協(xié)議的擴(kuò)展,不使用BGP4定義的刪除路由和網(wǎng)絡(luò)層可達(dá)信息字段來(lái)傳送路由,IPv6路由及相關(guān)的參數(shù)均通過(guò)路徑屬性中的字段來(lái)傳送。路徑屬性字段中的主要子字段及其功能如下:
?。?)ORIGIN:指明路由的來(lái)源,來(lái)自自治域內(nèi)、自治域外,或通過(guò)其他途徑得到;
?。?)AS_PATH:路由經(jīng)過(guò)的自治域的列表;
(3)NEXT_HOP:IPv4路由的下一跳地址,如果單純傳送IPv6路由,此字段可以為空;
?。?)MULT_EXIT_DISC(MED):來(lái)自自治域外的路由的權(quán)值,進(jìn)行路由選擇時(shí),MED值較低的路由被優(yōu)先選擇;
?。?)LOCAL_PREF:本自治域內(nèi)路由的優(yōu)選等級(jí),進(jìn)行路由選擇時(shí),此值較高的路由被優(yōu)先選擇;
?。?)ATOMIC_AGGREGATE:如果路由器選擇了一個(gè)較低精確度(less specific)的路由,而不是選擇較高精確度的路由,則傳送路由時(shí)用這一屬性通知其他路由器;
?。?)MP_REACH_NLRI:其中包含若干個(gè)需要建立的IPv6路由的地址前綴及其下一跳地址;
(8)MP_UNREACH_NLRI:其中包含若干個(gè)需要?jiǎng)h除的IPV6路由的地址前綴。
3.NOTIFICATION消息格式
Notification消息主要用于發(fā)送差錯(cuò)通知。
消息中各個(gè)字段的功能如下:
?。?)Error Code : 錯(cuò)誤類型代碼;
(2)Error Subcode :某種錯(cuò)誤類型下具體的出錯(cuò)原因的代碼;
?。?)Data :包含與出錯(cuò)類型有關(guān)的診斷用信息,例如,如果收端路由器發(fā)現(xiàn)UPDATE消息中的某個(gè)屬性類型錯(cuò)誤,會(huì)將該屬性的類型、長(zhǎng)度和值復(fù)制到Data字段中傳送給發(fā)端路由器。
BGP4+中規(guī)定的錯(cuò)誤類型有如下六種:
?。?)消息頭錯(cuò)誤 :消息頭中的差錯(cuò)包括marker字段出現(xiàn)錯(cuò)誤值、Type字段出現(xiàn)未定義的消息類型值、Length字段的值有錯(cuò)等等;
?。?)Open消息錯(cuò)誤 :指Open消息中出現(xiàn)了不可識(shí)別的協(xié)議版本號(hào)、AS號(hào)、路由器標(biāo)識(shí)符、不可接受的計(jì)時(shí)器值等等;
?。?)Update消息錯(cuò)誤:指UPDATE消息中出現(xiàn)了屬性格式錯(cuò)誤、屬性值不可識(shí)別或不合理、缺少了某些必備屬性等情況;
?。?)保持激活計(jì)時(shí)器超時(shí) :指在規(guī)定的保持激活時(shí)間范圍內(nèi)沒(méi)收到對(duì)端路由器發(fā)來(lái)的Keepalive消息;
?。?)有限狀態(tài)機(jī)錯(cuò)誤:指路由器發(fā)現(xiàn)的本地的某些故障狀態(tài),此時(shí)路由器會(huì)主動(dòng)用Notification消息向?qū)Χ税l(fā)送錯(cuò)誤通知;
?。?)終止(Cease):路由器在沒(méi)有任何故障的情況下,主動(dòng)向?qū)Χ税l(fā)送錯(cuò)誤類型為Cease的Notification消息,用于斷開(kāi)連接。
4.KEEPALIVE消息格式
Keepalive消息用于保持兩個(gè)路由器BGP4+會(huì)話連接的激活狀態(tài)。該消息只有消息頭,沒(méi)有消息體。路由器上有兩個(gè)計(jì)時(shí)器的值與保持激活有關(guān),即keepalive計(jì)時(shí)器和Hold Time計(jì)時(shí)器。KeepAlive計(jì)時(shí)器的缺省值為30秒,發(fā)端路由器在沒(méi)有任何消息需要發(fā)送的情況下,必須每隔30秒向?qū)Χ税l(fā)送一次keepalive消息,以便保持會(huì)話連接的激活狀態(tài);Hold Time計(jì)時(shí)器的缺省值為90秒,收端路由器如果超過(guò)90秒還未收到對(duì)端發(fā)來(lái)的keepalive消息,則發(fā)送Notification消息斷開(kāi)連接。
將BGP4+協(xié)議對(duì)消息格式的規(guī)定與對(duì)通信規(guī)程、路由處理規(guī)程的規(guī)定相結(jié)合,我們可以清楚地看出BGP4+協(xié)議的概況。
五 協(xié)議一致性測(cè)試
路由器進(jìn)行BGP4+的協(xié)議一致性測(cè)試,是為了檢驗(yàn)不同廠商開(kāi)發(fā)的IPv6路由器支持BGP4+協(xié)議的準(zhǔn)確性,判斷路由器完成的各種處理功能是否符合國(guó)際標(biāo)準(zhǔn)的規(guī)定。主要包括下列測(cè)試內(nèi)容:
?。?)連接建立功能測(cè)試:檢驗(yàn)路由器建立BGP4+會(huì)話連接的能力;
?。?)UPDATE消息格式一致性測(cè)試:檢驗(yàn)傳送路由信息的UPDATE消息的格式是否符合BGP4+協(xié)議的規(guī)定;
?。?)UPDATE消息處理功能測(cè)試:檢驗(yàn)路由器是否能對(duì)UPDATE消息進(jìn)行正確的處理,完成防止不合理路由的擴(kuò)散、防止路由循環(huán)、正確處理路由權(quán)值及選路策略信息等方面的功能;
?。?)路由處理功能測(cè)試:檢驗(yàn)路由器建立、刪除、分發(fā)、轉(zhuǎn)發(fā)路由以及路由選擇、路由聚合、路由傳送流量控制等方面的功能是否符合協(xié)議的規(guī)定;
?。?)差錯(cuò)處理功能測(cè)試:檢驗(yàn)路由器在發(fā)現(xiàn)各種路由信息差錯(cuò)時(shí),能正確地向?qū)Χ税l(fā)送NOTIFICATION消息,以便對(duì)端了解出錯(cuò)原因并斷開(kāi)連接;
?。?)路由反射功能測(cè)試:檢驗(yàn)路由器是否支持路由反射功能,客戶間的路由是否能夠以反射的方式通過(guò)RR轉(zhuǎn)發(fā),自治域內(nèi)路由是否能到達(dá)每個(gè)IBGP4+對(duì)等體;
?。?)COMMUNITY屬性處理功能測(cè)試:檢驗(yàn)路由器是否能支持BGP聯(lián)盟并有效地控制路由信息的傳播范圍。
六 結(jié)束語(yǔ)
目前國(guó)內(nèi)6Tnet、Cernet2、IPv6-CJ等實(shí)驗(yàn)網(wǎng)絡(luò)已經(jīng)建成,中國(guó)移動(dòng)、中國(guó)網(wǎng)通等運(yùn)營(yíng)商參與的CNGI工程也已經(jīng)展開(kāi),國(guó)內(nèi)IPv6商用網(wǎng)投入了建設(shè),國(guó)際上韓國(guó)和日本也推出了自己的IPv6商用網(wǎng)。隨著IPv6技術(shù)的逐步推廣,BGP4+協(xié)議的應(yīng)用也會(huì)越來(lái)越廣泛。
鑒于BGP4+協(xié)議對(duì)于IPv6網(wǎng)絡(luò)的互聯(lián)互通以及IPv4向IPv6技術(shù)的平穩(wěn)過(guò)渡具有關(guān)鍵作用,信產(chǎn)部電信研究院標(biāo)準(zhǔn)研究所制定了《支持IPv6的路由協(xié)議測(cè)試方法——邊界網(wǎng)關(guān)協(xié)議(BGP4+)》行業(yè)標(biāo)準(zhǔn),用于檢驗(yàn)IPv6路由器支持BGP4+協(xié)議的能力。該行標(biāo)規(guī)定的測(cè)試方法已經(jīng)用于國(guó)內(nèi)一些實(shí)驗(yàn)網(wǎng)、商用網(wǎng)的組網(wǎng)設(shè)備選型測(cè)試以及信產(chǎn)部的IPv6路由器入網(wǎng)檢驗(yàn)工作中。
評(píng)論