BGP 個人見解

2021-10-08 07:14:37 字數 3871 閱讀 7956

bgp是一種用於自治系統之間的動態路由協議,主要用於交換as之間的可達路由資訊,構建as域間的傳播路徑,防止路由環路的產生,並在as級別應用一些路由策略.

bgp作為事實上的internet外部路由協議標準,被廣泛應用於isp之間

1,bgp是一種外部閘道器協議,起作用不在於自動發現網路topo,而在於as之間選擇最佳路由和控制路由的傳播。

2,bgp使用tcp作為其傳輸層協議(埠號179),提高了協議的可靠性。

3,bgp的對等體之間必須在邏輯上連通,並進行tcp連線,路由更新時,bgp只傳送更新的路由,大大減少了bgp傳播路由所占用的頻寬。

4,bgp的防環

1)as之間:bgp通過攜帶as路徑資訊來標記途經的as,帶有本地as號的路由將被丟棄,從而避免了域間產生環路。

2)as內部:bgp在as內學到的路由不再通告給as內的bgp鄰居,避免了as內產生環路。

5,bgp包含豐富的路由策略,靈活過濾和選擇

6,bgp包含防止路由震動機制,對於反覆更新路由狀態,進行懲罰

7,bgp易於擴充套件,主要通過tlv進行擴充套件

1,open:協商bgp引數,tcp連線建立後傳送的第乙個訊息,用於建立bgp對等體之間的連線關係。

2,updata:交換路由資訊。一條update訊息可以發布多條屬性相同的可達路由資訊,也可以撤銷多條不可達路由資訊。

3,keeplive:保持鄰居關係

4,notification:當bgp檢測到錯誤狀態時,就向對等體發notification訊息,之後bgp連線會立即中斷。

5,route-refresh:用於在改變路由策略後請求對等體重新傳送路由資訊

bgp報頭

marker(標記):16位元組,固定為1。

length(長度):兩位元組無符號整數。指定了訊息的全長,包括頭部。

type(型別):1 位元組

type-open

version:bgp版本號

my autonomous system:本地as編號

hold time:在建立對等體關係時兩端要協商hold time,並保持一致。

bgp identifier:bgp路由器的router id

opt parm len:可選引數的長度。如果為0則沒有可選引數。

optional parameters:是乙個可選引數用於bgp驗證或多協議擴充套件等功能

type-updata

withdrawn routes length :(2位元組無符號整數)不可達路由長度,表示withdrawn routes欄位的資料長度。

withdrawn routes :(變長)撤銷路由

path attribute length :(2位元組無符號整數)路由屬性長度

network layer reachability information :(變長)網路可達資訊。

type-keepalive

keepalive 報文的組成只包括乙個bgp資料報頭

預設情況下,傳送keepalive 的時間間隔為60 秒,hold time是180秒,如果hold time定時器超時,就認為對等體down掉。

type-notification

errorcode:錯誤碼。每個不同的錯誤都使用唯一的**表示。

每個不同的錯誤都使用唯一的**表示,而每乙個錯誤碼都可以擁有乙個或多個錯誤子碼,但如果某些錯誤碼並不存在錯誤子碼的話,則該錯誤子碼字段以全0表示。

errsubcode:錯誤子碼

idel:bgp初始狀態。bgp拒絕鄰居傳送的連線請求,只有收到本裝置start事件(手動配置)之後才能建立tcp連線。任何狀態中收到notification報文或tcp拆除鏈路通知等error事件後,bgp都會轉至idle狀態。

connect:此階段主動發起tcp連線,如果tcp連線成功,那麼bgp向對等體傳送open報文,並轉至opensent狀態。如果tcp連線失敗,那麼bgp轉至active狀態,如果超時的話停留這一階段

opensent:bgp等待對等體的open報文,並對收到的open報文中的as號、版本號、認證碼等進行檢查。準確無誤傳送keeplive,進入下一狀態,有問題的話,傳送錯誤報文,進入idle

openconfirm:bgp等待keepalive或notification報文,keeplive進入下一狀態,錯誤報文進入idle

establieshed:進入收發狀態。如果收到正確的update或keepalive報文,那麼bgp就認為對端處於正常執行狀態,將保持bgp連線。如果收到錯誤的update或keepalive報文,那麼bgp傳送notification報文通知對端,並轉至idle狀態。

active:此階段等待對方發起tcp連線,連線成功,進入opensent,失敗,停留,超時進入connect

bgp工作原理:ibgp與igp同步,解決了黑洞

概述公認必遵:所有bgp路由器都必須識別,且必須存在於updata包中,如果缺少,路由資訊就會出錯

公認任意:所有bgp路由器都可以識別,但不要求存在於updata包中,沒有不會出錯

可選過度:在bgp對等體之間具有可傳遞性的屬性,可以不支援,但是必須傳遞

可選過度:不支援不傳遞

origin為公認必遵屬性:標記一條路由是怎麼成為bgp路由的。igp標識為i,egp標識為e(現在不用),incomplete為?,egp標識為e(現在不用)

as_path為公認必遵屬性:as_path長度越短越優先。當包含本as則不接受,防環機制

next_hop為公認必遵屬性:next_hop屬性記錄了路由的下一跳資訊,把本地路由給本as或把本地路由給ebgp鄰居時igp時,為本地與對端建立bgp鄰居關係的介面位址;把外as給本地ibgp鄰居時,不修改

local_pref為公認任意屬性:路由器的bgp優先順序,本地有效,預設100越大越優先。

community為可選過渡屬性

med為可選非過渡屬性:用於as間的路由選路,類似ibgp的代價值,得到目的位址相同但下一跳不同的多條路由時,在其它條件相同的情況下,將優先選擇med 值較小者作為最佳路由,僅在相鄰兩個as之間傳遞。compare-different -as-med可修改

originator_id為可選非過渡屬性:反射器的水平分割 只能防止自己的回來

cluster_list為可選非過渡屬性:阻止反射器之間成環 每次過反射器都會將router-id掛在表裡

prefval:華為特有屬性(思科vid),只在本地有效不傳遞,預設值為0,越大越優

聚合屬性:聚合者屬性,是否聚合屬性

團體屬性,想傳遞,開開關

擴充套件屬性

-no_advertise 不傳給ibgp鄰居

-no_export 不傳ebgp鄰居

-no_export_subconfed 不能給聯邦的ebgp鄰居

當到達同一目的地存在多條選路,依照如下策略順序選擇

下一跳位址必須可達

協議首選值(prefval)是華為裝置的特有屬性,該屬性僅在本地有效。

如果路由沒有本地優先順序,bgp選路時將該路由按預設的本地優先順序100來處理。

本地生成的路由

1優選聚合路由(聚合路由優先順序高於非聚合路由)

2通過aggregate命令生成的手動聚合路由的優先順序高於通過summary automatic命令生成的自動聚合路由

3通過network命令引入的路由的優先順序高於通過import-route命令引入的路由。

優選as路徑(as_path)最短的路由

優選med值最低的路由。

當到達同一目的位址存在多條等價路由時,可以通過bgp等價負載分擔實現均衡流量的目的。

形成bgp等價負載分擔的條件是:bgp選路規則中「到下一跳的igp metric」這條規則之前所有需要比較的屬性完全相同。

bgp擴充套件內容 個人見解

擴充套件能力協商 bgp對等體之間傳輸ipv6位址,需要在open message中進行擴充套件能力協商 除了多位址的能力協商以外,還有4個位元組的as號,router refresh支援能力和多標籤能力都需要在一起協商 mp reach nlri 擴充套件屬性 bgp使用此屬性通告ipv6路由 a...

博弈 個人 見解

由於周測 做了好久的博弈題,找了好多關於博弈的相關資料,感覺自己,似乎還是動了那麼一點點。臨睡前,就小小的總結一下,希望以後看到的時候,可以有所感悟吧!接下來是正題。講到博弈,事實上也就是找規律,可是知道一般的博弈型別能夠高速便捷的解決這個問題。博弈的型別大致有下面幾種 巴什博弈,威佐夫博奕,尼姆博...

mysql個人見解

mysql基本原理 僅個人理解 mysql屬於c s架構,即客戶端和服務端互動 1.連線 例php mysqli connect 以客戶端發起請求,mysql服務端進行接收並處理,其中客戶端每發起的一次鏈結mysql均起乙個執行緒來維持乙個socket 套接字 此時會有服務端資源的開銷,因此mysq...