BGP 做的事,就是让这些 AS 互相通报路径。比如一个网络说:“我要去某个 IP 前缀,可以从 AS 10 → AS 25 → AS 80 过去。”另一个网络听到后,会根据自己的策略决定信不信、用不用。注意,BGP 选路不只看距离,它更看商业关系、运营策略和本地优先级。便宜的路、合作伙伴的路、避免竞争对手的路,都可能比“更短的路”优先。
麻烦也从这里来。当某条路断了,一个 AS 会撤回旧路径,邻居再重新计算,接着把新选择告诉更多邻居。问题是这些消息不是瞬间同时到达的,有的节点还拿着旧信息,有的已经换了新信息。于是网络可能在几条路径之间来回切换,这就是路由振荡。它不像一个程序里变量改错了那么直接,而是很多局部正确的选择叠在一起,最后让全局不稳定。
BGP 的难点在于:每个 AS 都只看自己的一小块世界,而且每个 AS 都有自己的利益。它没有一个“上帝视角”去强制大家走最优路径。所以 BGP 的稳定性,本质上不是单纯算法问题,而是分布式系统、策略冲突和现实商业规则混在一起的问题。