BGP 路由協(xié)議之聯(lián)邦大法
在大型自治系統(tǒng)(AS)中,傳統(tǒng)的iBGP全連接架構(gòu)面臨嚴(yán)峻挑戰(zhàn)。當(dāng)網(wǎng)絡(luò)規(guī)模擴(kuò)展到數(shù)百臺(tái)路由器時(shí),維護(hù)n(n-1)/2的會(huì)話(huà)連接不僅消耗設(shè)備資源,更增加了路由策略管理的復(fù)雜度。BGP聯(lián)邦(BGP Confederation)作為解決這一難題的關(guān)鍵技術(shù),通過(guò)邏輯分區(qū)的創(chuàng)新設(shè)計(jì),在保持AS整體性的同時(shí)實(shí)現(xiàn)了路由管理的層級(jí)化。

聯(lián)邦的相關(guān)特性
- 在聯(lián)邦內(nèi)部保留聯(lián)邦外部的NEXT HOP屬性
- 公布給聯(lián)邦的路由的MED屬性在整個(gè)聯(lián)邦范圍內(nèi)予以保留
- 路由的LOCAL_PREF屬性在整個(gè)聯(lián)邦范圍內(nèi)予以保留
- 在聯(lián)邦范圍內(nèi),將成員AS號(hào)壓入AS PATH,但不公布到聯(lián)邦外,并且使用TYPE3、4的AS PATH
- AS PATH中的聯(lián)邦A(yù)S號(hào)用于在聯(lián)邦內(nèi)部避免環(huán)路
通過(guò)將AS123定義為聯(lián)邦A(yù)S(大AS),同時(shí)在聯(lián)邦A(yù)S中創(chuàng)建成員AS(小AS:AS64512和64513),則可以解決IBGP路由傳遞的問(wèn)題。

圖中R1與R2之間是聯(lián)邦iBGP關(guān)系,而R2與R3之間是聯(lián)邦eBGP關(guān)系,在聯(lián)邦內(nèi)部,R1與R2都是屬于A(yíng)S64512,R3屬于A(yíng)S64513,但是對(duì)于聯(lián)邦外部來(lái)說(shuō),R1、R2、R3都是AS123,外部根本不知道有AS64512和AS64513的存在。
R1、R2、R3、R4、R5之間使用全部直連口建立BGP鄰居關(guān)系。
R1配置:
router bgp 64512 ! 使用聯(lián)邦成員AS號(hào)(64512)建立BGP
bgp log-neighbor-changes
bgp confederation identifier 123 ! 對(duì)聯(lián)邦外的AS通告自己的真實(shí)AS號(hào)
no bgp default ipv4-unicast
neighbor 10.12.1.2 remote-as 64512
neighbor 10.14.1.4 remote-as 400
!
address-family ipv4
redistribute connected
neighbor 10.12.1.2 activate
neighbor 10.14.1.4 activate
exit-address-family
!R2配置:
router bgp 64512
bgp log-neighbor-changes
bgp confederation identifier 123
bgp confederation peers 64513
no bgp default ipv4-unicast
neighbor 10.12.1.1 remote-as 64512
neighbor 10.23.1.3 remote-as 64513
!
address-family ipv4
redistribute connected
neighbor 10.12.1.1 activate
neighbor 10.23.1.3 activate
exit-address-family
!對(duì)于R2而言,R2是一個(gè)普通的EBGP鄰居(AS64513),而且跟我沒(méi)有一點(diǎn)關(guān)系,聯(lián)邦的建立就會(huì)有問(wèn)題,因此還需要在R2上增加bgp confederation peers 64513命令,R2將AS64513視為它的聯(lián)邦eBGP peer,如果聯(lián)邦內(nèi)有多個(gè)成員AS,那么本地需指定多個(gè)peers,命令:bgp confederation peers xx yy zz
R3配置:
router bgp 64513
bgp log-neighbor-changes
bgp confederation identifier 123
bgp confederation peers 64512
no bgp default ipv4-unicast
neighbor 10.23.1.2 remote-as 64512
neighbor 10.35.1.5 remote-as 500
!
address-family ipv4
redistribute connected
neighbor 10.23.1.2 activate
neighbor 10.35.1.5 activate
exit-address-family
!配置完成后在R4上trace到R5的lo接口地址:

AS_PATH路徑屬性的四種類(lèi)型
- AS_SEQUENCE:有序AS號(hào)集合
- AS_CONFED_SEQUENCE:聯(lián)邦有序AS號(hào)集合
- AS_SET:無(wú)序AS號(hào)集合
- AS_CONFED_SET:聯(lián)邦無(wú)序AS號(hào)集合
在R4上啟用loopback1接口,并分配IP地址:
interface Loopback1
ip address 44.1.1.1 255.255.255.255
!R1上的BGP表:
Network Next Hop Metric LocPrf Weight Path
*> 44.1.1.1/32 10.14.1.4 0 0 400 ?R2上的BGP表:
Network Next Hop Metric LocPrf Weight Path
*>i 44.1.1.1/32 10.14.1.4 0 100 0 400 ?R3上的BGP表:
Network Next Hop Metric LocPrf Weight Path
*> 44.1.1.1/32 10.14.1.4 0 100 0 (64512) 400 ?在R2的e0/1接口抓包,捕捉NLRI為44.1.1.1/32屬性中攜帶的AS_PATH,AS號(hào)為400:

在R3的e0/1接口抓包,捕捉NLRI為44.1.1.1/32屬性中攜帶的AS_PATH,AS號(hào)分別為64512,400:

在R5的e0/0接口抓包,捕捉NLRI為44.1.1.1/32屬性中攜帶的AS_PATH,AS號(hào)分別為123,400:

可以看出AS_CONFED_SEQUENCE屬性用于在聯(lián)邦內(nèi)防環(huán)(該屬性不會(huì)出聯(lián)邦),而上面的AS_SEQUENCE屬性則會(huì)隨著44.1.1.1/32的路由被傳遞給R5,因此在R5上抓包44.1.1.1/32的路由看不到AS_CONFED_SEQUENCE的屬性,外部AS將聯(lián)邦視為單個(gè)AS(外部并不知道聯(lián)邦內(nèi)部的情況)。




















