BGP修改NEXT_HOP下一跳屬性值的幾種方法
本博文將為您詳細(xì)介紹BGP修改NEXT_HOP下一跳屬性值的幾種方法,包括通過(guò)next-hop-self變更next-hop屬性,通過(guò)route-map修改BGP路由NEXT_HOP屬性值等。
1.通過(guò)next-hop-self可以變更next-hop屬性
上圖R5更新給EBGP鄰居R2 BGP路由5.5.5.0時(shí),NEXT_HOP=192.168.25.5,該屬性將一直跟隨本條BGP路由在AS234中傳遞,這時(shí)對(duì)于R4、R3來(lái)說(shuō),并不知道如何前往192.168.25.5,因此5.5.5.0的路由無(wú)法正常裝入路由表。解決方法之一是R2在IGP路由中注入25.0這條外部路由,另一個(gè)方法是R2對(duì)其IBGP鄰居使用next-hop-self,修改這條前綴的NEXT_HOP屬性。
NEXT_HOP on shared Media(在共享介質(zhì)上的運(yùn)作)
RouterB將路由100.100.100.0/24傳遞給A,NEXT_HOP為10.1.123.2;
RouterA將路由100.100.100.0/24傳遞給C,此時(shí)NEXT_HOP保持不變;
如果路由器收到某條BGP路由,該路由的NEXT_HOP地址值與該路由器的接口IP(更新源)同屬一個(gè)網(wǎng)段,那么該條路由的NEXT_HOP地址將保持不變并傳遞給它的(這個(gè)相同網(wǎng)段上的)BGP鄰居,這個(gè)其實(shí)是一種優(yōu)化機(jī)制,但是這種機(jī)制在NBMA環(huán)境中是否有問(wèn)題呢?
NEXT_HOP on NMBA network
仍然看上圖,中間的網(wǎng)絡(luò)如果不是廣播多路訪問(wèn)網(wǎng)絡(luò),而是一個(gè)幀中繼網(wǎng)絡(luò),那么就要注意,C收到的路由,NEXT_HOP為10.1.123.2,那么如果C路由器上沒(méi)有到該IP的PVC,就會(huì)出問(wèn)題,所以這點(diǎn)要考慮進(jìn)去。
2.通過(guò)route-map修改BGP路由NEXT_HOP屬性值
BGP的鄰居關(guān)系如圖所示,R1-R2建立基于Loopback的iBGP鄰居關(guān)系。R2-R3建立基于直連接口的eBGP鄰居關(guān)系。那么在默認(rèn)情況下,R1通告給R2的路由11.0/24下一跳屬性值為1.1.1.1,也就是R1的更新源IP,而R2將路由更新給eBGP鄰居R3時(shí),路由的NH變成了10.1.23.2、
R2上增加配置
access-list 1 permit 11.11.11.0
route-map test permit 10
match ip address 1
set ip next-hop 10.1.23.99
router bgp 12
neighbor 10.1.23.3 route-map test out
通過(guò)在R2上部署out方向的route-map,可以修改傳遞給R3的BGP路由的NEXT_HOP屬性值,當(dāng)然上面的范例設(shè)置的10.1.23.99沒(méi)有任何意義,純粹是一個(gè)測(cè)試而已。
3.關(guān)于BGP next-hop-unchanged特性
(承上一小節(jié))另一個(gè)可以影響B(tài)GP NEXT_HOP屬性值的特性是BGP next-hop-unchanged特性。
首先這條命令只能對(duì)多跳eBGP peer配置,所以上圖中,R2及R3需建立基于Loopback的eBGP鄰居關(guān)系,形成multihop eBGP peer。
在R2收到iBGP peer傳來(lái)的路由11.0/24,其N(xiāo)EXT_HOP屬性值為1.1.1.1,如過(guò)R2上在BGP進(jìn)程中使用neighbor 3.3.3.3 next-hop-unchanged配置,那么R2將BGP路由傳遞給eBGP鄰居R3時(shí),路由的NEXT_HOP屬性值將不會(huì)發(fā)生變化。
再進(jìn)一步做個(gè)測(cè)試,現(xiàn)在把拓?fù)洵h(huán)境變更一下:

R1-R2之間變成了eBGP鄰居了,基于直連接口建立eBGP鄰居關(guān)系;
R2-R3之間仍然是基于Loopback建立的多跳eBGP鄰居關(guān)系;
現(xiàn)在R1傳來(lái)的路由,在R2上NEXT_HOP屬性值為10.1.12.1,那么默認(rèn)情況下R2將路由再傳給R3時(shí),路由的NEXT_HOP屬性值修改為2.2.2.2也就是R2的更新源IP。
如果此刻在R2上配置neighbor 3.3.3.3 next-hop-unchanged,我們發(fā)現(xiàn)命令無(wú)效,R2通告給R3的路由NEXT_HOP屬性值還是會(huì)變,不會(huì)保留10.1.12.1。
因此我得出的結(jié)論是,BGP 的neighbor next-hop-unchanged命令,首先只能對(duì)多跳eBGP鄰居配置,其次,它只在將本地的iBGP路由傳遞給自己的eBGP多跳鄰居時(shí)才會(huì)生效。
原文鏈接:http://blog.sina.com.cn/s/blog_5ec353710101ghqe.html#bsh-24-329898008