BGP協議
BGP原理的概述
BGP協議是一種距離向量(Distance vector)的路由協議,但是比起RIP等典型的距離向量協議,又有很多增強的效能。BGP使用TCP作為傳輸協議,使用埠號179。在通訊時,要先建立TCP會話,這樣資料傳輸的可靠性就由TCP協議來保證,而在BGP的協議中就不用再使用差錯控制和重傳的機制,從而簡化了複雜的程度。另外,BGP使用增量的、觸發性的路由更新,而不是一般的距離向量協議的整個路由表的、週期性的更新,這樣節省了更新所佔用的頻寬。BGP還使用“保留”訊號(Keepalive)來監視TCP會話的連線。而且,BGP還有多種衡量路由路徑的度量標準(稱為路由屬性)
BGP使用TCP作為其承載協議建立連線。因此與IGP逐跳路由器建立鄰居不同,BGP可以跨越多跳路由器建立鄰居關係。
BGP和IGP協議對比
協議的分類
IGP(Interior gateway protocols)——內部閘道器協議,定義為在一個自治系統內部使用的路由協議(包括動態路由協議和靜態路由)。IGP的功能是完成資料包在AS內部的路由選擇,或者說,是講述資料包如何穿過本地AS的。RIPv1&v2,OSPF,ISIS都是典型的IGP。
EGP(Exterior gateway protocols)——外部閘道器協議,定義為在多個自治系統之間使用的路由協議。它主要完成資料包在AS間的路由選擇,或者說,講述資料包為了到達目的IP,需要通過哪些AS。BGP就是一種EGP。
2位元組長度的AS號碼,即1-65535。其中1-64511為公有AS,64512-65534為私有AS。在2009年1月之後,IANA決定使用4位元組長度AS,範圍是65536-4294967295
應用場景
IGP只作用於本地AS內部,而對其他AS一無所知。它負責將資料包發到主機所在的網段(segment)
EGP作用於各AS之間,它只瞭解AS的整體結構,而不瞭解各個AS內部的拓撲結構。它只負責將資料包發到相應的AS中,餘下的工作便交給IGP來做。
BGP報文型別的全面解析
1、open報文:負責和對等體建立鄰居關係 2、update報文:被用來在對等體之間傳遞路由資訊(包括可達路由或者不可達路由) 3、Notification報文:檢測到錯誤的時候,就傳送該訊息給對等體 4、Keepalive報文:週期性每60秒傳送,用來維護TCP/IP連線 5、Route-refresh報文:表示自己支援路由重新整理能力
BGP的報文型別
Open報文
裡面比較重要的欄位
version v4版本
My AS 代表是我該裝置的AS號碼
router id 代表該裝置的BGP的router id
Hold time時間 從0開始一直增加到180s,最小可以為0,這種情況下BGP連線被認為永遠是up,對等體之間
不會發送keepalive報文來檢測鄰居是否失效
可選欄位和可變長欄位
Keepalive報文
預設情況下,傳送KeepAlive 的時間間隔為 60 秒,Hold Time是180秒。每次從鄰居處接收到KeepAlive 報文將重置Hold Time定時器,如果Hold Time定時器超時,就認為對等體Down掉。
KeepAlive報文主要用於對等體路由器間的執行狀態以及鏈路的可用性確認。KeepAlive 報文的組成只包括一個BGP資料報頭。
Update報文
前面兩部分表示路由撤銷資訊,後面三部分表示路由可達資訊
路由可達資訊攜帶各種屬性
但是路由撤銷資訊就不需要攜帶各種屬性了,因為這時候是撤銷了
Notification報文主要在發生錯誤或對等體連線被關閉的情況下使用,該訊息攜帶各種錯誤碼(如定時器超時等),以及錯誤子碼和錯誤資訊。
Route-refresh報文
可以在不中斷BGP連線的情況下,對BGP路由表進行動態重新整理,並應用新的路由策略
BGP協議當中IBGP鄰居關係建立
執行在相同AS內的BGP路由器建立的鄰居關係為IBGP(Internal BGP)鄰居關係
RTB的配置
bgp 345
router-id 1.1.1.1
peer 2.2.2.2 as-number 345
peer 2.2.2.2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization ###預設配置
peer 2.2.2.2 enable ###預設生成
RTC的配置
bgp 345
router-id 2.2.2.2
peer 1.1.1.1 as-number 345
peer 1.1.1.1 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 1.1.1.1 enable ###預設生成
注意點:
IBGP的關係 一般建議用loopback建立
loopback比較穩定
可以實現冗餘備份
BGP協議當中EBGP鄰居關係建立
執行在不同AS之間的BGP路由器建立的鄰居關係為EBGP(External BGP)鄰居關係
RTB的配置
bgp 345
router-id 1.1.1.1
peer 12.1.1.2 as-number 200
#
ipv4-family unicast
undo synchronization
peer 12.1.1.2 enable ###預設生成
#
RTD的配置
#
bgp 200
peer 12.1.1.1 as-number 345
#
ipv4-family unicast
undo synchronization
peer 12.1.1.1 enable ###預設生成
#
注意點:
一般建立ebgp關係的時候 建議大家用物理介面建立 如果用loopback的話 需要修改ttl的數值
peer 1.1.1.1 ebgp-max-hop 2
預設情況下建立ebgp的時候,我們傳送資料包的TTL值為1
BGP協議的狀態機的詳細概述
Idle:空閒狀態,BGP系統發出start事件(就是管理員配置BGP的過程),BGP初始化資源,復位連線計時器(32s),發起TCP連線,同時轉入Connect狀態
Connect:在此狀態,BGP發起第一個TCP連線,如果TCP連線成功,就轉入OpenSent狀態,如果TCP連線失敗,就轉入Active狀態。(TCP連線失敗兩種情況:1.收到TCP引數協商失敗的回覆,則進入Active狀態,2.對方長時間沒有回覆,超時,則保持在Connect狀態
Active:BGP總是在試圖建立TCP連線,如果連線計時器超時,就退回到Connect狀態,如果TCP連線成功,就轉入OpenSent狀態,如果TCP連線失敗,就繼續保持在Active狀態,並繼續發起TCP連線。
OpenSent:BGP也已經發送了第一個Open報文,BGP就在等待其對等體傳送Open報文。並對收到的Open報文進行正確性檢查,如果有錯誤,系統就會發送一條出錯通知訊息並退回到Idle狀態,如果沒有錯誤,BGP就開始傳送Keepalive報文,並復位Keepalive計時器(180s),開始計時。同時轉入OpenConfirm狀態。
OpenConfirm:BGP等待一個Keepalive報文,如果收到了一個Keepalive報文,就轉入Established階段
Established:BGP對等體交換update、keepalive、route-refresh報文
以後會週期性傳送keepalive報文(60s)
如果收到notification報文或者收到TCP拆除連結通知,BGP轉至idle狀態
BGP的路由生成方式network
Network命令是逐條將IP路由表中已經存在的路由引入到BGP路由表中
通過display命令在RTC上檢視是否學到BGP釋出的路由條目
BGP的路由生成方式import
Import命令是根據執行的路由協議(RIP,OSPF,ISIS等)將路由引入到BGP路由表中,同時import命令還可以引入直連和靜態路由
通過display命令在RTC上檢視是否學到BGP引入的路由條目