记录和梳理基础设施方面的知识。

数据中心组网架构

主流数据中心网络组网架构包括**胖树(Fat Tree)结构和叶脊(Leaf-Spine)**结构。都属于CLOS网络模型。
左-叶脊结构;右-胖树结构
图源:到底什么是叶脊网络(Spine-Leaf)?

1. CLOS网络模型

Charles Clos提出的网络模型,核心思想是:用多个小规模、低成本的单元,构建复杂、大规模的网络。
CLOS网络模型结构
图源:叶脊网络(Spine-Leaf)介绍

2. 胖树

2.1 概念

用于数据中心和大规模网络的拓扑结构。其基本理念是:使用大量的低性能交换机,构建出大规模的无阻塞网络。对于任意的通信模式,总有路径让他们的通信带宽达到网卡带宽。
通常由三个层级组成:

  • 核心层 Core Layer:网络的高速交换主干。提供服务器与各应用端口间的传输功能,为进出数据中心的包提供高速转发,为多个汇聚层提供连接性。
  • 汇聚层 Aggregation Layer:提供基于策略的连接。在应用接入核心层之前先经过汇聚层进行数据处理,减轻核心层设备的负荷。汇聚层提供内容交换、防火墙、SSL卸载、入侵检测、网络分析等服务。
  • 接入层 Access Layer:将工作站接入网络。面向终端客户,提供接入功能。规划同一网段中的工作站个数,提高各接入终端的带宽。

汇聚交换机以下是L2网络,以上是L3网络。通常每两个汇聚交换机管理一个交换点(Point of Delivery,POD),每个POD内独立的VLAN网络。
汇聚交换机和接入交换机使用生成树协议(Spanning Tree Protocol,STP)。

2.2 优缺点

  • 优点
    高带宽:利用相邻交换机的带宽,提高数据传输的能力;
    弹性:支持简单的扩展,方便引入更多服务器;
    低延迟:通过多层次交换,减少数据传输路径的长度。

  • 缺点
    复杂性:设计和维护相较于传统树形结构更为复杂,发生故障时会影响整个VLAN网络;
    成本:较高的硬件成本,特别是在大规模数据中心内使用时;
    资源浪费:基于STP协议,实际承载流量的只有一条,其他上行链路被阻塞(只用于备份),造成了带宽的浪费。

3. 叶脊

3.1 概念

旨在解决数据中心的可扩展性和灵活性问题。由两个部分组成:

-叶节点 Leaf Switches:相当于接入交换机,直接连接到所有服务器等终端设备。
-脊节点 Spine Switches:相当于核心交换机,连接所有的叶节点,形成扁平的结构。

脊交换机下行端口数量,决定了叶交换机的数量。而叶交换机上行端口数量,决定了脊交换机的数量。它们共同决定了叶脊网络的规模。

3.2 优缺点

  • 优点
    低延迟:所有的叶节点都通过脊节点相连,数据包只需经过两跳即可抵达目的地,延迟时间可预测;
    可扩展性:根据需要方便地增加叶节点或脊节点;
    简单性:较为简洁的结构,维护起来较为容易。
    交换机要求降低:南北向流量,可以从叶节点出去,也可从脊节点出去。东西向流量,分布在多条路径上。这样一来,不需要昂贵的高性能高带宽交换机。

  • 缺点
    带宽瓶颈:虽然叶节点带宽利用率高,但脊层设备带宽较低可能导致数据瓶颈;
    设备依赖:对脊节点依赖,使得系统在该层故障时会影响整体性能。

3.3 与三层架构的差异

叶脊架构在中小型数据中心具有数据转发路径短、接入方式统一、可靠性高、与SDN控制器适配成熟等优势;
胖树架构则在大规模算力互联方面具有强大的扩展能力和业务部署灵活性,能够更好地满足大规模算力的网络需求。

叶脊网络使得对光模块数量的需求大幅增加,具体数据如下图所示。
来自国泰君安证券研究
图源:https://www.51cto.com/article/663818.html

4. 大二层网络

4.1 服务器虚拟化趋势

由于服务器利用率太低,浪费了大量电力能源和机房资源,出现服务器虚拟化技术。
服务器虚拟化将一台物理服务器虚拟化成多台逻辑服务器,具有独立的MAC地址和IP地址,通过服务器内部的虚拟交换机(vSwithch)与外部实体网络连接。

服务器虚拟化的核心在于Hypervisor的引入。Hypervisor是虚拟机监控器软件,位于硬件和虚拟机(Virtual Machine, VM)之间,将物理资源分割为多个虚拟资源。
Hypervisor分为两类:
裸机型:直接安装在物理服务器的硬件之上,如VMware ESXi、KVM;
托管型:直接运行在操作系统上,如VMware Workstation、Oracle VirtualBox。

  • 类型:
    全虚拟化:虚拟机完全模拟物理硬件,支持各种操作系统,但性能开销较大;
    操作系统层虚拟化:多个虚拟机共享一个操作系统内核,性能高,但需要运行相同类型的操作系统;
    硬件辅助虚拟化:利用CPU提供的虚拟化扩展,减少虚拟化层的开销,提升性能;
    分区虚拟化:将物理服务器资源硬件分为多个独立的硬件分区,每个分区能够运行独立的操作系统和应用程序。

  • 优点:
    资源优化和整合:通过在一个服务器上运行多个服务器,提高硬件资源的利用率。
    降低成本:降低企业购买和维护物理服务器的成本。
    提高灵活性和可扩展性:支持快速创建、克隆和迁移虚拟机。
    增强高可用性:支持虚拟机快照、备份和实时迁移。

  • 缺点:
    性能开销:虚拟化引入了额外的抽象层,性能略低于直接运行在物理硬件上的性能。
    复杂的资源管理:资源分配不当可能导致资源争用和性能瓶颈。
    依赖虚拟化平台:虚拟化平台一旦出现问题会影响所有运行的虚拟机。
    虚拟机蔓延:虚拟机数量迅速增加,导致管理难度增加和资源浪费。

4.2 虚拟机动态迁移

  • 概念:
    在保证虚拟机服务正常运行的同时,将一个虚拟机系统从一个物理服务器移动到另一个物理服务器的过程。这一过程需要在不影响用户正常使用的情况下,灵活调配服务器资源。

  • 影响:
    传统二三层网络的弱点是服务器的位置不能随便在不同的二层域之间移动。因为移动会涉及到变更IP地址、TCP连接等运行状态,以及相应配置。但物理服务器跨二层域迁移场景并不常见。
    服务器虚拟化后对于数据中心来说,接入的主机规模变大。虚拟机动态迁移会经常出现。

为了实现虚拟机大范围甚至跨地域的动态迁移,需要把虚拟机迁移可能涉及的所有服务器纳入同一个二层网络域,从而实现大范围的无障碍迁移。

一个真正意义的大二层网络至少要能容纳1万以上的主机,才能叫做大二层网络。
传统的二层网络主要的技术是VLAN和xSTP,难以较好的支持大二层网络。
VLAN是通过划分VLAN缩小二层域的范围和规模,从而控制广播风暴的规模,那么就难以支撑大二层网络的需求——大量+隔离。
xSTP虽然能够解决环路问题,但会随着节点数量的增多,降低收敛速度。

4.3 解决方法一——网络设备虚拟化

  • 概念:
    将相互冗余的两台或多台物理设备组合在一起,虚拟化成一台逻辑网络设备,在整个网络中只呈现为一个节点。同样地,也可以将一台网络设备虚拟成多台网络设备使用。
    网络设备虚拟化技术+链路聚合技术→将多节点、多链路的结构变成单节点、单链路的结构,环路问题也解决了。其规模受限于虚拟网络设备所能支持的接入能力。

  • 缺点:
    规模受限:目前最大规模的堆叠/集群大概可以支持接入1~2万主机,不适用于超大型数据中心。

  • 跨数据中心互联方案:
    将网络设备虚拟化的范围扩大到所有的数据中心,把不同数据中心的交换机堆叠成单台交换机,相当于将所有数据中心当作一体处理。要求数据中心实现堆叠线缆和光纤线路的直连,数据中心间的距离不能太远(≤10km),导致局限性非常大。

4.4 解决方法二——L2 over L3方案

  • 概念:
    将三层网络的路由转发方式引入到二层网络中,通过路由计算方式进行二层报文的转发。

注:最初二层网络设计时,网络设备性能很低,并且没有如此大规模需求,因此当时的交换机无法承担复杂的路由计算。随着时代的发展和技术的提升,这种思路得以实现。

二层以太网帧交换不能有环路,冗余链路必须阻塞掉。
由于二层网络只能看到与自己相连的链路,不知道整个网络拓扑结构,转发的时候只能通过广播进行,因此容易形成广播风暴。
三层网络也会出现环路,但不会对网络造成严重影响。
由于三层网络依靠路由协议来计算转发路径,通过路由协议,各台路由设备可以收集、扩散和更新彼此路由信息,进而每一台设备都可以知道全部或局部网络拓扑信息,从而保证数据转发时,从主机发出的报文只会按照目标主机路径发送,不会再返回前序节点造成链路循环。

  • 关键技术:
    TRILL协议: 在原始以太帧外封装一个TRILL帧头,再封装一个新的外层以太帧来实现对原始以太帧的透明传输,TRILL交换机可通过TRILL帧头里的Nickname标识来进行转发,而Nickname就像路由一样,可通过IS-IS路由协议进行收集、同步和更新。
    SPB协议:从实现上来看,SPB同样是采用了IS-IS作为其控制平面协议进行拓扑学习计算,而用MAC-in-MAC封装方式在SPB区域内部进行报文传输。

  • 跨数据中心互联方案:
    一般情况下,多数据中心之间是通过三层路由互通的,那么就只能把每个数据中心内的二层网络作为大二层网络的一个局部,再把这些局部网络通过L2 over L3的方式进行互联,进而构建一个全局范围的大二层网络。
    对于TRILL协议,则采用TRILL over L3的模式。类似于L2 over L3封装的是普通的二层以外网报文,TRILL over L3则把完整的TRILL报文一起封装后传到对端。

4.5 解决方法三——Overlay方案

  • 概念:
    通过隧道封装的方式,将源主机发出的原始二层报文封装后在现有网络中进行透明传输,到达目的地后再解封装得到原始报文,转发给目标主机,实现主机之间的二层通信。这一过程相当于一个大二层网络叠加在现有网络基础上。
    通过点到多点的隧道封装协议,完全忽略中间网络结构和细节,将整个中间网络虚拟成一台“巨大二层交换机”,每个主机直接连在“巨大交换机”的一个端口上,转发成为“巨大交换机”内部的事情。
    Overlay方案示意图
    图源:【重识云原生】第四章云网络4.5节——大二层网络

  • 典型技术:
    VXLAN(Virtual Extensible LAN)【最广泛】:使用UDP封装技术,在原始帧外面加上VXLAN头部和UDP头部,通过IP网络传输。
    NVGRE(Network Virtualization using Generic Routing Encapsulation):以GRE(Generic Routing Encapsulation)协议为基础,在原有的以太网帧外部添加GRE头部以及额外的NVGRE特定字段。
    STT(Stateless Transport Tunneling)【适合高性能】:采用了一种流式压缩的方式对数据包进行封装,减少了封装带来的开销,使用TCP作为传输层协议,但STT并不维护连接状态。

  • 跨数据中心互联方案:
    对于数据中心内的网络、以及跨数据中心的互联网络,都是承载网络(“巨大交换机”)的一部分,因此不需要关心具体的细节。
    以VXLAN为例,VTEP将VM A的原始数据报文通过VXLAN封装后(MAC in UDP),成为一个普通的IP报文(源地址是本VTEP的地址,目的地址是VM B所在的VTEP),只要能够将报文转发到目的地就可以了。
    由此可见,该方法更加适合跨数据中心的大二层网络,无需变更IP地址。

附:相关概念

1. STP 生成树协议

STP(Spanning Tree Protocol)是一个用于局域网中消除环路的协议。

  • 概念
    STP通过将部分冗余链路强制为阻塞状态,其他链路处于转发状态,将环形网络结构修剪成无环路的树形网络结构,可实现消除环路。当处于转发状态的链路不可用时,STP重新配置网络,并激活合适的备用链路状态,恢复网络连通性。

  • 作用
    STP技术可以有效的解决环路问题,将彼此交互信息发现网络中的环路,将部分冗余链路强制为阻塞状态,其他链路处于转发状态。最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断增生和无限循环,避免设备由于重复接收相同的报文造成处理能力下降。
    在一个复杂的网络环境中,由于冗余备份的需要,网络设计者都倾向于在设备之间部署多条物理链路,其中一条作主用链路,其他链路作备份,偶然或必然中都会导致环路产生。环路会产生广播风暴,最终导致整个网络资源被耗尽,网络瘫痪不可用。

  • 典型应用
    在网络中部署STP协议,通过彼此交换信息发现网络中的环路,有选择的对某个端口进行阻塞,将环形网络结构修剪成无环路的树形网络结构。如下图左下角Device1,对其端口进行阻塞,整体环形网络变为树形网络结构。
    STP原理示意图
    图源:什么是STP?

2. VXLAN协议

VXLAN virtual extensible local area network 虚拟可扩展局域网,一种虚拟化的隧道通信技术,通过三层的网络搭建虚拟的二层网络。

  • 常见术语:
    VTEP (VXLAN Tunnel Endpoints VXLAN隧道端点):VXLAN网络的边缘设备,用来进行VXLAN报文的处理(封包和解包),既可以是交换机,也可以是主机。

VNI(VXLAN Network Identifier VXLAN网络标识符):作为VXLAN段的标识,是个24位整数,每个VNI对应一个租户,因此理论上可以支撑2^{24},即千万级别的租户。

Tunnel(VXLAN隧道):逻辑上的概念,相当于虚拟通道。

VXLAN工作模型
图源:VXLAN 基础教程:VXLAN 协议原理介绍

参考

  1. 胖树和叶脊架构
  2. 叶脊网络(Spine-Leaf)介绍
  3. 什么是STP?
  4. 【重识云原生】第四章云网络4.4节——Spine-Leaf网络架构
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐