跳至內容

Border Gateway Protocol

出自轻之舟百科
Border Gateway Protocol
中文名 邊界網關協議
英文名 Border Gateway Protocol
縮寫 BGP
當前版本 BGP-4(RFC 4271,2006年)
端口 / 傳輸協議 TCP 179
路由類型 外部網關協議(Exterior Gateway Protocol),路徑矢量協議(Path-vector protocol)
主要功能 在自治系統(AS)之間交換網絡可達性信息
標準化機構 IETF

Border Gateway Protocol(BGP,邊界網關協議) 是互聯網中核心的自治系統(AS, Autonomous System)之間的路由協議,其基本功能是在自治系統之間自動交換無環路的路由信息[1]。BGP被歸類為路徑矢量協議(Path-vector protocol),其路由決策基於路徑、網絡策略或管理員配置的規則集,而不僅僅是維護簡單的路由跳數或鏈路狀態[2]。BGP-4支持無類別域間路由(CIDR)並提供了路由聚合機制,是當前互聯網事實上的域間路由標準[1]

歷史與版本

BGP的設計源於早期互聯網外部網關協議(EGP, Exterior Gateway Protocol)的局限性,尤其是EGP對自治系統間拓撲結構限制為樹形,且因基於不可靠的IP傳輸而導致更新丟失問題[3]

BGP-1 至 BGP-3

  • BGP-1: 於1989年6月在RFC 1105中首次發布,支持少量帶類別的IPv4路由,使用TCP作為可靠傳輸以減少路由震盪,並引入了AS_PATH屬性以防止路由環路[4][3]。BGP最初是在1989年1月的第12屆IETF大會上由Yakov Rekhter和Kirk Lougheed共同設計的,起初只是一個短期解決方案,卻意外成為了互聯網的基石之一[5]
  • BGP-2: 發布於1990年的RFC 1163,引入了通過TLV編碼攜帶路徑屬性(如Origin、AS_PATH、Next_Hop)的框架,為後續擴展打下了基礎[3]
  • BGP-3: 發布於1991年的RFC 1267,進一步優化了BGP-2的工作機制[3][6]

BGP-4

當前廣泛部署的版本是BGP-4。其初始規範於1994年在RFC 1654中起草,隨後於1995年在RFC 1771中發布,最終標準於2006年在RFC 4271中正式確定[1][2]

BGP-4相較於早期版本的關鍵改進在於對CIDR的支持,允許多個IP前綴聚合為一條路由通告,極大縮減了互聯網路由表的規模[1]。此外,BGP-4進一步增強了策略控制粒度,支持更豐富的路徑屬性[7]

工作原理

BGP運行在可靠的傳輸層協議之上,通常使用TCP端口179建立連接,這避免了協議自身實現複雜的報文分片、重傳和確認機制[4][2]。BGP對等體(Peers)需要管理員手動配置以建立連接。

BGP 消息類型

BGP對等體之間通過以下五種報文進行交互[8][9]

  • OPEN:TCP連接建立後發送的第一個報文,用於協商BGP版本號、AS編號、Hold Time等參數。
  • UPDATE:用於通告可達路由(攜帶NLRI和路徑屬性)或撤銷不可達路由。
  • KEEPALIVE:周期性發送以維持連接活性,同時用於響應OPEN報文的確認。
  • NOTIFICATION:當檢測到錯誤時發送,並隨即關閉BGP連接。
  • ROUTE-REFRESH(可選擴展):用於動態請求對等體重發路由信息。

路徑屬性與最佳路徑選擇

BGP不單純依靠距離矢量,而是基於一系列路徑屬性(Path Attributes)進行決策。當存在多條通往同一目的地的路由時,BGP會啟動最佳路徑選擇算法(Decision Process)[7]。典型的選路順序如下[10][7]

  1. 丟棄下一跳不可達的路由;
  2. 優選權重(Weight)最高的路由(Cisco專有屬性);
  3. 優選本地優先級(Local Preference)最高的路由;
  4. 優選本地生成的路由(如通過network命令注入);
  5. 優選AS路徑(AS_PATH)最短的路由;
  6. 優選起源類型最低的路由(IGP < EGP < Incomplete);
  7. 優選MED(Multi-Exit Discriminator)值最低的路由;
  8. 優選eBGP學到的路由而非iBGP;
  9. 優選到Next_Hop的IGP度量值(Metric)最低的路由;
  10. 在仍無法區分時,使用Router ID、Cluster List長度及對等體IP地址等作為最後的仲裁因素。

路由信息庫(RIB)

BGP路由器在邏輯上維護多個路由信息庫(Routing Information Bases)[1][11]

  • Adj-RIBs-In:存儲從對等體接收到的原始路由信息。
  • Loc-RIB:經過選路策略(如入向過濾、屬性修改和最佳路徑算法)後,本地選中的路由信息。
  • Adj-RIBs-Out:準備向特定對等體宣告的路由,通常經過出向策略修飾。

安全考量

BGP在設計之初缺乏內置的安全驗證機制,一個AS可以宣告並不屬於它的IP地址前綴,從而導致流量被錯誤吸引或攔截(前綴劫持,Prefix Hijacking)[12]。這一問題既可能源於管理員配置錯誤,也可能是惡意攻擊,且後果波及範圍往往極廣[13]

為了緩解這些安全威脅,業界開發了資源公鑰基礎設施(RPKI,Resource Public Key Infrastructure)和路由起源驗證(ROV,Route Origin Validation),允許AS所有者通過加密證書授權其IP前綴的宣告權限[14]。此外,針對路徑完整性的BGPsec(RFC 8205)也被提出以提供更全面的安全保障[13],但由於部署複雜性和開銷等原因,其在全球範圍內的實際普及度依然有限[14]

擴展與應用

隨着互聯網的發展,原始BGP-4針對IPv4單播設計的功能已不足以滿足新需求,由此產生了**多協議BGP擴展**(MP-BGP, Multiprotocol Extensions for BGP-4,RFC 4760)。MP-BGP引入地址族標識符(AFI, Address Family Identifier)和後續地址族標識符(SAFI, Subsequent Address Family Identifier)字段,使BGP能夠承載IPv6單播、多播、三層VPN(L3VPN)及虛擬專用局域網服務等多種網絡層協議的路由信息[15][2]

參考文獻