跳转到内容
← 返回核心概念
系统与架构计算机科学 · 计算机网络13 分钟阅读

路由与交换

Routing and Switching

一个数据包从北京的客户端发出,穿越多个运营商网络,跨越太平洋海底光缆,到达旧金山某个数据中心的服务器——全程可能经过 15 个路由器,耗时 120 毫秒。这个过程没有任何中央调度,每一个路由器只基于自己掌握的信息,独立决定"下一跳去哪里"。 这就是互联网路由的本质:去中心化的、局部决策驱动的、自适应的数据包转发系统。

路由交换BGP网络拓扑

一个数据包从北京的客户端发出,穿越多个运营商网络,跨越太平洋海底光缆,到达旧金山某个数据中心的服务器——全程可能经过 15 个路由器,耗时 120 毫秒。这个过程没有任何中央调度,每一个路由器只基于自己掌握的信息,独立决定"下一跳去哪里"。

这就是互联网路由的本质:去中心化的、局部决策驱动的、自适应的数据包转发系统

破除误解:路由器和交换机不一样

网络设备的命名常常让人困惑。两个关键区别:

设备工作层次转发依据主要职责
交换机(Switch)链路层(Layer 2)MAC 地址局域网内部通信
路由器(Router)网络层(Layer 3)IP 地址不同网络之间通信

交换机"交换"帧(Frame),连接同一局域网内的设备;路由器"路由"数据包(Packet),连接不同的网络。家庭宽带设备通常是"路由器+交换机"的组合。

不过这条界线并非泾渭分明。数据中心里大量使用三层交换机(Layer 3 Switch):它用专用芯片(ASIC,专用集成电路)在硬件中直接按 IP 地址转发,能以线速完成 VLAN 之间的路由,兼具交换机的吞吐与路由器的跨网能力。

所以"交换机只看 MAC、路由器才看 IP"是入门时的有用简化,真实设备的功能边界要模糊得多。

交换:局域网内的通信

交换机维护一张MAC 地址表(CAM 表):记录每个 MAC 地址对应哪个端口。

工作流程: 1. 收到帧,查看源 MAC 地址,记录"这个地址在这个端口" 2. 查看目标 MAC 地址: - 如果在表中,从对应端口转发 - 如果不在表中,泛洪(Flooding):从所有端口广播(除来源端口),等待目标设备回应 3. 随着通信积累,表逐渐完整,泛洪减少

交换机转发一帧有两种时机。存储转发(Store-and-Forward)先把整帧收完、校验 CRC(循环冗余校验)无误再转发,能拦下坏帧,但增加延迟;直通转发(Cut-Through)只读到目标 MAC(帧的前几个字节)就立刻开始转发,延迟低得多,代价是坏帧也会被一并转出。

Cisco 的 Catalyst 系列默认用存储转发,面向数据中心的 Nexus 系列默认用直通——在高频交易这类对每一微秒都敏感的场景里,这点延迟差异足以成为选型理由。

VLAN(虚拟局域网):交换机可以把物理端口分组,形成逻辑上隔离的局域网。即使在同一台物理交换机上,不同 VLAN 的设备也无法直接通信,必须经过路由器。这实现了网络的逻辑分段,常用于安全隔离和流量管理。

生成树协议(STP,Spanning Tree Protocol):为避免交换机之间形成环路(会导致广播风暴),STP 动态计算一棵无环的生成树,关闭冗余链路的转发(保留链路本身,链路断了再激活)。现代数据中心更多使用 RSTP(快速生成树)或基于 ECMP(等价多路径)的架构替代。

路由:网络间的通信

路由器的核心任务是维护路由表(Routing Table),并根据路由表转发数据包。

路由表条目通常包含: - 目标网络前缀(如 10.0.0.0/8) - 下一跳地址(Next Hop) - 出口接口 - 路由来源(直连、静态配置、动态路由协议) - 度量值(Metric,越小越优先)

最长前缀匹配(Longest Prefix Match):若数据包的目标 IP 匹配多个路由表条目,选择前缀最长(最精确)的那条。这是路由器查找路由的基本规则,大量使用 TCAM(三态内容可寻址存储器)硬件实现纳秒级查找。

TCAM 快,但容量有限且昂贵,这埋下了一个真实隐患。2014 年 8 月 12 日,全球 IPv4 路由表条目数首次突破 512,000——不少老旧路由器(尤其部分 Cisco 型号)出厂默认只给 IPv4 路由划了 512K 的 TCAM 空间。

超限后这些设备被迫退回慢速的软件转发,eBay、LastPass、微软 Azure 等服务相继出现波动,这一天被业界称为"512K Day"。导火索是 Verizon 把大地址块拆成数千条 /24 细分路由对外公告,瞬间推高了表项数。它说明:路由表的增长不是抽象数字,会直接撞上物理硬件的边界。

动态路由协议

路由表可以手动配置(静态路由),但互联网规模下必须动态更新。动态路由协议分两大类:

域内路由协议(IGP,Interior Gateway Protocol):在一个自治系统(AS)内部使用。

  • OSPF(开放最短路径优先):链路状态协议。每个路由器广播自己的链路状态(与哪些邻居相连,链路开销多少),所有路由器都有完整的拓扑图,各自独立用 Dijkstra 算法计算最短路径。收敛速度快,适合大型企业和运营商内部网络。
  • RIP(路由信息协议):距离向量协议。每个路由器只知道到各目标的跳数(Hop Count),定期广播路由表给邻居。它的"慢"有具体原因:链路故障时距离向量协议会出现"计数到无穷(count-to-infinity)"——错误的跳数在路由器之间循环递增、收敛极慢,要靠水平分割(split horizon)等机制缓解,而最大 15 跳的上限正是给这种递增封顶。它简单,但现在几乎仅用于教学。

域间路由协议(EGP,Exterior Gateway Protocol)

  • BGP(边界网关协议):互联网唯一实际使用的域间路由协议(RFC 4271),是 AS 之间交换路由信息的标准。BGP 不追求最短路径,而是基于策略的路径向量协议——AS 可以基于商业协议(对等、上下游付费)、地缘政治、安全等因素选择路由路径。

BGP:互联网的路由黏合剂

全球互联网由约 80,000 个自治系统(AS)组成,它们彼此公告的 IPv4 路由到 2024 年已增长到约 95 万条。BGP 是让它们互相"知道路"的协议。

BGP 路由的基本单元是前缀公告我能到达 203.0.113.0/24,路径是 [AS64500, AS64501]

BGP 路由决策(简化): 1. 丢弃本地策略禁止的路由 2. 优先本地优先级(Local Preference)更高的路由 3. 优先路径更短(AS 数量更少)的路由 4. 多路径时,其他属性进一步决策

BGP 的韧性与脆弱性:BGP 的去中心化设计使其极其稳健——没有单点故障。但它也极其脆弱:任何 AS 都可以公告任何前缀,无需验证自己真的拥有这些地址。BGP 劫持(公告他人的 IP 前缀)曾多次发生:

  • 2008 年:巴基斯坦电信试图封锁 YouTube,错误地向全球公告了 YouTube 的 IP 前缀,导致 YouTube 短暂断网约 2 小时。
  • 2010 年:中国电信公告了约 37,000 个前缀的错误路由,影响全球流量约 18 分钟。

BGP 的另一种失效不来自恶意,而来自自己。2021 年 10 月 4 日,Facebook(Meta)在一次例行维护中误下指令切断了骨干网;它的 DNS 服务器被设计成"一旦连不上数据中心就撤回自己的 BGP 路由公告",于是全球路由表中通往 Facebook 域名服务器的路径被集体撤销。

结果 Facebook、Instagram、WhatsApp 从互联网上"消失"约 6 小时——不是被攻击,而是自己把回家的路从地图上抹掉了。可见路由公告的"撤回"和"劫持"一样,都能造成全球级别的中断。

RPKI(资源公钥基础设施):为 BGP 前缀公告引入数字签名,路由器可以验证"这个 AS 真的有权公告这个前缀"。部署在 2020 年代明显加速——据 NIST(美国国家标准与技术研究院)的监测,2024 年 5 月全球 IPv4 路由中"有 ROA(路由源授权)覆盖"的比例首次过半。但"签了名"不等于"会被检查":真正按 RPKI 主动拒绝非法路由的网络仍是少数,距离全面生效还有距离。

SDN:软件定义网络

传统路由器/交换机把控制平面(决定流量走向)和数据平面(实际转发数据包)集成在同一设备上。

SDN(Software-Defined Networking)把控制平面抽离出来,放到集中的SDN 控制器

应用层(网络应用、策略)
    ↕ 北向接口(REST API 等)
控制平面(SDN 控制器,集中式)
    ↕ 南向接口(OpenFlow、NETCONF 等)
数据平面(交换机/路由器,只做转发)
```

优点:网络行为可编程、快速响应(软件升级即可改变路由策略)、集中可视化。缺点:控制器成为新的单点故障,需要分布式高可用设计。Google 的 B4 和 Facebook 的 FBOSS 是生产级 SDN 的著名案例。

代价与争议

互联网的脆弱性:BGP 的基于信任、无认证的设计,是互联网深层的安全隐患。RPKI 是技术解决方案,但国际间协调部署进展缓慢——没有哪个单一实体能强制所有 AS 升级。

SD-WAN vs. MPLS:传统企业广域网使用 MPLS(多协议标签交换,运营商提供有保证的 QoS),费用高昂。SD-WAN 用软件在廉价宽带上构建可靠的企业网络,2015 年后快速替代 MPLS。这是一个典型的"软件吃掉专用硬件"的故事。

跨域连接

  • 主权:边界网关协议选的是策略路径而非最短路径,因此「不经过某国网络」这类要求可以直接写进选路。这让网络拓扑承载了管辖权主张,也给出一条推论:任何数据不出境的规定最终都要落到路由策略与互联协议上,而这些是私人商业合同,国家只能间接施压,无法直接改写全球路由表。
  • 网络战:路由公告无需证明地址所有权,于是攻击者只要公告比真实持有者更具体的前缀,最长前缀匹配就会把流量优先送给他。这条机制解释了两个可观察事实:更长前缀的劫持比等长劫持有效得多;运营商普遍过滤过长前缀作为对策。劫持因此既可用于封锁,也可用于把流量绕到可监听的路径上。
  • 产业组织:自治系统之间分为互不结算的对等与下游付费的中转,本地优先级把这些合同直接翻译成转发决策。于是最优路由是成本最优而非时延最优,路径长度与网络性能可以系统性背离。推论是拓扑会朝经济结构演化:大型内容方自建骨干并广泛对等,正是为了把中转费从成本表里去掉。
  • 图论:链路状态与距离向量的分歧是信息结构的分歧。前者让每个节点持有完整拓扑再各自算最短路,后者只交换到各目标的距离。计数到无穷正是局部信息下无法区分「路径确实变长」与「绕成了环」的直接后果,而给公告附上完整路径就能识别环路——这就是域间协议携带路径向量的原因。
  • 存储层级与缓存:三态内容可寻址存储器是「快而贵而小」的极端形态,路由表一旦超出它的容量,转发就退回软件路径。这给出一类可预测的失效:用固定容量关联存储做查找的系统,在条目数增长时经历的是断崖式退化而非平滑劣化,且退化时刻由一个多数人不知道的出厂参数决定。

参考文献

  • Rekhter, Y. et al. A Border Gateway Protocol 4 (BGP-4). RFC 4271, IETF, 2006.
  • Moy, J. OSPF Version 2. RFC 2328, IETF, 1998.
  • Tanenbaum, A. & Wetherall, D. Computer Networks. 5th ed. Pearson, 2011.
  • McKeown, N. et al. OpenFlow: Enabling Innovation in Campus Networks. ACM SIGCOMM CCR, 2008.
  • Lepinski, M. & Kent, S. An Infrastructure to Support Secure Internet Routing. RFC 6480, IETF, 2012.
  • Mohapatra, P. et al. BGP Prefix Origin Validation. RFC 6811, IETF, 2013.
  • RIPE NCC. YouTube Hijacking: A RIPE NCC RIS Case Study. RIPE Network Coordination Centre, 2008.
  • Meta Engineering. More Details About the October 4 Outage. engineering.fb.com, 2021.