跳转到内容

路由

路由器如何知道往哪转发?答案是两类域内算法(距离向量、链路状态)与一个域间协议(BGP)。本章讲它们的原理,以及 BGP 的策略性与脆弱性(→ 最短路径)。

  • 转发:收到包查表、送到对应出口——数据面的高速路径(硬件查表);
  • 路由:构建那张表——控制面,本章的主角。

表的内容:目的地前缀 → 下一跳(→ 分层模型与 IP)。

每个路由器把自己的距离表告诉邻居,邻居加上到"告诉我的人"的距离取最小。Bellman-Ford 思想的分布式版(→ 最短路径):

  • 优点:实现极简,只需邻居间通信;
  • 缺点:收敛慢——坏消息传播慢("数到无穷"问题:链路断了,距离表逐轮 +1 直到上限);度量只有跳数。

每个路由器** flooded 全网拓扑**(链路状态通告 LSA),各自本地跑 Dijkstra 算最短路径树:

  • 优点:收敛快(拓扑变化立即泛洪)、度量可配置(带宽)、每个路由器有全网视图;
  • 缺点:泛洪开销,域的规模有上限(分区域 OSPF 应对)。

**距离向量(只信邻居)与链路状态(全网视图)**是分布式最短路径的两条路线:前者通信少收敛慢,后者通信多收敛快。

互联网由上万个自治系统(AS)组成,AS 之间用 BGP 交换可达性。与域内的根本不同:BGP 选路是策略而非最短——AS 根据商业关系(客户 > 对等 > 供应商)与政策(过滤某前缀、偏好某路径)选择路由,"最短"根本不在目标里。

BGP 的机制:AS 宣告自己的前缀 + 传播从邻居学来的路径(AS_PATH),路径属性驱动选择。没有全网拓扑、没有"正确"答案——只有每个 AS 的本地策略。

互联网的可达性依赖于 BGP 的互信——AS 之间默认相信对方宣告的路径是真的:

  • 路由劫持(prefix hijack):恶意或误操作宣告别人的前缀,流量被吸走(著名案例:Pakistan Telecom 劫持 YouTube,2008);
  • 路由泄漏(route leak):传播不应传播的路由,造成大规模断网;
  • 收敛慢:一条前缀的变更传播全球要分钟级,期间黑洞或环路。

对策都在路上但部署缓慢:RPKI(路由起源验证,密码学签名宣告)、BGPsec(路径验证)。互信 + 策略的体系决定了 BGP 是互联网最脆弱的一环。

  • 转发是数据面(查表),路由是控制面(建表)
  • 距离向量(RIP)只信邻居:简单但收敛慢(数到无穷);链路状态(OSPF)全网视图:收敛快但泛洪开销
  • BGP 选路是策略而非最短:商业关系驱动,没有全网拓扑
  • 互联网的可达性依赖于 BGP 的互信:劫持、泄漏、慢收敛是三大脆弱性,RPKI 部署缓慢
  • 域内跑最短路径算法,域间跑商业策略——同一个"图",两个世界