BGP簡介 BGP狀態機 BGP的各種屬性詳解

2021-09-25 18:55:47 字數 4765 閱讀 4066

一、簡介

1、bgp全稱為邊界閘道器路由協議,典型的外部閘道器路由協議,是一種無類別的路徑向量(高階的距離向量)型協議,又可以是一種路徑優先協議,採用分布式計算,用於管理as之間的路由資訊傳遞。

2、特性

(1)可靠性:採用tcp作為可靠性機制,單播建鄰,基於tcp的179埠工作,因為更新量巨大,所以只能採用觸發更新;

(2)可控性:as之間提供豐富的屬性來干涉選路,用來靈活的選擇路由並且都需要人工干涉;

(3)as-by-as:使用as號識別不同的 as路由的標識,該as號具有唯一性,範圍1-65535,可以擴充套件為32位以解決as號不夠用的情況,在傳遞路由的過程中以as為單位不改變屬性;

(4)bgp最小使用單位是乙個路由器,故同乙個路由器上只能執行乙個bgp程序;

(5)bgp協議中,一條路由存在的時間越久,bgp會認為其越穩定;

(6)bgp預設不被用於負載均衡,只選擇產生一條最佳路徑,並且bgp支援鏈路聚合和認證;

二、資料報–所有的資料報基於tcp傳輸

open: 存在hold time 和 rid;用於鄰居關係建立;預設僅收發一次即可;

keeplive: 週期1min,保活 tcp會話 hold time 180s;

update :更新包攜帶路由條目: 目標網路號+ 屬性;

notification :報錯包 錯誤資訊出現時傳送;

三、bgp的狀態機

1、idle(空閒)狀態

bgp 總是以 idle 狀態為起始點,該狀態拒絕所有入站連線。啟動(start)事件(ie 1)發生後,bgp 程序會初始化所有 bgp 資源、啟動 connectrety(連線重試)定時器、初始化去往鄰居的 tcp 連線、偵聽來自鄰居的 tcp 初始化並將狀態更改為 connect(連線)狀態。啟動事件由配置 bgp 程序或重置現有程序的操作員發起,或者由重置 bgp 程序的路由器軟體發起。

如果發生差錯,bgp 程序將遷移到 idle 狀態。此時,路由器可能會自動嘗試發起另乙個啟動事件,但應對路由器的這種行為做一定的限制—這是因為在持續性地差錯條件下,經常性地重啟會導致波動。因而在第一次遷移到 idle 狀態之後,路由器會設定 connectrety 定時器,在定時器到期時才會重新再啟 bgp。ios 的初始 connectrety 時間為 120 秒,該值不可更改,以後每次connectrety 時間都是之前兩倍,也就是說,連續等待時間呈指數式遞增。

2.connect(連線)狀態

該狀態下,bgp 程序一直等待 tcp 連線的完成。如果 tcp 連線建立成功,bgp 程序將會向鄰居傳送 open 訊息並進入 opensent(開啟傳送)狀態。如果 tcp 連線建立不成功,bgp程序將繼續偵聽由鄰居初始化的連線、重置 connectrety 定時器,並遷移到 active(啟用)狀態。

如果 connectrety 定時器到期時仍處於 connect 狀態,則重置定時器,並再次嘗試與鄰居建立 tcp 連線,程序也將繼續維持在 connect 狀態,其他輸入事件將會讓 bgp 程序遷移到 idle 狀態。

3.active(啟用)狀態

該狀態下,bgp 程序會嘗試與鄰居初始化 tcp 連線。如果 tcp 連線建立成功,bgp 程序會清除connectretry 定時器、完成初始化過程、向其鄰居傳送 open 訊息,並遷移到 opensent(開啟傳送)狀態。ios 預設的保持時間為 180 秒(3 分鐘),可以通過 timers bgp statement命令設定保持時間。

如果 connectretry 定時器到期時 bgp 程序仍處於 active 狀態,那麼程序將返回 connect狀態並重置 connectretry 定時器,而且還要與對等體進行 tcp 連線的初始化並繼續偵聽來自對等體的連線。如果鄰居試圖以非期望的 ip 位址建立 tcp 會話,則重置connectretry 定時器、拒絕該連線,且繼續維持在 active 狀態,其他輸入事件(啟動事件除外,因為 active 狀態會忽略啟動事件)將會讓 bgp 程序遷移到 idle 狀態。

4.opensent(開啟傳送)狀態

該狀態下,已經傳送了 open 訊息,bgp 會一直等待直至偵聽到來自鄰居的 open 訊息。

接收到 open 訊息後,會檢查該訊息的每個字段,如果存在差錯,則會傳送 notification 訊息

並遷移到 idle 狀態。

如果接收到的 open 訊息沒有差錯,則傳送 keepalive 訊息並設定 keepalive 定時器,此外還要協商保持時間,以確定乙個較小的保持時間值,如果協商後的保持時間為零,則不啟動保持定時器和 keepalive 定時器。根據對等體的 as 號,可以確定對等連線是內部連線還是外部連線,並遷移到 openconfirm(開啟確認)狀態。

如果收到斷開 tcp 連線的請求,則本地程序將關閉 bgp 連線、重置 connectretry 定時器、開始偵聽由鄰居發起的新連線,並遷移到 active 狀態。其他輸入事件(啟動事件除外,因為該狀態會忽略啟動事件)則會讓 bgp 程序遷移到 idle 狀態。

5.openconfirm(開啟確認)狀態

該狀態下,bgp 程序將等待 keepalive 訊息或 notification 訊息,如果收到的是 keepalive訊息,則遷移到 established(建立)狀態;

如果接收到的是notification 訊息或斷開 tcp 連線請求,則遷移到 idle 狀態。

如果保持定時器到期,或檢測到差錯,或發生了終止事件,則向鄰居傳送一條 notification

訊息、關閉 bgp 連線,並將狀態更改為 idle 狀態。

6.established(建立)狀態

該狀態下,bgp 對等連線已完全建立,對等體之間可以相互交換 update、keepalive 和notification 訊息。如果接收到的是 update 或 keepalive 訊息,則重新啟動保持定時器(如果協商好的保持時間不是零)。

如果接收到的是 notification 訊息,則遷移到 idle 狀態。其他事件(啟動事件除外,因為該狀態會忽略啟動事件)將會讓 bgp 程序傳送一條 notification 訊息並遷移到空閒狀態。

四、bgp的屬性

1、bgp 的屬性:weight ,origin ,as_path ,next_hop ,local_pref ,atomic_aggregate , aggregator ,community ,med,originator_id ,cluster_list

2、 屬性分為 4 類: (1)公認必尊 --必須傳遞必須識別 ,所有 bgp 路由器必須識別遵守的原則有origin,as_path ,next_hop

(2)公認可尊–必須識別, 所有路由器都能識別但是不一定要遵守,local_pref,atomic_aggregate

(3)可選傳遞–開啟傳遞 ,不是所有 bgp 路由器都能識別,但是所有 bgp 都能傳遞,aggregator 和 community

(4)可選非傳遞–開啟不傳遞 不是所有路由器都被識別,不能識別的 bgp 路由器就丟棄它,med,originator_id 和 cluster_id,weight

weihgt :cisco 私有屬性,對於離開 as 的路由在路由器選擇那一條最優,本台路由器產生為 32768,學習 的為 0.不能傳遞,適用於一台路由去 往別的 as 有多個出口。

origin :起源,0 表示宣告(i),1 表示 egp 學到(e),3 表示其他手段得到(重發布?),越低越好。

as path: 一條路由在傳輸過程中經歷了那些 as(不算自己),可用來放環。越短越好

nei x.x.x.x allowas-in 允許和具有自己相同的 as 的路由進入本

as nei x.x.x.x as-override 把具有和其他 as 相同 as 號的路由放入這個 as

next_hop 到達路由的下一跳路由器 ip 位址

通告路由器和接受路由器不在乙個 as,next_hop 為通告路由器的更新位址 ;

通告路由器和接受路由器在乙個 as 內,next_hop 為通告鄰居的更新位址 ;

通告路由器和接受路由器在乙個 as 內且為鄰居關係更新位址為不同 as,則為外部更新位址

local_pref :不能傳輸到其他 as,值越高越優,用於本 as 選擇,離開 as 的出口路由器預設為 100;

med: 用於選擇流入 as 的入口路由器,可以在倆個 as 之間傳遞,越低越好預設 0(只能在乙個 as 內 比較);

atomic_aggregate: 用來警告下游路由器路由聚合後產生的路由路徑丟失。

bgp 支援向 bgp 鄰居傳遞重疊路由可以選擇多種方式

(1)明細和粗略的都公布

(2)只公布明細

(3)只公布沒有重疊的

(4)聚合後公布聚合後的路由

(5)明細和粗略都不公布

aggregator :用來通告彙總路由的匯聚路由器 bgp_id(cisco)

community :(1)internet 預設屬性,可以給任何 bgp 傳送

(2)no_export 只能在乙個 as 內傳遞,可以在聯盟內傳遞。

(3)no_advertise 不在 ibgp 鄰居間傳遞

(4)local-as 不向任何 ebgp 鄰居傳送包括聯盟的 ebgp 鄰居

標準和擴充套件 community

標準是普通路由可以設定的團體公有和私有

擴充套件是 mpls 中的 vrf 路由傳遞定義的

originator_id :路由反射使用,是路由發起者產生的乙個 32 位元的值,該值是本地路由發起者的 rid,如果路 由發起者從屬性上看到 自己的 rid,說明有環路就忽略 ;

cluster_list: 路由反射器使用,是路由進過反射器簇 id 的乙個序號。如果反射器在屬性裡看到自己的簇 id 就說明有環路,忽略 簇 id 列表:記錄了所有反射器的 rid。

未完待續。。。。。。

BGP有限狀態機

bgp協議fsm狀態圖 有限狀態機可以直觀描述協議的變化,以及在網路活動中產生的事情和響應發生事件所產生的動作。bgp空閒狀態,此狀態下不接收任何對等體發出的連線資訊,等待乙個start事件的發生。當乙個start事件發生時,系統重置connect retry定時器,並向鄰居發起tcp連線,將狀態變...

BGP有限狀態機狀態及報文

bgp有限狀態機共有六種狀態,分別是idle connect active opensent openconfirm和established。在connect狀態下,bgp啟動連線重傳定時器 connect retry,預設為32秒 等待tcp完成連線。在active狀態下,bgp總是在試圖建立tc...

BGP機房簡介

編者按 記得在去年的這個時候,很多還來信詢問雙線雙ip跟雙線單ip有什麼區 別,但隨著以it世界idc頻道為首的idc行業主流 不遺餘力的宣傳報道,國內大部分以及站長都對雙線以及相關的南北互通技術有了比較清晰的認 識,現在再收到的來信,已經開始詢問哪些是真正的bgp機房或者是讓我們推薦幾個速度較好的...