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.