BGP:算法
BGP是創建在TCP之上的 端口號爲179服務器
AS:(二者是區分開來的)特指被相關機構管理 運行相同路由協議的一組路由器(中國人只能和中國人說,外國人和外國人說)網絡
BGP是運用在AS之間的ide
BGP的前身是EGP,EGP只能在AS之間簡單的傳遞路由信息,不會對路由進行任何優選,也沒有考慮如何在AS之間避免路由環路等問題,BGP通常運營在運營商的核心網oop
BGP的鄰居發現:學習
先啓動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通告原則之一:僅將本身最優的路由發給鄰居
將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了,因此,不是最優的路由,沒有到達直連的那個路由器,因此,須要修改下一跳,把下一跳設置爲從傳到他的那個路由
如上圖所示,它的下一跳就改變了,他就能把這個最優路由發佈給其餘的鄰居,其餘的路由器經過這個直連的下一跳,也就能通訊了。
配置命令:[R2-bgp]peer 4.4.4.4 next-hop-local
BGP通告原則之二:經過EBGP得到的最優路由發佈給全部BGP鄰居
BGP通告原則之三:從IBGP學到的最優路由不會發給其餘的IBGP鄰居、(也是IBGP的水平分割)
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的路由表同步
華爲默認關閉
IBGP水平分割:從IBGP學到的最優路由不會發給其餘的IBGP鄰居、
路由黑洞
解決:
1.全互聯(TCP會話過多,資源佔用就大了)
2.路由的引入,把BGP的路由引入到IGP中
前兩個不是太靠譜,由於BGP有上萬個路由條目,IGP只有幾千個
3.MPLS
BGP路由信息處理
當從BGP鄰居接收到Update報文時,路由器將會執行路徑選擇算法,來爲每一條前綴肯定最佳路徑
得出的最佳路徑被存儲到本地BGP路由表(local_RIB)中,而後被提交給本地IP路由表
BGP的屬性
公認:在Update報文當中,能夠支持和識別的屬性
①公認必遵:在Update報文當中,必須攜帶的屬性
②公認任意:能夠不攜帶在update報文當中
可選:在update報文當中,能夠不識別的屬性
可選過渡:本BGP路由器不識別的屬性,可是能夠把該屬性傳遞給鄰居
可選非過渡:本BGP路由器忽略的屬性,而且不傳遞給鄰居
BGP屬性-Origin
Origin屬性定義路徑信息的來源,標記一條路由是怎麼成爲BGP路由的
orgin的三種屬性:
i代表BGP路由經過network命令注入
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學來的路由會發給全部的客戶機和非客戶機
②從非客戶機學來的路由會發給全部的客戶機
③從客戶機學來的路由會發給除了該客戶機之外的全部客戶機和非客