BGP Border Gateway Protocol 邊界網(wǎng)關(guān)協(xié)議
Border Gateway Protocol -- 邊界網(wǎng)關(guān)協(xié)議
BGP(Border Gateway Protocol,邊界網(wǎng)關(guān)協(xié)議)是用來(lái)連接Internet上的獨(dú)立系統(tǒng)的路由選擇協(xié)議。它是Internet工程任務(wù)組制定的一個(gè)加強(qiáng)的、完善的、可伸縮的協(xié)議。BGP4支持CIDR尋址方案,該方案增加了Internet上的可用IP地址數(shù)量。BGP是為取代最初的外部網(wǎng)關(guān)協(xié)議EGP設(shè)計(jì)的。它也被認(rèn)為是一個(gè)路徑矢量協(xié)議。
BGP(Border GatewayProtocol)是一種在自治系統(tǒng)之間動(dòng)態(tài)交換路由信息的路由協(xié)議。一個(gè)自治系統(tǒng)的經(jīng)典定義是在一個(gè)管理機(jī)構(gòu)控制之下的一組路由器,它使用IGP和普通度量值向其他自治系統(tǒng)轉(zhuǎn)發(fā)報(bào)文。
在BGP中使用自治系統(tǒng)這個(gè)術(shù)語(yǔ)是為了強(qiáng)調(diào)這樣一個(gè)事實(shí):一個(gè)自治系統(tǒng)的管理對(duì)于其他自治系統(tǒng)而言是提供一個(gè)統(tǒng)一的內(nèi)部選路計(jì)劃,它為那些通過(guò)它可以到達(dá)的網(wǎng)絡(luò)提供了一個(gè)一致的描述。
BGP,邊界網(wǎng)關(guān)協(xié)議,是自主網(wǎng)絡(luò)系統(tǒng)中網(wǎng)關(guān)之間交換器路由信息的協(xié)議。邊界網(wǎng)關(guān)協(xié)議常常應(yīng)用于互聯(lián)網(wǎng)的網(wǎng)關(guān)之間。路由表包含已知路由器的列表、路由器能夠達(dá)到的地址以及到達(dá)每個(gè)路由器的路徑的跳數(shù)。
使用邊界網(wǎng)關(guān)協(xié)議的主機(jī)一般也使用傳輸控制協(xié)議(TCP)。當(dāng)網(wǎng)絡(luò)檢測(cè)到某臺(tái)主機(jī)發(fā)出變化時(shí),就會(huì)發(fā)送新的路由表。BGP-4,邊界網(wǎng)關(guān)協(xié)議的最新版本,允許網(wǎng)絡(luò)管理員在策略描述下配置跳數(shù)的規(guī)格。
BGP是目前應(yīng)用在因特網(wǎng)上的IP網(wǎng)絡(luò)互聯(lián)協(xié)議,為運(yùn)營(yíng)商之間的互聯(lián)提供了穩(wěn)定而安全的路由協(xié)議,具有豐富的路由控制機(jī)制。為了更好地控制路由策略,當(dāng)前大部分的運(yùn)營(yíng)商均將BGP部署到骨干路由器。隨著網(wǎng)絡(luò)的不斷擴(kuò)展、路由器數(shù)目的增多以及路由信息條目的激增,解決BGP的擴(kuò)展性問(wèn)題變得越來(lái)越重要。
目前BGP的擴(kuò)展性面臨如下幾個(gè)問(wèn)題。
(1)I-BGP的Full-Mesh問(wèn)題>
BGP路由協(xié)議分為I-BGP和E-BGP兩個(gè)部分。I-BGP用于自治域內(nèi)的路由器之間,E-BGP用于自治域間的路由器之間。為了防止產(chǎn)生環(huán)回路由,BGP協(xié)議要求一個(gè)路由器通過(guò)I-BGP學(xué)到的路由,不再向其他I-BGP鄰居廣播,所以一個(gè)自治域內(nèi)所有參加I-BGP協(xié)議的路由器都要與其他路由器建立會(huì)話,從而保證路由信息能夠正確地廣播到每一個(gè)路由器。依照這個(gè)原則,一個(gè)自治域內(nèi)總的I-BGP會(huì)話數(shù)為N×(N-1)/2 (N為運(yùn)行I-BGP的路由器數(shù)),當(dāng)N不斷增大時(shí),這個(gè)數(shù)字會(huì)大得驚人:如100臺(tái)路由器,則會(huì)話數(shù)為4950.這對(duì)網(wǎng)絡(luò)設(shè)備而言是個(gè)非常大的負(fù)擔(dān),而且還將使網(wǎng)絡(luò)的管理與配置變得異常復(fù)雜。而骨干網(wǎng)通常由大量的運(yùn)行I-BGP的路由器組成,因此,這個(gè)問(wèn)題是否能夠解決,直接影響到網(wǎng)絡(luò)規(guī)模的大小。
(2)更改路由策略時(shí)路由振蕩的問(wèn)題
BGP屬于增量更新的路由協(xié)議,當(dāng)有新的路由要發(fā)布時(shí),路由器會(huì)向鄰居發(fā)送Update信息,而如果要?jiǎng)h除某條路由時(shí),就會(huì)發(fā)送Withdraw信息。BGP路由的Flap的定義是:當(dāng)一條路由在被收回(Withdraw)后,又被廣播(Update)出來(lái),視為一次Flap.由于任何一條路由的收回和更新都會(huì)導(dǎo)致一臺(tái)路由器整個(gè)路由表重新計(jì)算,因此當(dāng)Flap的情況比較多時(shí),對(duì)路由器設(shè)備的負(fù)載將產(chǎn)生巨大的壓力。根據(jù)筆者在實(shí)際工作中的經(jīng)驗(yàn),一般情況下,一臺(tái)高端路由器在計(jì)算BGP路由的時(shí)候,CPU的負(fù)載基本上在80%~90%左右,有時(shí)甚至達(dá)到100%,占用了幾乎所有的CPU資源。雖然目前大部分的高端路由器都將路由計(jì)算的模塊與轉(zhuǎn)發(fā)模塊分布在不同的硬件上,來(lái)減少主CPU忙導(dǎo)致的路由器性能下降的問(wèn)題,但是路由表的頻繁變化和更新,對(duì)整個(gè)設(shè)備的運(yùn)行還是有一定的影響的,而且這樣的計(jì)算會(huì)隨著路由的收回或廣播,繼續(xù)向自治域內(nèi)部擴(kuò)展,使內(nèi)部的路由器產(chǎn)生同樣的問(wèn)題。
(3)其他需要考慮的問(wèn)題
除了上面的兩個(gè)問(wèn)題會(huì)導(dǎo)致對(duì)路由器資源過(guò)量消耗之外,還有其他的一些因素,如路由的數(shù)目、BGP路由表的大小和路由計(jì)算的方式等,同樣也會(huì)影響路由器的性能。
另外,網(wǎng)絡(luò)越大,路由條目越多,配置和管理的工作也就越復(fù)雜,這就需要在網(wǎng)絡(luò)設(shè)計(jì)的時(shí)候盡量簡(jiǎn)化配置,降低管理人員的工作強(qiáng)度,避免人為原因造成故障。
2 如何解決制約BGP擴(kuò)展性的問(wèn)題
針對(duì)以上問(wèn)題,介紹一些相關(guān)的解決方法。
(1)解決I-BGP會(huì)話數(shù)瓶頸的方法
上面提到的I-BGP的會(huì)話數(shù)過(guò)多的問(wèn)題,可以采取兩種辦法來(lái)解決:
1)聯(lián)盟的方法(Confederations)
聯(lián)盟的工作原理是:將原來(lái)一個(gè)自治域的網(wǎng)絡(luò)分成多個(gè)子自治域,通過(guò)Confederations id將原AS號(hào)配置到每個(gè)路由器上。這樣有兩個(gè)好處:一是可以保留原有的I-BGP屬性,包括Local Preference、MED和NEXT_HOP;二是能在Confederations的功能中自動(dòng)實(shí)現(xiàn),無(wú)需管理員在網(wǎng)絡(luò)的出口處配置過(guò)濾內(nèi)部AS號(hào)信息的操作。
2)路由反射器(Route-Reflector)
采用路由反射器是目前應(yīng)用最廣泛的方法,較之前面聯(lián)盟的方法,具有更好的擴(kuò)展性。路由反射器的工作原理是:將一個(gè)自治域內(nèi)的路由器分成幾個(gè) Cluster,每個(gè)Cluster由Reflector和Client組成。Reflector之間形成Full Mesh,運(yùn)行常規(guī)的I-BGP;Client只與Reflector運(yùn)行I-BGP,對(duì)于Client來(lái)說(shuō),Reflector只是普通的鄰居而已, Reflector則扮演了路由集散地的角色,將從其他Reflector學(xué)到的I-BGP路由轉(zhuǎn)發(fā)給Client,同時(shí),將從Client學(xué)到的I- BGP路由轉(zhuǎn)發(fā)給Cluster內(nèi)的其他Clients和Cluster外的其他Reflector,再借由Reflectors廣播到其所在的 Cluster.在實(shí)際的網(wǎng)絡(luò)中,為了提高冗余度,通常一個(gè)Client與多個(gè)Reflector建立鄰居關(guān)系,而且不局限于Client所在 Cluster的Reflector.
由此可見(jiàn),Client上的I-BGP會(huì)話數(shù)一般為1~2個(gè),與聯(lián)盟的方法相比,只要Reflector的性能足夠高,Cluster就可以做得很大,而Client的負(fù)載不會(huì)隨Cluster的變化有太大的變化。對(duì)于前一種方法,由于一個(gè)子自治域的所有路由器還是要做到Full Mesh,所以最低性能的路由器決定了一個(gè)子自治域的大。欢酚煞瓷淦鞣▌t通常是一個(gè)或多個(gè)最高性能的路由器決定Cluster的大小,因此,具有更好的網(wǎng)絡(luò)擴(kuò)展性能。
另外,一個(gè)Reflector也可以成為另外一個(gè)Reflector的Client,形成層級(jí)結(jié)構(gòu),這特別適用于按照分層結(jié)構(gòu)建設(shè)的網(wǎng)絡(luò),可以很容易地把平面的網(wǎng)絡(luò)管理演變?yōu)榉謱庸芾怼?BR> 當(dāng)然,在使用路由反射器的時(shí)候,也有一些需要注意的地方,比如:Reflector并不是純粹的轉(zhuǎn)發(fā)路由,所有收到的路由在Reflector上同樣要經(jīng)過(guò)最優(yōu)計(jì)算,然后將優(yōu)選路由向外廣播,所以Reflector的選擇要依據(jù)網(wǎng)絡(luò)結(jié)構(gòu)而定,盡量使I-BGP鄰居關(guān)系與實(shí)際的電路連接關(guān)系相對(duì)應(yīng)。
(2)控制路由振蕩
目前,控制Route Flap主要采取Damping的方法:一個(gè)BGP路由器對(duì)收到的E-BGP路由設(shè)定Penalty值,每一次路由Flap都會(huì)使該路由的Penalty 值增大,而路由穩(wěn)定時(shí),Penalty值會(huì)隨時(shí)間而減。划(dāng)Penalty值超過(guò)預(yù)設(shè)的抑制限制時(shí),該路由就不再被廣播,而當(dāng)Penalty減小至低于重用限制時(shí),該路由才會(huì)被重新向外廣播。這種方法主要是針對(duì)E-BGP鄰居而言的。這樣,當(dāng)一個(gè)網(wǎng)絡(luò)內(nèi)部發(fā)生路由振蕩時(shí),與之相連的其他網(wǎng)絡(luò)通過(guò) Damping可以有效地防御對(duì)各自網(wǎng)絡(luò)的影響。
在網(wǎng)絡(luò)維護(hù)中,經(jīng)常會(huì)遇到這樣的情況:寧愿一條電路中斷一段時(shí)間,也不希望它在不停地震蕩。因?yàn)橹袛嘁欢螘r(shí)間后,只要電路恢復(fù),網(wǎng)絡(luò)流量也會(huì)隨之恢復(fù);與此相反,振蕩的電路恢復(fù)后,需要等待一段時(shí)間才能恢復(fù)正常的流量(其他網(wǎng)絡(luò)都在抑制振蕩的路由)。Damping則可以有效地保證因特網(wǎng)的穩(wěn)定,但同時(shí)也會(huì)導(dǎo)致一些故障的延時(shí)恢復(fù)。
當(dāng)前的設(shè)備基本都支持Damping的功能,而且提供可以配置的參數(shù)來(lái)精細(xì)控制Damping.一般情況下,設(shè)備提供的缺省配置能夠滿足大多數(shù)網(wǎng)絡(luò)的需求,如果確有特殊需要,則一定要經(jīng)過(guò)仔細(xì)計(jì)算,否則,不是沒(méi)有效果,就是把別人的路由抑制后很長(zhǎng)時(shí)間不能恢復(fù)。
(3)Peer Group的應(yīng)用
在實(shí)際的網(wǎng)絡(luò)中,有一種非常普遍的現(xiàn)象,即一個(gè)路由器會(huì)有多個(gè)屬于一類(lèi)的BGP Peer.這里的“屬于一類(lèi)”是指BGP的策略相同或類(lèi)似,當(dāng)Peer比較多時(shí),BGP的配置會(huì)變得臃腫,同時(shí),路由器的負(fù)載也會(huì)加重,因?yàn)橐坏┯新酚傻母拢酚善餍枰槍?duì)每個(gè)Peer做一次策略計(jì)算(雖然策略都相同)。另外,應(yīng)用Peer Group還有一個(gè)好處,就是降低了對(duì)路由器設(shè)備的資源消耗,因?yàn)槁酚善鲗?duì)同一Group更新路由時(shí),由于使用相同策略,因此只進(jìn)行一次路由計(jì)算,從而大大減少了占用CPU的時(shí)間。
在實(shí)際的網(wǎng)絡(luò)維護(hù)中,即使當(dāng)同一類(lèi)的Peer很少時(shí),一般也建議采用Peer Group的方式,因?yàn)檫@樣具有很好的擴(kuò)展性。Peer Group不但適用于I-BGP的Peer,也適用于E-BGP的Peer.
(4)關(guān)于route refresh的措施
骨干網(wǎng)絡(luò)維護(hù)中,經(jīng)常會(huì)遇到修改BGP策略的情況,如更新某個(gè)Peer的as-path限制列表,在配置修改后需要使其生效,以前的做法是中斷當(dāng)前的BGP會(huì)話,然后重新建立,命令如下:
clear ip bgp x.x.x.x
這么做主要是因?yàn)槁酚善髟谑盏綄?duì)方的BGP路由表后,先進(jìn)行策略運(yùn)算,然后將最優(yōu)路由存儲(chǔ)在本機(jī)的BGP路由表中,而不是把原始的路由統(tǒng)統(tǒng)保存。當(dāng)策略改變時(shí),必須重新建立連接來(lái)獲得對(duì)方的全部路由,然后利用新策略再次計(jì)算。這種方式的弊端顯而易見(jiàn),如網(wǎng)絡(luò)阻斷、大量消耗路由器的CPU資源等。
解決這個(gè)問(wèn)題目前通常采用兩種方法:一種方法是設(shè)法保存原始的BGP路由,這樣,重新計(jì)算時(shí)就不需要重傳了;另外一種方法是在啟用新策略的時(shí)候,在不中斷BGP會(huì)話的前提下,向?qū)Ψ秸?qǐng)求重發(fā)全部BGP路由表。
第一種方法是利用軟件配置實(shí)現(xiàn)的,配置的命令如下:
neighbor 1.1.1.1 soft-reconfiguration inbound
在啟用新策略的時(shí)候輸入命令:
clear ip bgp 1.1.1.1 soft [in|out]
這樣,所有的原始BGP路由就會(huì)被存儲(chǔ)在另外一張路由表里面,在修改策略的時(shí)候,通過(guò)對(duì)這張路由表進(jìn)行運(yùn)算,就可以得到最優(yōu)的BGP路由表,這樣對(duì)路由產(chǎn)生的資源消耗較;而且有這樣一張?jiān)嫉穆酚杀,可以在修改策略后、正式啟用之前使用命令?lái)檢查策略修改后的效果。但這種方法需要額外的內(nèi)存資源來(lái)存儲(chǔ)路由表。
第二種方法是由路由器設(shè)備的BGP 能力(BGP Capabilities)決定的,也就是系統(tǒng)軟件本身內(nèi)置的功能模塊。在建立BGP會(huì)話的時(shí)候,這個(gè)參數(shù)通過(guò)BGP OPEN在兩個(gè)路由器間進(jìn)行交換。一個(gè)設(shè)備是否支持BGP Refresh Capabilites,可以用命令下列來(lái)檢查:
show ip bgp n x.x.x.x
如果參與BGP的兩個(gè)路由器都具備這個(gè)功能,那么不需要任何配置,當(dāng)執(zhí)行clear ip bgp n x.x.x.x in 時(shí),本端BGP進(jìn)程不會(huì)中斷BGP會(huì)話,而是向?qū)Χ苏?qǐng)求重發(fā)全部的BGP路由表。相對(duì)于第一種方法,這種方法的好處是可以節(jié)省內(nèi)存資源,缺點(diǎn)是網(wǎng)絡(luò)管理員無(wú)法了解對(duì)方發(fā)過(guò)來(lái)的原始路由,而且重發(fā)了全部路由表,效率上也沒(méi)有第一種方法高。目前骨干網(wǎng)內(nèi)的設(shè)備基本上都支持這個(gè)功能。
3 總結(jié)
以上對(duì)BGP擴(kuò)展性相關(guān)的幾個(gè)問(wèn)題和相關(guān)的措施進(jìn)行了論述,在實(shí)際的應(yīng)用中還需要根據(jù)具體情況來(lái)部署。但是總的思路和原則都是一樣的,即一方面要降低設(shè)備的資源消耗,另外一方面要簡(jiǎn)化維護(hù)管理,從硬件、軟件兩方面來(lái)提高網(wǎng)絡(luò)的擴(kuò)展性。