BGP边界网关协议
边界网关协议(Border Gateway Protocol,简称BGP)是互联网的核心路由协议,负责在不同自治系统之间交换路由信息和可达性数据。它是互联网的“导航系统”,使得全球成千上万个独立运营的网络能够互相连接,形成一个统一的全球网络。
第一步:理解BGP的基本定位——自治系统与路径向量协议
互联网由数万个独立管理的网络组成,这些网络被称为“自治系统”。一个AS可以是一个大型互联网服务提供商、一家跨国公司或一所大学网络。BGP运行在AS的边界路由器上,其核心任务是在AS之间交换网络前缀(如 192.0.2.0/24)的可达性信息。与OSPF、RIP等内部网关协议不同,BGP是一种“路径向量协议”。它宣告的不仅仅是“某个网络在哪个方向”,而是一条完整的“AS路径”,即到达目标网络需要经过哪些AS序列。这有效防止了路由环路,并为路由决策提供了关键依据。
第二步:解析BGP会话建立与消息类型
两个AS之间建立BGP连接,称为建立“对等”关系。这个过程需要管理员手动配置对等体的IP地址。建立过程如下:
- TCP连接:双方在TCP端口179上建立可靠的连接。
- OPEN消息:交换BGP版本号、AS号、保持时间等参数。
- KEEPALIVE消息:确认OPEN消息,并定期发送以维持连接。
- UPDATE消息:这是BGP的核心。它包含“撤销路由”(不再可达的前缀)和“宣告路由”(新的可达前缀及其路径属性)。
- NOTIFICATION消息:在检测到错误时发送,并立即关闭连接。
会话分为两种:
- eBGP:运行于不同AS之间。
- iBGP:运行于同一AS内部,用于确保AS内所有BGP路由器对外的路由信息一致。
第三步:深入BGP路径属性——路由决策的灵魂
BGP UPDATE消息中携带的不仅仅是网络前缀和AS路径,还包括一系列“路径属性”,这些属性是BGP进行路由选择和控制策略的核心。主要属性包括:
- AS_PATH:记录路由所经过的AS序列。路径越短,通常优先。
- NEXT_HOP:指出到达目标网络的下一跳IP地址(通常是eBGP对等体的接口地址)。
- LOCAL_PREF:本地优先级,仅在iBGP对等体之间传递。用于在AS内部明确指定某条出口路由的优先程度,数值越高越优先。
- MED:多出口鉴别符,用于向相邻AS“建议”从哪个入口进入本AS更好,数值越低越优先。
- ORIGIN:表示路由的来源(IGP、EGP或不完整)。
- COMMUNITIES:社区属性,一种给路由“打标签”的机制,用于在AS之间传递策略信息,例如“不要将这条路由宣告给欧洲的AS”。
第四步:掌握BGP路由选择与策略控制过程
当一台BGP路由器从多个对等体收到通往同一网络前缀的不同路由时,会按严格的顺序依次比较以下属性,以选择最佳路径:
- 最高权重(厂商特定,非标准属性)。
- 最高本地优先级(LOCAL_PREF)。
- 优选本地始发的路由。
- 最短的AS_PATH。
- 最低的起源类型(IGP < EGP < INCOMPLETE)。
- 最低的MED。
- 优选eBGP学到的路由(优于iBGP)。
- 到NEXT_HOP的IGP度量值最小的路径。
- …(后续可能比较路由器ID等)。
最关键的是,BGP的决策过程高度依赖路由策略。网络管理员可以通过“路由映射”、“前缀列表”、“过滤器列表”等工具,基于AS_PATH、COMMUNITIES或网络前缀,精细地控制:接收哪些路由、修改其路径属性、向谁宣告哪些路由。这使得BGP不仅是一个路由发现协议,更是一个强大的策略控制工具。
第五步:认识BGP在现代互联网中的关键角色与挑战
- 互联网的粘合剂:BGP实现了全球网络的互联互通,其稳定性和收敛速度直接影响互联网的可用性。
- 安全与风险:BGP本身缺乏内置的身份验证和授权机制,主要基于信任。这导致“BGP劫持”成为重大安全威胁,即恶意AS错误地宣告不属于自己的IP前缀,从而劫持流量。缓解措施包括RPKI(资源公钥基础设施)和BGPsec等安全扩展。
- 大规模与可扩展性:全球BGP路由表规模已超过90万条条目,并持续增长。这对路由器内存和CPU处理能力构成挑战。路由聚合和精细的策略控制是维持可扩展性的关键。
- 流量工程:大型网络(如云服务商、内容提供商)通过精心设计BGP策略(如调整LOCAL_PREF、MED,或使用特定的COMMUNITIES),可以引导入站和出站流量经过最优路径,以优化性能和成本。