BGP協議是一種距離矢量(Distance vector)的路由協議,可是比起RIP等典型的距離矢量協議,又有不少加強的性能。BGP使用TCP做爲傳輸協議,使用端口號179。在通訊時,要先創建TCP會話,這樣數據傳輸的可靠性就由TCP協議來保證,而在BGP的協議中就不用再使用差錯控制和重傳的機制,從而簡化了複雜的程度。另外,BGP使用增量的、觸發性的路由更新,而不是通常的距離矢量協議的整個路由表的、週期性的更新,這樣節省了更新所佔用的帶寬。BGP還使用「保留」信號(Keepalive)來監視TCP會話的鏈接。並且,BGP還有多種衡量路由路徑的度量標準(稱爲路由屬性),能夠更加準確的判斷出最優的路徑。
BGP使用TCP做爲其承載協議創建鏈接。所以與IGP逐跳路由器創建鄰居不一樣,BGP能夠跨越多跳路由器創建鄰居關係。ide
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-4294967295oop
IGP只做用於本地AS內部,而對其餘AS一無所知。它負責將數據包發到主機所在的網段(segment)性能
EGP做用於各AS之間,它只瞭解AS的總體結構,而不瞭解各個AS內部的拓撲結構。它只負責將數據包發到相應的AS中,餘下的工做便交給IGP來作。3d
一、open報文:負責和對等體創建鄰居關係
二、update報文:被用來在對等體之間傳遞路由信息(包括可達路由或者不可達路由)
三、Notification報文:檢測到錯誤的時候,就發送該消息給對等體
四、Keepalive報文:週期性每60秒發送,用來維護TCP/IP鏈接
五、Route-refresh報文:表示本身支持路由刷新能力code
裏面比較重要的字段
version v4版本
My AS 表明是我該設備的AS號碼
router id 表明該設備的BGP的router id
Hold time時間 從0開始一直增長到180s,最小能夠爲0,這種狀況下BGP鏈接被認爲永遠是up,對等體之間
不會發送keepalive報文來檢測鄰居是否失效
可選字段和可變長字段router
缺省狀況下,發送KeepAlive 的時間間隔爲 60 秒,Hold Time是180秒。每次從鄰居處接收到KeepAlive 報文將重置Hold Time定時器,若是Hold Time定時器超時,就認爲對等體Down掉。blog
KeepAlive報文主要用於對等體路由器間的運行狀態以及鏈路的可用性確認。KeepAlive 報文的組成只包括一個BGP數據報頭。接口
前面兩部分表示路由撤銷信息,後面三部分表示路由可達信息
路由可達信息攜帶各類屬性
可是路由撤銷信息就不須要攜帶各類屬性了,由於這時候是撤銷了事件
Notification報文主要在發生錯誤或對等體鏈接被關閉的狀況下使用,該消息攜帶各類錯誤碼(如定時器超時等),以及錯誤子碼和錯誤信息。ip
能夠在不中斷BGP鏈接的狀況下,對BGP路由表進行動態刷新,並應用新的路由策略
運行在相同AS內的BGP路由器創建的鄰居關係爲IBGP(Internal BGP)鄰居關係
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 ###默認生成
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比較穩定
能夠實現冗餘備份
運行在不一樣AS之間的BGP路由器創建的鄰居關係爲EBGP(External BGP)鄰居關係
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 ###默認生成 #
# 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
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狀態
Network命令是逐條將IP路由表中已經存在的路由引入到BGP路由表中
經過display命令在RTC上查看是否學到BGP發佈的路由條目
Import命令是根據運行的路由協議(RIP,OSPF,ISIS等)將路由引入到BGP路由表中,同時import命令還能夠引入直連和靜態路由
經過display命令在RTC上查看是否學到BGP引入的路由條目