BGP詳解

BGP:算法

BGP是創建在TCP之上的  端口號爲179服務器

AS:(二者是區分開來的)特指被相關機構管理  運行相同路由協議的一組路由器(中國人只能和中國人說,外國人和外國人說)網絡

BGP是運用在AS之間的ide

BGP的前身是EGP,EGP只能在AS之間簡單的傳遞路由信息,不會對路由進行任何優選,也沒有考慮如何在AS之間避免路由環路等問題,BGP通常運營在運營商的核心網oop

BGP的鄰居發現:學習

wKioL1mbycPBpwz4AABChgVkIys122.png-wh_50

先啓動BGP的一端先發起TCP鏈接,如圖所示,RTB先啓動BGP協議,RTB使用隨機端口號向RTA的179端口發起TCP鏈接。優化

路由器是經過物理口去創建鄰居的;Loopback也能創建,前提是必需要有路由,須要創建一個動態路由或者靜態路由。spa

源是12.1.1.1 目的2.2.2.2router

源是2.2.2.2 目的 10.1.1.1blog

沒有匹配,即三次握手沒有成功


AS號的分類:

1-64511 由IANA統一分配

64512-65535 私有企業或者自行分配

特色:BGP能夠跨越多跳路由器創建鄰居關係,很是吊

鄰居關係:

EBGP(外部網關邊界協議):運行在不一樣AS之間的BGP路由器創建的鄰居關係,默認的優先級是225,默認的TTL是1

IBGP(內部BGP協議):運行在相同AS之間BGP路由器創建的鄰居關係,默認的優先級是225,默認的TTL是255

[R1]router id 1.1.1.1   (標識路由器)

[R1]bgp 100 (配置鄰居關係)

[R1-bgp]peer 2.2.2.2 as-number 100 (peer後面是對端鄰居的接口地址,as-number後面是鄰居路由器所在的AS號,AS號相同,就是IBGP鄰居關係,AS號不一樣,就是EBGP鄰居關係)

PS:創建IBGP鄰居關係是時,通常使用loopback接口的IP地址,由於loopback接口開啓後一直處於UP狀態,只要保證路由可達,鄰居關係就會處於穩定狀態。而創建EBGP鄰居關係時,通常使用直接接口的IP地址,由於EBGP是跨AS創建鄰居關係,鄰居關係創建以前非直鏈接口之間的路由不可達

BGP鄰居關係配置的優化

在路由器上敲

[R1]router id 1.1.1.1   (標識路由器)

[R1]bgp 100 (配置鄰居關係)

[R1-bgp]peer 2.2.2.2 as-number 100

[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0 (修改更新源,路由器默認是物理口創建可鏈接)


報文:

Open keeplive update route-refresh notification

open:鄰居創建發送的第一個報文 協商參數

keeplive:週期性發送,去看鏈路是否正常

update:去更新路由信息

①更新路由屬性相同的多個路由條目

②更新路由不可達的路由條目(刪除)

route-refresh:當路由策略改變的時候會發送該報文去請求新的路由條目

notification:當鄰居失效就會發送這個報文

一:Idle:BGP的初始狀態,不會去接受任何鄰居發來的任何請求

二:connect:若是成功了就進入OPEN SENT狀態,若是失敗了會根據重傳計時器從新發起連接,同時切換到Active狀態。也就是說,只要在Connect狀態,就證實BGP正在試圖創建鏈接,而不是等候。

①鏈接成功

②鏈接不成功

③請求超時

三:active:請求鏈接,向鄰居去請求鏈接的,在OPENSENT的時候,若是BGP連接突然丟失,也會進入這個狀態。

第一種 請求成功 connect

第二種  請求不成功

第三種  請求超時

四:opensent

對收來的open報文進行檢查,若是有錯誤,系統就會發送一條出錯通知消息並退回到Idle狀態,若是沒有錯誤,BGP就開始發送Keepalive 報文,並復位Keepalive 計時器,開始計時。協商成功  進入下一個狀態

五:opencomfirm:若是收到了一個Keepalive 報文,就轉入Established 階段,BGP鄰居關係就創建起來了。若是TCP鏈接中斷,就退回到Idle 狀態。

六:establish:BGP 鄰居關係已經創建,這時,BGP將和它的鄰居們交換Update 報文

TTL:通過一臺路由器,而且通過解封裝和從新封裝之後的源地址和目標地址不變,這時候,TTL減1

BGP通告原則之一:僅將本身最優的路由發給鄰居

wKioL1mbyeqj1NopAAAoGxJNue4427.png-wh_50

將10.1.1.0/24這個路由發佈給鄰居

下一跳自我:

看上圖可知,10.1.1.0/24的下一跳是1.1.1.1,他就會把1.1.1.1發送給鄰居,其餘路由器也就接受到了這個1.1.1.1,可是,這些路由器並不能直接通訊,由於下一跳是直接到達1.1.1.1了,因此,不是最優的路由,沒有到達直連的那個路由器,因此,須要修改下一跳,把下一跳設置爲從傳到他的那個路由

wKioL1mbygPyQ8mSAAAUC72Dulw324.png-wh_50

如上圖所示,它的下一跳就改變了,他就能把這個最優路由發佈給其餘的鄰居,其餘的路由器經過這個直連的下一跳,也就能通訊了。

配置命令:[R2-bgp]peer 4.4.4.4 next-hop-local

BGP通告原則之二:經過EBGP得到的最優路由發佈給全部BGP鄰居

BGP通告原則之三:從IBGP學到的最優路由不會發給其餘的IBGP鄰居、(也是IBGP的水平分割)

wKioL1mbyiKzadjBAAB4d1ZahNQ311.png-wh_50

R3從R1經過EBGP學來的10.1.1.0/24的路由發送給R2,可是R2不會經過IBGP把10.1.1.0/24學來的路由發送給R4,因此,R4是不會接收到10.1.1.0/24這條路由的

BGP通告原則之四:BGP與IGP的同步

也就是把BGP的路由表和IGP的路由表同步

華爲默認關閉

wKioL1mbyjqDUVqtAAAQNhaNsjk046.png-wh_50

IBGP水平分割:從IBGP學到的最優路由不會發給其餘的IBGP鄰居、

路由黑洞

解決:

1.全互聯(TCP會話過多,資源佔用就大了)

2.路由的引入,把BGP的路由引入到IGP中

前兩個不是太靠譜,由於BGP有上萬個路由條目,IGP只有幾千個

3.MPLS

BGP路由信息處理

wKiom1mbylzyvgtdAABD89axTTk522.png-wh_50

當從BGP鄰居接收到Update報文時,路由器將會執行路徑選擇算法,來爲每一條前綴肯定最佳路徑

得出的最佳路徑被存儲到本地BGP路由表(local_RIB)中,而後被提交給本地IP路由表

BGP的屬性

wKioL1mbymrQ0qNcAAA_aqw-rJI001.png-wh_50

公認:在Update報文當中,能夠支持和識別的屬性

①公認必遵:在Update報文當中,必須攜帶的屬性

②公認任意:能夠不攜帶在update報文當中

可選:在update報文當中,能夠不識別的屬性

可選過渡:本BGP路由器不識別的屬性,可是能夠把該屬性傳遞給鄰居

可選非過渡:本BGP路由器忽略的屬性,而且不傳遞給鄰居

BGP屬性-Origin

Origin屬性定義路徑信息的來源,標記一條路由是怎麼成爲BGP路由的

orgin的三種屬性:

i代表BGP路由經過network命令注入

wKioL1mbypCjL8paAAAQbHNygzQ875.png

e代表BGP路由是從EGP學來的(如今EGP不用了,可是能夠經過路由的策略修改成e)

?即incomplete(路由引入)代表BGP路由經過其餘方式學來的路由信息

三種Origin屬性的優先級爲:i>e>Incomplete(?)

經過EGP學習來的   E

incomplete(路由引入)

AS-PATH:記錄了路由通過的全部AS的編號

規定AS_PATH越短(記錄的AS編號越少),路徑越優

BGP屬性-Next_hop

1.EBGP鄰居之間採用直鏈接口創建鄰居關係,EBGP鄰居在相互通告路由時會修改Next-hop爲本身的出接口IP;

2.IBGP鄰居一般採用Loopback接口創建鄰居,當路由時本路由器起源的,在發送給鄰居以後Next-hop該爲本身的更新源地址,這樣即便網絡中出現鏈路故障,只要Next-hop可達,一樣能夠訪問目的網段,提升網絡穩定性

MED(以小爲優)

僅在相鄰的兩個AS之間傳遞,收到此屬性的AS不會再通告給任何第三方AS,用於判斷流量進入AS時的最佳路由 和Local_Preference同樣,也是設置怎麼走

Local_Preference(以大爲優)

Local_Preference屬性僅在IBGP鄰居之間有效,不通告給其餘的AS。它代表路由器的BGP優先級,用於判斷流量離開AS時的最佳路由 設置怎麼走,往哪裏走,控制往哪裏走,默認是100


BGP路由優選原則

BGP路由器將路由通告給鄰居後,每一個BGP鄰居都會進行路由選擇,路由選擇有三種狀況

1.該路由到達目的地惟一的路由,直接優選

2,對到達同一目的地的路由多條路由,優選優先級最高的

3.對到達同一目的地具備相同優先級的多條路由,必須用更細的原則去選擇一條最優的

通常來講,BGP計算路由優先級的規則以下

1.丟棄下一跳不可達的路由

2.優選Preference_Value值最高的路由(私有屬性,進本地有效)

3.優選本地優先級最高的路由

4.優選手動聚合>自動聚合>network>import>從對等體學到的

5.優選AS_Path最短的路由

6.起源類型IGP>EGP>Incomplete

7.對於來自同一AS的路由,優選MED值最小

8.優選從EBGP學來的路由(EBGP>IBGP)

9.優選AS內部IGP的Metric最小的路由

若是前九條都是同樣的話,就會出現負載分擔

可是,BGP不會讓他出現負載分擔的

10.優選Cluster_List最短的路由

11.優選Orginator_ID最小的路由

12.優選Router_ID最小的路由器發佈的路由

13.優選具備較小的IP地址的鄰居學來的路由


Preference_Value是BGP的私有屬性(華爲的私有屬性),Preference_Value至關於BGP選路規則的Weight值,僅在本地路由器生效,Preference_Value值越大,越優先


引入一個默認路由

第一種方式

[R1]bgp 100

[R1-bgp]peer 2.2.2.2 default-route-advertise

第二種方式

[R1]ip route-static 0.0.0.0 0.0.0.0 NULL 0(目的是讓默認路由出如今igp路由表裏)

[R1-bgp]network 0.0.0.0 0


手工彙總:

第一種:

[R1]ip route-static 123.0.0.0 8 NULL 0

[R1-bgp]network 123.0.0.0 8

第二種:

aggregate 123.0.0.0 8

收到的是明細路由和彙總路由



路由反射器(RR)

1.客戶機

2.服務器

3.非客戶機

至關於一面鏡子,經過這面鏡子進行反射

[R2-bgp]peer 3.3.3.3 reflect-client

怎麼改最優

①從EBGP學來的路由會發給全部的客戶機和非客戶機

②從非客戶機學來的路由會發給全部的客戶機

③從客戶機學來的路由會發給除了該客戶機之外的全部客戶機和非客

相關文章
相關標籤/搜索