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 消息類型
- OPEN:TCP連接建立後發送的第一個報文,用於協商BGP版本號、AS編號、Hold Time等參數。
- UPDATE:用於通告可達路由(攜帶NLRI和路徑屬性)或撤銷不可達路由。
- KEEPALIVE:周期性發送以維持連接活性,同時用於響應OPEN報文的確認。
- NOTIFICATION:當檢測到錯誤時發送,並隨即關閉BGP連接。
- ROUTE-REFRESH(可選擴展):用於動態請求對等體重發路由信息。
路徑屬性與最佳路徑選擇
BGP不單純依靠距離矢量,而是基於一系列路徑屬性(Path Attributes)進行決策。當存在多條通往同一目的地的路由時,BGP會啟動最佳路徑選擇算法(Decision Process)[7]。典型的選路順序如下[10][7]:
- 丟棄下一跳不可達的路由;
- 優選權重(Weight)最高的路由(Cisco專有屬性);
- 優選本地優先級(Local Preference)最高的路由;
- 優選本地生成的路由(如通過network命令注入);
- 優選AS路徑(AS_PATH)最短的路由;
- 優選起源類型最低的路由(IGP < EGP < Incomplete);
- 優選MED(Multi-Exit Discriminator)值最低的路由;
- 優選eBGP學到的路由而非iBGP;
- 優選到Next_Hop的IGP度量值(Metric)最低的路由;
- 在仍無法區分時,使用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]。
參考文獻
- ↑ 1.0 1.1 1.2 1.3 1.4 Rekhter, Y., Li, T., Hares, S., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, January 2006.
- ↑ 2.0 2.1 2.2 2.3 Border Gateway Protocol, EPFL Graph Search.
- ↑ 3.0 3.1 3.2 3.3 Rekhter, Y., "BGP at 18: Lessons in protocol design", Juniper Networks, 2007.
- ↑ 4.0 4.1 Lougheed, K., Rekhter, Y., "A Border Gateway Protocol (BGP)", RFC 1105, June 1989.
- ↑ What is BGP? A Pillar of the Modern Internet, Catchpoint, 2019.
- ↑ BGP技術介紹,新華三集團.
- ↑ 7.0 7.1 7.2 BGP Path Selection and Route Preference, Cisco Systems, 2026.
- ↑ BGP路由技術, 阿里雲開發者社區, 2023.
- ↑ Overview of BGP Messages, Juniper Networks.
- ↑ Route Selection, Juniper Networks.
- ↑ An Introduction to the Border Gateway Protocol (BGP) for Protocol Developers, IETF 119.
- ↑ Jiang, S., et al., "Route Origin Registry Problem Statement", IETF Internet-Draft, 2026.
- ↑ 13.0 13.1 Jaw, E., et al., "Serial BGP Hijackers: A Reproducibility Study and Assessment of Current Dynamics", RIPE Labs, 2024.
- ↑ 14.0 14.1 "Understanding stealthy BGP hijacking risk in the ROV era", APNIC Blog, 2025.
- ↑ Bates, T., et al., "Multiprotocol Extensions for BGP-4", RFC 4760, January 2007.