CS 168 · LECTURE 20 · 2026-11-10 · 数据中心

数据中心路由、寻址与虚拟化

Clos 提供多路径之后,还要解决怎样选路、怎样让虚拟机地址独立于物理位置,以及怎样把租户隔离落到封装与表项中。

版本快照:Fall 2026 官方课表与在线教材,核对日期 2026-09-02;官网仍标注 under construction,日期与政策可能变化。

  1. 互联网地基
  2. 路由
  3. 传输
  4. 应用与端到端
  5. 数据中心
  6. 群体通信
  7. 无线与移动

本章核心问题

十万台主机和大量可迁移 VM 如何同时获得可扩展路由、地址自由与故障恢复?

1 · ECMP 的能力与盲点

交换机对目的前缀找到多个等价 next hop,再用五元组哈希选一个。它无须逐流维护状态,速度快、可扩展;但不了解流大小,两个 elephant 哈希到同一链路会拥塞,旁边路径可能空闲。

flowlet switching、congestion-aware routing 或集中调度能更好利用路径,但需要更多状态、测量或对重排的控制。

2 · underlay 与 overlay

underlay 地址标识物理服务器/隧道端点,使用常规 IP routing 保证基础连通;overlay header 携带虚拟网络标识与内层租户包,让不同客户复用相同 private IP。

源 hypervisor/NIC 把内层包封装到发往目标宿主的外层包,目标边缘解封装交给 VM。中间路由器只维护宿主前缀,不需知道每个 VM。

3 · 地址与位置解耦

VM 迁移时租户 IP 可不变,只需更新“虚拟端点→当前 tunnel endpoint”映射。控制系统负责分发映射与失效处理,数据路径缓存热条目。

解耦降低核心表规模,却把一致性问题转移到 mapping system:旧映射会产生黑洞或错误转发,需要版本、新鲜度和快速撤回。

4 · 故障与可观测性

链路或 spine 失效后,underlay IGP/BFD 更新 ECMP group;overlay 通常无需改变租户地址。若 NIC offload、hypervisor vSwitch 与物理交换机都能改包,抓包位置会决定你看到内层还是外层。

排错应沿“VM socket→vSwitch→NIC→ToR→fabric→目标 NIC”逐点记录 header、queue 与 drop reason,不能只在应用端猜测。

纠错:最容易带走的错误模型

闭卷推演

两个租户都使用 10.0.0.8,分别位于四台宿主上。设计最小 overlay 标识与 endpoint mapping,说明核心路由器需要/不需要哪些表项。

检查:overlay 封装最直接解决什么扩展问题?

机制工作台:before → event → after

Before / local state

underlay 先把 tunnel endpoint 互联

Event / after / output

underlay 先把 tunnel endpoint 互联;overlay 根据 tenant state 封装;ECMP 对 outer five-tuple 选择路径。

检查:判断一个实现分支是否必要,最有力的问题是什么?

Explain It Yourself

追踪一个 VXLAN packet 的 inner/outer header。

自检方法

答案必须出现 packet/message、local state/table、触发 event、after state 与 output;只给定义不算完成。

一手资料

正文是 CourseStack 的中文解释与重新绘制的教学例子;官方页面负责课程原始定义,历史仓库只提供你的实现证据。