数据中心网络

发布于 作者: Ethan

一、数据中心的起源

数据中心(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)

  • 三层结构:EdgeAggregationCore

  • 每个 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 拓扑的问题

虽然拓扑优秀,但仅靠物理结构不够:

  1. 路由协议问题

    • L2:广播/泛洪导致效率低
    • L3:最短路径只选单一路径,浪费了多路径优势
    • ECMP(Equal-Cost Multi-Path)虽可多路径转发,但独立决策会导致 包乱序负载不均
  2. 布线复杂度高

    • 大规模网络布线困难,需特别设计布局策略

十一、改进版 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 台