2017年10月7日 星期六

33 – BGP聯邦和RR


33 – BGP聯邦和RR

合理打破iBGP的水平分割

1. RR (路由反射器)
2. 聯邦


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 0
R3(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 234
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 234
R3(config-router)# neighbor 22.1.1.1 remote-as 234
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 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
R111.1.1.0可以傳給R2R2也能傳給R3R3沒辦法傳給R4,這就是iBGP的水平分割,只針對iBGP不會針對eBGP所以R5收的到。

在這種架構中R4要怎麼學到路由


. RR (路由反射器)                              14:50

1. 從客戶端過來的路由,RR會把它傳遞給我的客戶端,非客戶端,eBGP鄰居。

2. eBGP鄰居過來的路由,RR會把它傳遞給我的客戶端,非客戶端,eBGP鄰居。

3. 從非客戶端過來的路由,RR會把他傳遞給我的客戶端,eBGP鄰居,不會傳給非客戶端。

Originator 屬性
Cluster list 屬性
注:RRiBGP的特性,出了iBGP後,RR所有的特性消失(即路由攜帶的cluster-listoriginator全部消失)

R2設定成非客戶端,R4設定成客戶端
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,把R2R3分成一組R4自己為一組,他們兩個之間就可以建立eBGP

聯邦

聯邦既有eBGP的特性,又有iBGP的特性

Local-preference(本地偏好)MED可以在聯邦內傳遞

Next-hop在聯邦內傳遞時不改變

聯邦是用eBGP建立的,但是屬性都是iBGP的屬性
    AS(私有AS)
聲明所在大AS (所有的路由器都要設定)
AS互指Pee (只須要在小ASeBGP鄰居關係上設定)

1. 要去規劃小的ASAS號的範圍065535、公有AS064512、私有AS6451365535,私有的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個正常的鄰居關係R2R41個不正常的鄰居關係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 64513
R3(config-router)# bgp confederation peers 64514

R4(config)# router bgp 64514
R4(config-router)# bgp confederation peers 64513
R3R4R4R3

R4# show ip bgp
會發現AS-path有一個括號,裡面的數字是私有的AS號,這就說明是從聯邦過來的路由。

R4# show ip bgp 11.1.1.0
可以看到他是正常的路由,而不是反射過來的路由。



總結:在自己的AS裡面圈一個小AS,對於其他的大AS是透明的,R1R5只能看到大AS號,其他路由器不用修改在自己的AS內自己玩。


Local-preference(本地偏好)MED可以在聯邦內傳遞
Local-preference只能在一個AS內傳遞,但是在大AS內畫各種小AS這時候Local-preference還是可以傳遞的,雖然只能在一個大AS傳遞但不會管裡面有多少個小AS

聯邦是用eBGP建立的,但是屬性都是iBGP的屬性
屬性都是iBGP的屬性,但是可以建立eBGP的鄰居關係。

在大AS裡面怎麼畫小AS都可以,但是所有的屬性都按照iBGP的屬性在跑,就像你沒有畫小AS一樣,畫小AS只是為了解決iBGP的水平分割。



聯邦 ()  


聯邦+路由反射器 (實驗)