一、数据中心的起源
数据中心(Data Center, DC)是现代计算基础设施的核心。 它通过大规模集群为云计算、AI 训练、视频服务等提供算力与存储。
二、数据中心网络简介
数据中心网络(DCN)是指用于连接成千上万台服务器的网络系统。 其设计目标是:
- 高吞吐量
- 低延迟
- 高可靠性
- 可扩展性
U-M 的 MACC 数据中心 就是一个典型例子。
三、数据中心网络为何重要
在 2008 年以前,网络研究多集中于:
- 互联网路由(Internet Routing)
- 对等网络(P2P)
- 叠加网络(Overlay Networks)
- 拥塞控制、多播等
这些研究难以快速部署落地,因为:
- 受限于用户、ISP、政府政策等外部因素
而数据中心网络不同:
-
由单一机构控制,可自由修改和部署
-
可立即实验并应用
-
因其独特性带来了大量新的研究问题,包括:
- 理论问题(如流量调度)
- 工程问题(如线缆布局、负载均衡)
四、数据中心网络的特点
| 特征 | 说明 |
|---|---|
| 单一管理域 | 运维者可同时控制硬件(服务器、交换机)和软件(TCP/IP 栈、应用、路由协议等) |
| 规模巨大 | 一个站点可拥有 10,000–1,000,000 台服务器 |
| 结构化拓扑 | 网络拓扑是有规律可控的,而非随机连接 |
| 低延迟 | DC 内 RTT 通常为 1–100 微秒,而广域网(WAN)则为 100 毫秒量级 |
| 多样化应用 | 搜索、社交网络、电商、视频、大数据、AI 等 |
| 网络瓶颈 | 早期(2008)仅有 1 Gbps 网卡,因此网络成为性能限制因素 |
五、典型数据中心拓扑结构
+----------------------+
| Core Router | (L3)
+----------------------+
|
+----------------------+
| Aggregation Switch | (L2/L3)
+----------------------+
|
+----------------------+
| Access Switch | (L2)
+----------------------+
|
[ Servers ]
过度订阅(Oversubscription)
定义:
终端主机之间在最坏情况下的总可达带宽与拓扑结构的总双向带宽(bisection bandwidth)之比。
- 过度订阅率越高,网络成本越低,但性能越差。
- 典型比率:2.5:1(400 Mbps)到 8:1(125 Mbps)
成本估算:
- 边缘交换机(48 端口 GigE):约 $7,000
- 汇聚/核心交换机(128 端口 10GigE):约 $700,000
- 不包括布线成本!
六、传统拓扑的问题
- 单点故障(Single Point of Failure)
- 上层链路带宽瓶颈严重(高过度订阅)
- 成本与供给的权衡
- L2 与 L3 路由方式选择复杂
- 网络管理依赖人工配置,容易出错
七、理想数据中心拓扑的特征
| 要求 | 说明 |
|---|---|
| 向后兼容 | 应用层无需修改 |
| 支持以太网 (L2) | 保持原有协议生态 |
| 成本有效 | 节能、降温、硬件便宜 |
| 高性能 | 主机通信能达到线速 (line speed) |
八、Clos 网络 / Fat-Tree 拓扑
- 基于 Clos 拓扑 的特例
- 来源于电话交换网络设计
- 通过互联多个小型交换机实现高带宽
- 可使用廉价、通用设备组建
九、Fat-Tree 数据中心架构
结构描述(k-ary Fat Tree)
-
三层结构:Edge、Aggregation、Core
-
每个 Pod 包含:
- $(k/2)^2$ 台服务器
- 两层 k/2 台交换机(Edge + Aggregation)
-
每个 Edge 交换机:
- 连接 k/2 台服务器
- 连接 k/2 台 Aggregation 交换机
-
每个 Aggregation 交换机:
- 连接 k/2 台 Edge
- 连接 k/2 台 Core
-
Core 层有 $(k/2)^2$ 个交换机,分别连接各 Pod
优点
- 任意双向截面上具有相同带宽
- 使用廉价、统一速率设备
- 若路径分配均匀,所有设备均可线速传输
- 可扩展性强:k 端口交换机支持约 $k^3/4$ 台服务器
十、Fat-Tree 拓扑的问题
虽然拓扑优秀,但仅靠物理结构不够:
-
路由协议问题:
- L2:广播/泛洪导致效率低
- L3:最短路径只选单一路径,浪费了多路径优势
- ECMP(Equal-Cost Multi-Path)虽可多路径转发,但独立决策会导致 包乱序 与 负载不均
-
布线复杂度高:
- 大规模网络布线困难,需特别设计布局策略
十一、改进版 Fat-Tree 设计
一、特殊 IP 编址方案
Address format: unused.PodNumber.SwitchNumber.EndHost
- 同一交换机下的主机通过该交换机直接通信
- 同一 Pod 内通信保持在 Pod 内部完成(减少核心层流量)
二、两级查表路由
- 第一级前缀查找:用于向下路由(到服务器)
- 第二级后缀查找:用于向上路由(到核心)
- 保持包顺序:相同流使用相同端口
- 结果:流量扩散均匀、无乱序、性能提升
三、流分类(Flow Classification)
-
将流定义为一系列连续数据包
-
Pod 交换机将同一流的后续包转发至相同端口
-
定期重新分配少量输出端口
-
优势:
- 消除局部拥塞
- 按“流”分配端口,确保负载均衡与公平性
四、流调度(Flow Scheduling)
-
关注“大流”(Large Flow):
- 当边缘交换机检测到某流超过阈值时,通知中央调度器
- 调度器为这些大流分配 非冲突路径
-
目的:
- 消除全局拥塞
- 避免多个长流共享同一路径
示例: 若多条机器学习任务(大流)竞争同一上行链路,调度器会自动将其分散到不同路径。
十二、容错机制(Fault Tolerance)
一、链路或邻居失效检测
- 每个交换机通过 BFD (Bidirectional Forwarding Detection) 检测邻居状态
二、上层–核心层失效
-
若核心交换机失效:
- 本地路由表标记链路不可用,改选其他核心路径
- 核心交换机广播标记(tag)通知上层交换机
- 上层交换机避开该核心路径
三、下层–上层失效
- 本地流分类器将代价设为无穷大,停止分配新流
- 若上层交换机中转的 Intra-Pod 流失败,广播标签通知下层
- 上层交换机若失效,也会向核心广播不可用标记
整体结果:系统自动收敛至稳定状态,无需人工干预。
十三、布线与打包(Packing)
Fat-Tree 天生带来 线缆复杂度。
示例:
-
每个 Pod 含 12 个机架,每架 48 台服务器,共 48 台 48 端口交换机
-
将 48 个交换机集中放置
-
按组布线:
- Pod 间线缆:以 12 根为组
- 机架到 Pod:以 48 根为组
目标:通过空间布局减少线缆长度
- 采用“二维环绕式机架布局”可最小化总线缆长度
十四、总结与思考(Perspective)
-
带宽仍是大规模集群的主要瓶颈
-
现有高端解决方案昂贵且限制规模
-
Fat-Tree 提供了:
- 可扩展的拓扑结构
- 与 TCP/IP、以太网兼容
-
使用大量廉价交换机的方案,如同“PC 集群取代超级计算机”的演进。
十五、其他数据中心架构
| 架构 | 核心思想 |
|---|---|
| Fat-Tree 改进结构 | 增加双向带宽(bi-section bandwidth),需新寻址与路由机制 |
| VL2 | 提出“虚拟二层网络”,将命名与寻址分离,实现灵活负载均衡 |
| PortLand | 可扩展、容错的 L2 数据中心结构 |
| BCube | 面向模块化数据中心的服务器中心(Server-centric)架构,高性能与容错性强 |
附加理解与拓展
-
Clos 与 Fat-Tree 的关系:Clos 网络是一种分层多路径网络,Fat-Tree 是其对称化实现。
-
应用场景:
- Google Borg / Kubernetes 集群网络
- Microsoft Azure 使用的 VL2 架构
- Facebook 的 Fabric 网络采用 Fat-Tree 改进型
实践示例(简化版):
# 一个 4-ary FatTree 示例
Pod 数量:4
每个 Pod 包含:
- 2 台 Edge 交换机
- 2 台 Aggregation 交换机
- 每个 Edge 连接 2 台服务器
核心层:4 台 Core 交换机
总服务器数量:4 * (2 * 2) = 16 台