33 – BGP聯邦和RR
合理打破iBGP的水平分割
1. RR (路由反射器)
iBGP水平分割:我從一個iBGP鄰居收到的路由,不會傳遞給任何一個iBGP的鄰居,只可以傳遞給eBGP鄰居。
IGP OSPF
R2(config)# router ospf 1
R2(config-router)# network
22.1.1.1 0.0.0.0 area 0
R2(config-router)# network
23.1.1.0 0.0.0.255 area 0
R3(config)# router ospf 1
R3(config-router)# network 33.1.1.1
0.0.0.0 area 0
R3(config-router)# network
23.1.1.0 0.0.0.255 area 0R3(config-router)# network 34.1.1.0 0.0.0.255 area 0
R4(config)# router ospf 1
R4(config-router)# network
44.1.1.1 0.0.0.0 area 0
R4(config-router)# network
34.1.1.0 0.0.0.255 area 0
BGP建鄰居
R1(config)# router bgp 1
R1(config-router)# neighbor
12.1.1.2 remote-as 234
R2(config)# router bgp 234
R2(config-router)# neighbor
12.1.1.1 remote-as 1
R2(config-router)# neighbor
33.1.1.1 remote-as 234R2(config-router)# neighbor 33.1.1.1 update-source loopback 0
R2(config-router)# neighbor 33.1.1.1 next-hop-self
R3(config)# router bgp 234
R3(config-router)# neighbor
22.1.1.1 remote-as 234
R3(config-router)# neighbor
22.1.1.1 update-source loopback 0R3(config-router)# neighbor 22.1.1.1 next-hop-self
R3(config-router)# neighbor 44.1.1.1 remote-as 234
R3(config-router)# neighbor 44.1.1.1 update-source loopback 0
R3(config-router)# neighbor 44.1.1.1 next-hop-self
R3(config-router)# neighbor 35.1.1.5 remote-as 5
R4(config)# router bgp 234
R4(config-router)# neighbor
33.1.1.1 remote-as 234
R4(config-router)# neighbor
33.1.1.1 update-source loopback 0
R5(config)# router bgp 5
R5(config-router)# neighbor
35.1.1.3 remote-as 234
宣告BGP路由
R1(config)# router bgp 1
R1(config-router)# network
11.1.1.0 mask 255.255.255.0
R1# show ip bgp
R1的11.1.1.0可以傳給R2,R2也能傳給R3,R3沒辦法傳給R4,這就是iBGP的水平分割,只針對iBGP不會針對eBGP所以R5收的到。
在這種架構中R4要怎麼學到路由
一. RR (路由反射器) 14:50
1. 從客戶端過來的路由,RR會把它傳遞給我的客戶端,非客戶端,eBGP鄰居。
2. 從eBGP鄰居過來的路由,RR會把它傳遞給我的客戶端,非客戶端,eBGP鄰居。
3. 從非客戶端過來的路由,RR會把他傳遞給我的客戶端,eBGP鄰居,不會傳給非客戶端。
Originator 屬性
Cluster list 屬性
注:RR是iBGP的特性,出了iBGP後,RR所有的特性消失(即路由攜帶的cluster-list和originator全部消失)
R3(config)# router bgp 234
R3(config-router)# neighbor
44.1.1.1 route-reflector-client
route-reflector-client的用意:
1. 把自己設定成RR。
2. 我指的哪個neighbor這個neighbor就成為我的客戶端。
3. 我沒指到的其他的neighbor那其他的neighbor就成為我的非客戶端。
R4# show ip bgp
這條路由是反射過來的
看他如何反射過來的
R4# show ip bgp 11.1.1.0
R3# show ip bgp 11.1.1.0
在R3就看不到cluster list,他不是反射過來的。
還原把RR刪掉R3(config-router)# no neighbor 44.1.1.1
route-reflector-client
二. 聯邦 27:50
在一個大的AS裡面劃分不同的小AS,然後在小AS之間建立eBGP鄰居關係,這樣也能解決iBGP的水平分割問題。
把大的AS裡在分小的AS,把R2和R3分成一組R4自己為一組,他們兩個之間就可以建立eBGP
聯邦
聯邦既有eBGP的特性,又有iBGP的特性
Local-preference(本地偏好)和MED可以在聯邦內傳遞
Next-hop在聯邦內傳遞時不改變
聯邦是用eBGP建立的,但是屬性都是iBGP的屬性
小AS(私有AS)
聲明所在大AS (所有的路由器都要設定)
小AS互指Pee (只須要在小AS有eBGP鄰居關係上設定)
1. 要去規劃小的AS:AS號的範圍0〜65535、公有AS號0〜64512、私有AS號64513〜65535,私有的AS號就跟私有IP地址是一樣的。
2. 設定完小AS還要聲明所在的大AS,把大AS和小AS連接在一起。
3. 要告訴自己的小AS我上面連的是哪個小AS;我自己是什麼我peers什麼。
重新規劃要先把BGP AS 234先刪掉
R2(config)# no router bgp 234
R3(config)# no router bgp 234
R4(config)# no router bgp 234
1. 重新啟用BGP規劃小AS號
R2(config)# router bgp 64513
R2(config-router)# neighbor
12.1.1.1 remote-as 1
R2(config-router)# neighbor
33.1.1.1 remote-as 64513
R2(config-router)# neighbor
33.1.1.1 update-source loopback 0
R2(config-router)# neighbor
33.1.1.1 next-hop-self
R3(config)# router bgp 64513
R3(config-router)# neighbor
35.1.1.5 remote-as 5
R3(config-router)# neighbor
22.1.1.1 remote-as 64513
R3(config-router)# neighbor
22.1.1.1 update-source loopback 0
R3(config-router)# neighbor
22.1.1.1 next-hop-self
R3(config-router)# neighbor
44.1.1.1 remote-as 64514
R3(config-router)# neighbor
44.1.1.1 update-source loopback 0
R3(config-router)# neighbor
44.1.1.1 ebpg-multihop
R4(config)# router bgp 64514
R4(config-router)# neighbor 33.1.1.1
remote-as 64513
R4(config-router)# neighbor
33.1.1.1 update-source loopback 0
R4(config-router)# neighbor
44.1.1.1 ebpg-multihop
R3# show ip bgp summary
會看到2個正常的鄰居關係R2跟R4,1個不正常的鄰居關係R5。
不是全部數字就是不正常
2. 聲明所在大AS (是所有的路由器都要設定)
R2(config)# router bgp 64513
R2(config-router)# bgp
confederation identifier 234
R3(config)# router bgp 64513
R3(config-router)# bgp
confederation identifier 234
R4(config)# router bgp 64514
R4(config-router)# bgp
confederation identifier 234
這時候鄰居關係都正常了
3. 小AS互指Pee (只須要在有eBGP鄰居關係的2個路由器上設定)
R3(config)# router bgp 64513R3(config-router)# bgp confederation peers 64514
R4(config)# router bgp 64514
R4(config-router)# bgp
confederation peers 64513
R3指R4、R4指R3
R4# show ip bgp
會發現AS-path有一個括號,裡面的數字是私有的AS號,這就說明是從聯邦過來的路由。
R4# show ip bgp 11.1.1.0
可以看到他是正常的路由,而不是反射過來的路由。
總結:在自己的AS裡面圈一個小AS,對於其他的大AS是透明的,R1跟R5只能看到大AS號,其他路由器不用修改在自己的AS內自己玩。
Local-preference(本地偏好)和MED可以在聯邦內傳遞
Local-preference只能在一個AS內傳遞,但是在大AS內畫各種小AS這時候Local-preference還是可以傳遞的,雖然只能在一個大AS傳遞但不會管裡面有多少個小AS。
聯邦是用eBGP建立的,但是屬性都是iBGP的屬性
屬性都是iBGP的屬性,但是可以建立eBGP的鄰居關係。
在大AS裡面怎麼畫小AS都可以,但是所有的屬性都按照iBGP的屬性在跑,就像你沒有畫小AS一樣,畫小AS只是為了解決iBGP的水平分割。
聯邦 (續)
聯邦+路由反射器 (實驗)