上圖為今日所用拓撲 ,其中R1和R4,R3和R5為EBGP鄰居,R1和R3為IBGP鄰居,AS200區域做OSPF動態路由
一.BGP建立鄰居的六種狀態
1.idle?? ???????
空閑狀態:建立鄰居最初的狀態
2.Connect??????
?連接狀態:在這個狀態下會嘗試建立TCP連接
3.Active?
? 活躍狀態:TCP建立連接失敗會進入這個狀態,一直失敗則一直在這個狀態,若建立成功則由Active->OpenSent狀態
4.OpenSent
Open報文發送狀態:在TCP建立連接成功后會進入這個狀態,這個狀態下雙方會發送Open報文以嘗試建立鄰居關系
5.OpenConfirm?
?Open報文確認狀態:收到對方的Open報文后就進入這個狀態了,這個狀態下會向對方發送KeepAlive保活報文以維持鄰居關系
6.Established?
?建立狀態:收到對方的KeepAlive保活報文后進入的狀態,在這個狀態下鄰居關系達到完滿
二.流量黑洞
出現原因:
當路由下一跳地址非直連的網段ip地址就有可能出現流量黑洞,其原因是路由表是按照目的地址尋址的,當路由下一跳非直連網段ip時,下一跳所在路由器不一定有目的ip的路由條目,這時就會將路由數據傳到Null口,形成流量黑洞。
在IBGP中,若兩臺建立IBGP路由器之間有沒有配置IBGP的路由設備時,就會出現流量黑洞問題,雖然兩臺IBGP路由器學習了對方所搬運的路由,但是由于中間路由器沒有所搬運路由的路由信息,所以外部AS設備無法相互連接。
解決方案:
1.配置靜態路由:
在中間路由器R2中配置兩條靜態路由:
[R2]ip route-s 10.10.4.4 32 192.168.12.1
[R2]ip route-s 10.10.5.5 32 192.168.23.3
有了這兩條靜態路由,中間設備就有了目的IP地址為外部AS區域的路由信息,就可以繼續路由轉發了。這種方法看似完美,實際工作中外部AS區域路由何其之多,BGP搬運多少條路由中間設備均要配置多少條靜態路由,何其繁瑣,實不可取。
2.在ospf中引入外部BGP路由:
[R1]ospf 1
[R1-ospf-1]import-route bgp
[R3]ospf 1
[R3-ospf-1]import-route bgp
這樣ASBR就會生成五類LSA通告全區域外部AS某一IP的路由信息了,這樣做也是看似合理,因為BGP搬運的路由條數龐大,OSPF所引入BGP路由條數也很龐大,會產生大量的五類LSA,對ASBR設備壓力非常大,雖然可以用第五類路由聚合技術緩解壓力,但治標不治本,且BGP所引出的問題最終還是想在BGP中解決。(將五層問題轉換成三層問題這種解決方法會傷了五層高傲的心的)
3.IGBP全互聯
既然問題是由兩臺IBGP路由器之間有非IBGP路由器導致的,那我們直接讓非IBGP路由器成為IBGP路由器不就成了?
[R1]bgp 200
[R1-bgp]peer 192.168.12.2 as 200
[R1-bgp]peer 192.168.12.2 next-hop-local #IBGP鄰居間傳路由時不會修改下一跳
[R2]bgp 200
[R2-bgp]peer 192.168.12.1 as 200
[R2-bgp]peer 192.168.23.3 as 200
[R3]bgp 200
[R3-bgp]peer 192.168.23.2 as 200
[R3-bgp]peer 192.168.23.2 next-hop-local
這樣R2就有從IBGP鄰居那邊學來的外部AS區域路由了,看似又是很完美但是圖示僅僅一臺中間設備就要建立3次IBGP鄰居,若總共有N臺路由器則要建立N*(N-1)/2次IBGP鄰居了,工程量不可謂不大,因此,也不可取。
先賣個關子,先不“引玉”,講講別的先。
?三.BGP通告原則
1.BGP路由器會將自己狀態碼為“*>”的路由給狀態為“Established”的鄰居
2.從EBGP那邊搬運的路由會傳遞給所有鄰居
3.從IBGP那邊搬運的路由不會傳遞給別的IBGP鄰居
由于第三條規則,引出了下面我們要講的內容。
四.IBGP水平分割??? ps:也叫內內不相傳
出現原因:
在同一個AS中,若有三臺及以上的IBGP鄰居存在,則有可能產生路由環路(互相來回傳遞從EBGP鄰居那邊搬運來的路由),為了防止這種現象的出現,出現了IBGP水平分割的規則
打開一扇門,就關閉一扇窗
IBGP水平分割解決了IBGP路由環路問題,可卻導致AS內部BGP無法傳遞
解決方案:
1)IBGP全互聯???????
2)Route Reflector?? 路由反射器
3)BGP聯盟??? (已基本淘汰)
4)OSPF 引入BGP
5)靜態路由
五.路由反射器
1.Role:
1)RR? :Router Reflector
2)Client
3)Non-Client
2.路由反射器反射規則
1)從Non-Client設備上搬運的路由,會傳遞給EBGP鄰居,會反射給Client設備,但是不會反射給其它Non-Client設備??????? (非非不反射規則)
2)從Client設備上搬運的路由,會傳遞給EBGP鄰居,會反射給Non-Client設備和Client設備
3)從EBGP鄰居設備上搬運的路由,會反射給Client設備、Non-Client設備
3.隱患
路由反射器突破了IBGP的水平分割,但也面臨著路由環路的風險
4.解決方案:
在BGP報文內加入兩個字段:
Origin-id:始發id,集群內部Client與RR間防環
Cluster_id:簇列表,集群間防環