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ì)話連接不僅消耗設(shè)備資源,更增加了路由策略管理的復(fù)雜度。BGP聯(lián)邦(BGP Confederation)作為解決這一難題的關(guān)鍵技術(shù),通過邏輯分區(qū)的創(chuàng)新設(shè)計(jì),在保持AS整體性的同時(shí)實(shí)現(xiàn)了路由管理的層級化。

聯(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號壓入AS PATH,但不公布到聯(lián)邦外,并且使用TYPE3、4的AS PATH
 - AS PATH中的聯(lián)邦A(yù)S號用于在聯(lián)邦內(nèi)部避免環(huán)路
 
通過將AS123定義為聯(lián)邦A(yù)S(大AS),同時(shí)在聯(lián)邦A(yù)S中創(chuàng)建成員AS(小AS:AS64512和64513),則可以解決IBGP路由傳遞的問題。

圖中R1與R2之間是聯(lián)邦iBGP關(guān)系,而R2與R3之間是聯(lián)邦eBGP關(guān)系,在聯(lián)邦內(nèi)部,R1與R2都是屬于AS64512,R3屬于AS64513,但是對于聯(lián)邦外部來說,R1、R2、R3都是AS123,外部根本不知道有AS64512和AS64513的存在。
R1、R2、R3、R4、R5之間使用全部直連口建立BGP鄰居關(guān)系。
R1配置:
router bgp 64512  ! 使用聯(lián)邦成員AS號(64512)建立BGP
 bgp log-neighbor-changes
 bgp confederation identifier 123 ! 對聯(lián)邦外的AS通告自己的真實(shí)AS號 
 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
!對于R2而言,R2是一個(gè)普通的EBGP鄰居(AS64513),而且跟我沒有一點(diǎn)關(guān)系,聯(lián)邦的建立就會(huì)有問題,因此還需要在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路徑屬性的四種類型
- AS_SEQUENCE:有序AS號集合
 - AS_CONFED_SEQUENCE:聯(lián)邦有序AS號集合
 - AS_SET:無序AS號集合
 - AS_CONFED_SET:聯(lián)邦無序AS號集合
 
在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號為400:

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

在R5的e0/0接口抓包,捕捉NLRI為44.1.1.1/32屬性中攜帶的AS_PATH,AS號分別為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)部的情況)。















 
 
 

 
 
 
 