什么是 BGP?

BGP 是互联网上各自治系统(AS)之间交换路由信息的协议,决定数据从一个网络到另一个网络走哪条路。互联网由数万个 AS 组成,BGP 负责在它们之间宣告"我这里有这些 IP 段",是互联网能连通的基础协议之一。

互联网不是一个整体网络,而是由数万个自治系统(AS,Autonomous System)拼成。一个自治系统是一组由同一机构管理的网络,有全球唯一的 AS 号,例如某家电信运营商或某个大型数据中心各是一个 AS。数据从一个 AS 到另一个 AS 时,需要知道"对方的网络在哪里、怎么走"。

BGP(Border Gateway Protocol,边界网关协议)负责在 AS 之间交换这类信息。每个 AS 通过 BGP 向邻居宣告自己拥有的 IP 段,其他 AS 把这些宣告记入路由表,收到数据时据此选择下一跳。AS 数量庞大、路径众多,BGP 的选择规则综合考虑多种因素,互联网的路由因此随时在动态变化。

BGP 也支撑着前面文章提到的技术:Anycast 依赖 BGP 让多台服务器宣告同一个 IP 前缀;第 18 期的根服务器集群、第 20 期的 CDN,都是通过 BGP 把请求导向最近的节点。BGP 的信任机制建立在 AS 之间互相宣告的基础上,若某个 AS 错误或恶意宣告了不属于自己的 IP 段,流量会被导向错误方向,这类事件被称为 BGP 劫持。