BGP管理距離和后門路由、條件注入及屬性
一)、管理距離和后門路由
distancebgpexternalinternallocal修改EBGPIBGPlocalbgp的AD從而對選路產生影響;
在兩個AS間可以存在一條單獨鏈路交換相互間的數據量,但并不通告給其他AS,此時對于這條鏈路兩端路由器可以加入network192.1.12.2backdoor即可,稱為"后門路由":backdoor屬性是使router優選從IGP學過來的路由而不是優選從IBGP鄰居學過來的路由,因為缺省情況下EBGP鄰居的AD為20,會始終優先選擇,而不會選擇其他AD的IGP路由協議傳過來的路由。
后門路由用于一些特殊的情況將IGP路由的優先級調高于EBGP,下面看一種比較特殊的情況
例如如上拓撲結構,BB2中的199.172.0.0網段,通過重分布進入OSPF路由。在R5和R3上將會學到來自R4的IGP路由,同時R5做為R4的IBGP鄰居將會學到一條IBGP的路由,由于IBGP路由管理距離大,在R5上對于選路沒有影響,但對于R3而言,它將學到一條來自R5的EBGP路由,同時收到R4的IGP路由,此時,R3將把199.172.0.0的下一跳定義為R5,此時就產生了環路了。解決此問題的方法就是在R5和R3上的neighbor后掛接backdoor參數:neiip-addressbackdoor
產生這種現象的原因無非是BGP學習條目時候next-hop屬性,默認的下一跳規則如下,自己產生的路由的下一跳為0.0.0.0,收到來自EBGP路由將下一跳改為EBGP對端的IP,對IBGP通告時不修改下一跳的值。但是可以通過next-hop-self修改此規則,將對IBGP也通告下一跳地址為自己。另可以采用next-hop-unchanged,防止收到EBGP路由后,修改下一跳的值,例如如上環路問題,也可通過在R5和R4上宣告Next-hop-unchanged來解決對于下一跳屬性,還可以使用route-map來更改。
二)、條件路由注入
Bgpinject-maproutemap-nameexist-maproutemap-name[copy-attributes]
對于如上的拓撲結構,AS100遵循***出口原則,即172.16.1.0走R2->R4172.16.2.0走R3->R5
有如下配置方法:
1.MED,在AS200上設置MED,使AS100識別
2.AS-PathPrepend,R4通告給R2的2.0路由,加長AS-path,同理R5
3.使用條件路由注入
首先左邊as300,有更為細化的172.16.1.0/24的路由
那么,在as100內收到172.16.0.0/16的路由,正常可能不是走r2-4的***路徑,可能是從r3-5ebgp走的
那么條件路由注入(bgpinject-maproute-mapnameexist-maproute-mapname)的含義就是:
當r2bgp表中出現了172.16.0.0/16bgp路由,并且下一跳的路由更新源為192.168.24.4(r4)的時候,強行插入一個172.16.1.0/24的更為細化的bgp路由進入你的as100IBGP
這樣,你的r1的ibgp路由選擇就會發生變化,他會從r2r3同時受到172.16.0.0/16和172.16.1.0/24,但是根據路由的最長匹配原則,他會選擇r2宣告的172.16.1.0/24去往as300。配置如下:
R2:
routerbgp100
bgpinject-mapAS200-specificexist-mapAS200-aggregate/*調用路由圖
neighbor192.168.12.1remot-as100
nei192.168.12.1send-community
nei192.168.23.3remot-as100
nei192.168.23.3send-community
nei192.168.24.4remot-as200
nei192.168.24.4send-community
ipbgp-communitynex-format/*支持BGP新的團體屬性格式
ipprefix-listAS200-R4permit192.168.24.4/32/*做路由器接口地址的前綴列表
ippreAggregatepre172.16.0.0/16/*做類的匯總條目的前綴列表
ippreSpecificper172.16.1.0/24/*做明細條目的前綴列表
route-mapAS200-specficper10/*做路由圖AS200-specfic并匹配所有
setipaddpreSpecific/*設置ip地址為Specific的前綴條目
setcommunity100:200no-export/*設置團體屬性為no-export(不宣告給下一跳as以外的其他as)
route-mapAS200-aggregateper10/*做路由圖AS200-aggregate
matipaddpreAggregate/*匹配Aggregate前綴的路由條目
matiproute-sourceAS200-R4/*匹配路由源是AS200-R4的鄰居學到的路由條目
總體調用過程理解為:匹配第二個路由圖所匹配的條目(172.16.0.0/16和192.168.24.4/32),將其設置成***個路由圖的屬性(172.16.1.0/24并且no-export)
達到的效果就是:當r2bgp表中出現了172.16.0.0/16bgp路由,并且下一跳的路由更新源為192.168.24.4(r4)的時候,強行插入一個172.16.1.0/24的更為細化的bgp路由進入你的as100IBGP
這樣,你的r1的ibgp路由選擇就會發生變化,他會從r2r3同時受到172.16.0.0/16和172.16.1.0/24,但是根據路由的最長匹配原則,他會選擇r2宣告的172.16.1.0/24去往as300
關于試驗,偶沒做出來效果,網絡搜索也沒查證到相關試驗資料,有高手路過看到跪求指點。
三)、local_as屬性:
如果AS8的路由器Day將進行遷移,假設為Day和Night合并為AS9,而不修改AS141~AS143的路由器(他們依舊認為Day屬于AS8),這種遷移需要加入一個loca-as參數,即將Day的BGP進程改為9后,對指向的鄰居做如下修改:neighbor192.1.12.2remot-as200
neighbor192.1.12.2local-as8
但是8上的AS-Path將會為89…..在做As_path過濾時需要添加這個local-as可以在local-as后加入no-prepend參數修改這個屬性。
R6--R2--R4連接,R6為BGP6,R2為BGP12,R4為BGP345,將R2遷移至BGP6內,以下配置:
R2(config)#norouterb12
R2(config)#routerb6
R2(config-router)#bro2.2.2.2
R2(config-router)#noau
R2(config-router)#nosy
R2(config-router)#nei192.1.24.4remot345
R2(config-router)#nei192.1.26.6remot6
*Mar102:25:01.939:%BGP-3-NOTIFICATION:receivedfromneighbor192.1.24.42/2(peerinwrongAS)2bytes0006
R2(config-router)#nei192.1.24.4local-as?
<1-65535>ASnumberusedaslocalAS
<cr>
R2(config-router)#nei192.1.24.4local-as12
查看BGP鄰居建立情況:
R2#showipbsu
NeighborVASMsgRcvdMsgSentTblVerInQOutQUp/DownState/PfxRcd
1.1.1.141200000neverIdle
192.1.24.443458710000:02:140
192.1.26.64688000neverActive
可以發現,沒有配置nei192.1.24.4local-as12前,R4上關于R2的鄰居關系還是BGP12的EBGP鄰居,但是R2已經改變了BGP的AS號,所以鄰居關系報錯,(peerinwrongAS)
配置nei192.1.24.4local-as12之后,R2就成功的過渡到AS6內,在AS6內成功的與R4建立鄰居關系。
【編輯推薦】