一、BGP協議(邊界網關協議)
是一種用于自治系統間的動態路由協議,是一種外部網關(EGP)協議。負責在不同自治系統(AS)之間交換路由信息,目的是實現大規模網絡的可擴展性、策略控制和穩定性。
自治系統AS:一組被進行統一管理,運行同一個IGP協議的路由器組成的網絡范圍。通常使用相同的路由策略。
查看AS編號:www.cidr.report
二、BGP特性
路徑向量協議:記錄路由的完整AS路徑(AS-Path防環機制),而非跳數,避免環路;
TCP連接:使用TCP 179端口,建立可靠的單播連接(鄰居(peer)無需直連);
增量更新:僅傳播變化的路由,減少帶寬消耗;
策略驅動:支持基于AS路徑、前綴、團體屬性等靈活控制路由;
策略優先:支持豐富的路由策略(如路由過濾、屬性修改);
支持IPv4/IPv6:通過MP-BGP擴展支持多協議(如VPNv4、EVPN)。
三、BGP基本術語
? ?BGP Speaker:運行BGP協議的路由器稱為BGP發言者
? ?BGP Peer:相互之間在TCP連接、相互交換路由信息的BGP發言者之間互稱為BGP對等體
BGP鄰居可以直連,也可以非直連
BGP鄰居類型:
?IBGP(內部BGP);建立在同一AS內,無需直連;用于企業內部分分支路由同步。
?EBGP(外部BGP);建立在不同AS間,默認要求直連;用于運營商之間互聯。
四、BGP規劃問題(路由黑洞)
產生原因:由于IBGP鄰居之間有沒有運行BGP協議的路由器,無法獲得BGP的路由,從而導致數據包進入路由器被丟棄。
解決方法:
(1)BGP引入IGP
(2)在黑洞路由器上配置目的網段的靜態路由
(3)IBGP全連接??----IBGP防環機制:IBGP水平分割:從IBGP鄰居學習到的路由不會傳遞給其他IBGP鄰居
(4)BGP路由反射器(無視IBGP的防環機制,可以減少鄰居關系的數量)
(5)BGP聯盟(可以減少鄰居關系的數量,IBGP水平分割限制)
五、BGP環路問題(水平分割)
1、EBGP水平分割(AS_PATH)
通過AS_PATH屬性防環,在學習到的路由中,若有本地AS號,則拒絕學習,防止環路
當路由器從一個IBGP對等體學習到某條BGP路由時,它將不能再把這條路由通告給任何IBGP對等體。
六、BGP消息種類(數據包可抓包看)
(1)BGP頭部信息:
標記(Marker):該字段被保留下來用于解決協議兼容性問題,沒有其他含義
類型(Type):該字段指示了BGP報文的類型,就是前面提到的BGP5種數據包類
(2)數據包種類
Open:用于建立BGP對等體之間的連接關系,正常收發一次即可;攜帶route-id;
Hold time:保持時間,該字段表示路由器在收到Keepalive消息或者Update消息之前等 待的最長時間,默認180s,如果鄰居雙方的保持時間不一致,將以較短的時間作為雙 方可接收的保持時間。
可選參數:Open包中包含多個可選參數,主要用于宣告及協商BGP對等體的某些 能力特征。
Keepalive:周期性的向BGP對等體發出Keepalive(周期保活)消息,用于保持連接 的有效性,在默認情況下每60秒發送一條Keepalive消息,或者以已協商一致的保 持時間的1/3為周期發送Keepalive消息。默認60s,超時180s。
Update:攜帶的是路由更新(刪減、增加)信息
Notfication:當BGP檢測到錯誤狀態時,就向對等體發出notfication消息,之后BGP 連接會立即被關閉(鄰居關系結束了)
Router-refresh:用于在改變路由策略后,要求對等體重新發送指定地址族的完整路由 表信息;只有支持路由刷新能力的路由器才會響應router-refresh報文。
七、BGP鄰居建立條件
物理口建鄰:
? 建議使用直連接口地址(物理地址)來指定IBGP鄰居;
環回口建鄰:
?對方接口要有IP地址,TCP可達(需要具有到達對方IP地址的路由),建議使用環回口地址來指定IBGP鄰居;
更新源地址必須和指定的鄰居地址一致,需要修改更新源為環回;
[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0
EBGP:
物理口建鄰:
更新源地址必須和指定的鄰居地址一致;
注:當一個路由器既有EBGP鄰居,又有IBGP鄰居的時候,需要對IBGP鄰居修改下一跳本機,否則會造成BGP的路由信息傳遞失敗。
BGP與IGP的對比
區別: | BGP | OSPF/RIP |
協議類型 | 路徑向量(AS級路由) | 鏈路狀態/距離向量(域內路由) |
收斂速度 | 慢(策略復雜) | 快(觸發更新) |
適用場景 | 跨AS路由(如IS互聯) | 企業內部網絡 |
八、BGP配置
基礎配置:
1.基礎eBGP對等體建立
??# bgp 65001???#進入BGP視圖,AS號為65001# router-id 1.1.1.1 ??#手動指定Router ID# peer 203.0.113.2 as-number 65002 ??#指定對端IP和AS號# peer 203.0.113.2 connect-interface 10 ??#指定與對等體建立會話時使用的本地 源接口# peer 203.0.113.2 ebgp-max-hop [hop-count] ??#修改最大跳數(默認255)# ipv4-family unicast ??#進入IPv4單播地址族# peer 203.0.113.2 enable ??#激活對等體
??2.路由引入與聚合
??# import-route ospf 1 ??#引入OSPF路由# aggregate 172.16.0.0 255.255.0.0 detail-suppressed ??#手動聚合路由(抑制明細)
??3.策略控制(基于Community)
##設置路由策略# route-policy BGP_OUT permit node 10# apply community no-export ??#標記路由不導出到其他AS##應用策略# peer 203.0.113.2 route-policy BGP_OUT export
高級特性配置:
1.路由反射器(RR)
##解決iBGP全互聯問題# peer 10.1.1.3 reflect-client ??#配置路由反射器客戶端
??2.BGP Confederation(聯盟)
##將大AS劃分為多個子AS,內部使用eBGP規則:# confederation id 65000 ??#對外顯示的統一AS號# confederation peer-as 65001 65002 ??#聲明子AS號
??3.BGP路由衰減(Dampening)
??##抑制頻繁震蕩的路由# dampening ??#啟用衰減
查看BGP對等體狀態:
# display bgp peer
檢查BGP路由表:
# display bgp routing-table
# display ip routing-table protocol bgp
驗證路由屬性:
# display bgp routing-table 192.168.1.0
調試BGP報文:
# debugging bgp packet