计算机网络学习站

kp-015 · 03-网络层与路由

外部网关协议 BGP 与互联网路由生态

核心 约 25 分钟 BGP自治系统路由策略互联网生态
我的进度:

注:本文基于模型知识整理,建议结合权威教材与 RFC 原文核对细节。

一句话定义

边界网关协议(Border Gateway Protocol, BGP)是自治系统之间交换可达性信息的路径向量协议,它不追求全局最优路径,而是让每个自治系统按自身商业策略选择「接受哪些路由、优先走哪条路」,是今天整个互联网赖以互联的协议。

为什么重要

你在浏览器里访问的每一个网站,流量都经过一串由 BGP 通告串起来的自治系统。理解 BGP 才能理解互联网为什么这样互联:为什么某些访问会绕道另一个大洲、为什么一次错误通告能让大面积网络瘫痪、云厂商为什么要满世界建设对等连接。它也是网络方向面试区分「会配置」与「懂生态」的分水岭。

前置知识

建议先读 kp-014《内部网关协议:RIP 与 OSPF》,理解 IGP 与 EGP 的分工、距离向量的思想及其局限;同时需要 kp-011 中 CIDR 前缀的表示方法。

核心概念

  • IGP 为什么不能用于域间:其一,规模——域间前缀达数十万条,任何 IGP 的泛洪与 SPF 计算都无法承受;其二,目标不同——域间选路首先服从商业与安全策略,而非「最短」;其三,信任边界——机构之间互不信任,不能向外部暴露内部拓扑。
  • 自治系统(Autonomous System, AS):在同一管理权威下、执行统一路由策略的网络集合,用自治系统号 ASN 标识,由 IANA 与各区域注册机构分配。
  • eBGP 与 iBGP:eBGP 运行在不同 AS 的边界路由器之间交换路由;iBGP 运行在同一 AS 内部,把外部可达性同步给本 AS 的其他边界路由器。
  • 路径向量:BGP 更新携带完整 AS_PATH(途经的 AS 号列表)。收到更新后发现路径里已包含自己的 AS 号就直接拒收,环在入口即被识别——这与距离向量「只传距离数字」有本质区别:看得见完整路径,才谈得上按路径制定策略。
  • 关键属性与简化选路顺序:LOCAL_PREF(本地优先级)只在本 AS 内传播,值越大越优先,决定出流量走哪个出口;其次比较 AS_PATH,越短越优;MED(Multi-Exit Discriminator)是本 AS 向邻居传递的「希望你从哪个入口进来」的暗示,影响进流量。
  • 商业关系与选路偏好:AS 之间的关系分客户(对方付费买转接)、对等(双方免费互换流量)、转接(向付费上游买全球可达)。运营商的路由偏好是客户路由 > 对等路由 > 转接路由——承载客户流量赚钱、走对等不花钱、走转接要掏钱,即使转接路径更短也优先客户路径。
  • BGP 劫持与路由泄漏:错误或恶意通告不属于本 AS 的前缀(劫持),或把从一个邻居学来的路由错误传给另一个邻居(泄漏),会把流量引向错误路径,造成断网、黑洞或被监听;防御手段之一是 RPKI 起源验证,用密码学签名证明「该前缀确已授权该 AS 通告」。
  • 互联网生态:大型 Tier-1 运营商之间互相对等、向下游出售转接;中小 ISP 与内容平台通过 IXP(Internet Exchange Point,互联网交换中心)或直连线路对等互联,形成「转接在上、对等在中、客户在下」的分层结构。

图示

互联网商业层级(简化模型)

              +------------------------+
              |    转接商 AS(上游)     |   Tier-1 之间相互免费对等
              +------------------------+
                 /                  \
        付费转接 /                    \ 付费转接
               /                      \
        +---------+     对等互联      +---------+
        | AS 100  | <---------------> | AS 200  |
        +---------+  (直连或经 IXP)   +---------+
              \                        /
               \----- 接入 IXP 交换点 --/

 选路偏好:客户路由 > 对等路由 > 转接路由

原理与机制

BGP 用 TCP(端口 179)建立可靠会话,邻居之间增量交换更新与撤回报文:通告前缀时附带一串路径属性,撤销时发送撤回消息。选路是对每条候选路径按属性逐级比较:先看本地优先级等出流量策略,再比 AS_PATH 长短,再看 MED 等,策略始终优先于「最短路径」,这是 BGP 与 IGP 的根本分野。防环机制内建于协议:AS_PATH 让每条路由自带履历,自己的 AS 号出现即拒绝。策略实例:AS 100 同时从客户、对等方与转接商学到同一前缀,即使转接商路径的 AS_PATH 更短,配置正确的 AS 100 也会优先客户路径——因为每个包走客户路径有收入、走转接路径要付费。风险面:任何 AS 都可能错误或恶意通告任意前缀且会被全球接受,历史上多次大范围断网事故源于此,RPKI 通过验证「前缀与授权 AS」的签名绑定关系来收窄攻击面。

实例分析

一个中小 ISP 的选型全景:它向上游 Tier-1 购买转接以保证全球可达,同时在本城 IXP 与本地视频平台对等以节省跨城流量,并为若干下游企业客户提供转接服务。到达某个前缀若有客户通告,优先走客户路径(有收入);否则走 IXP 对等(零成本);都没有才走付费转接。这套「客户 > 对等 > 转接」的偏好用属性落实:客户路由配最高 LOCAL_PREF,对等次之,转接最低;同时用 MED 向邻居暗示优选入口。若某天它误把从转接商学来的全球路由表通告给了对等伙伴,就构成路由泄漏——对等伙伴会把本应付费转接的流量免费灌给它,轻则链路被打爆,重则引发大范围路由紊乱。

常见误区

  • 以为 BGP 是「更大号的 OSPF」:二者目标不同,BGP 管域间策略与可达性,从不承诺最短路径。
  • 以为路径越短越会被选中:LOCAL_PREF 等策略属性的比较顺序排在 AS_PATH 长度之前。
  • 以为 iBGP 与 IGP 功能重复:iBGP 只同步外部可达性,不承载内部拓扑,两者是配合关系。
  • 以为互联网路由天然可信:任何 AS 的错误通告都可能被全网接受,起源验证需要额外部署 RPKI。

自测题

  1. 为什么 IGP 不能直接用于自治系统之间?

答案要点:规模上数十万前缀使泛洪与 SPF 失效;目标上域间首重商业策略而非最短路径;边界上跨 AS 缺乏信任、不能暴露内部拓扑。

  1. BGP 如何天然防环?

答案要点:更新携带完整 AS_PATH,收到含自己 AS 号的路径直接拒收,环在入口即被识别。

  1. LOCAL_PREF 与 MED 各影响哪个方向的流量?

答案要点:LOCAL_PREF 在本 AS 内部比较,决定出流量选哪个出口;MED 是向邻居 AS 传递的进流量入口偏好提示。

  1. 为什么客户路由优先于转接路由?

答案要点:承载客户流量有收入,走转接要付费;商业激励使运营商宁可路径更长也优先选客户通告的路由。

  1. RPKI 防的是什么问题?

答案要点:用密码学验证「前缀与通告它的 AS」之间的授权关系,缓解前缀劫持与路由泄漏中的起源伪造。

延伸阅读

  • RFC 4271《A Border Gateway Protocol 4 (BGP-4)》
  • RFC 7454《BGP Operations and Security》
  • 谢希仁《计算机网络》