这是一个非常有意思的问题,背后实际上反映了微软与VMware两家厂商在数据中心网络架构理念上的根本差异。
简单来说:
- VMware的思路:把多块网卡聚合成一条更粗的管道(NIC Teaming/LACP)
- 微软的思路:把多块网卡作为独立链路,通过SDN、SMB Multichannel、RDMA、DCB实现流量调度
所以你会发现:
- VMware大量使用vSwitch Teaming、LACP、Load Balance
- 微软从Windows Server 2016开始,尤其是S2D和Azure Stack HCI(现Azure Local)后,逐步弱化传统Teaming,转向:
- SET(Switch Embedded Teaming)
- DCB(Data Center Bridging)
- SMB Multichannel
- RDMA
- QoS Policy
一、传统网卡绑定(Teaming)的问题
在物理服务器时代:
NIC1 -----+
+----- Team ---- OS
NIC2 -----+
优点:
- 链路冗余
- 带宽叠加
例如:
2 × 25Gb
=
50Gb Logical Link
看起来很好。
但对于超融合场景:
Storage
Live Migration
VM Traffic
Management
Backup
全部跑在同一个Team上。
微软发现几个问题:
1 单流无法真正叠加带宽
例如:
2 × 25Gb Team
理论:
50Gb
实际上:
单TCP连接
≈25Gb
因为:
Hash算法
决定一个流只能走一块网卡。
这也是VMware NIC Teaming长期存在的问题。
2 Teaming与RDMA冲突
微软超融合的核心是:
SMB Direct
即:
SMB + RDMA
RDMA要求:
NIC → NIC
直接通信。
而传统Team:
RDMA
↓
Teaming Driver
↓
Physical NIC
中间增加了一层抽象。
很多RDMA特性无法正常工作。
尤其:
- RoCE
- iWARP
都不喜欢传统Team。
3 Teaming增加CPU开销
数据路径变成:
VM
↓
vSwitch
↓
Team Driver
↓
NIC
增加:
Packet Rehash
Load Balance
Failover
处理。
CPU消耗增加。
微软认为:
既然已经有:
RDMA
SMB Multichannel
为什么还要再来一层Team?
二、微软的解决方案:SET
从Windows Server 2016开始:
Switch Embedded Teaming
SET取代LBFO Team。
架构:
VM
↓
Hyper-V vSwitch
↓
SET
↓
NIC1
NIC2
SET直接集成进vSwitch。
没有额外Team Driver。
因此:
- 延迟更低
- 支持RDMA
- 支持VMMQ
- 支持SR-IOV
而传统LBFO不支持。
三、为什么又引入DCB?
因为微软的目标不是:
聚合带宽
而是:
流量分类
例如:
25Gb × 2
同时跑:
SMB Storage
Live Migration
VM Traffic
Management
微软更关心:
谁优先
而不是:
怎么聚合
DCB工作方式:
Storage = 50%
Migration = 30%
VM = 15%
Mgmt = 5%
通过:
ETS
Enhanced Transmission Selection
保证带宽。
例如:
Storage永远不会被VM流量抢占
四、Azure Local为什么特别依赖DCB
以2节点S2D集群为例:
Node1 ================= Node2
2×25Gb RoCE
同时传输:
Storage Replica
CSV
Live Migration
Backup
如果没有DCB:
VM流量暴涨
可能导致:
RDMA丢包
继而:
Storage延迟飙升
甚至:
Cluster失联
所以微软官方最佳实践:
RoCE
=
DCB 必须启用
包括:
- PFC
- ETS
五、VMware为什么还能大量使用Teaming
VMware的历史包袱不同。
ESXi最早设计于:
1Gb
10Gb
时代。
当时:
vMotion
Storage
VM
主要依赖:
TCP/IP
而不是RDMA。
所以形成了:
vSwitch Teaming
LACP
Port Channel
体系。
后来即使引入:
- NSX
- NVDS
- Geneve
其底层仍然保留这种网络哲学。
六、现在两家其实正在趋同
最新趋势是:
VMware
正在引入:
- NVMe/TCP
- RDMA
- SmartNIC
- DPU
减少对传统Teaming的依赖。
微软
在Azure Local中:
- SET
- RDMA
- SMB Multichannel
- DCB
- EVPN/VXLAN
已经成为标准方案。
尤其在微软内部Azure数据中心,基本不再依赖传统LBFO Team。
本质区别
可以用一句话概括:
| VMware传统思路 | 微软Azure Local思路 |
|---|---|
| 多网卡先聚合成一个逻辑接口 | 多网卡保持独立 |
| 依靠LACP/Teaming负载均衡 | 依靠SMB Multichannel负载均衡 |
| QoS是辅助功能 | QoS/DCB是核心功能 |
| TCP为中心 | RDMA为中心 |
| 网络聚合优先 | 流量分类优先 |
| 单逻辑链路 | 多路径并行链路 |
因此你看到微软在S2D、Azure Stack HCI、Azure Local中大量强调:
"不要再用传统NIC Teaming,而是使用SET + SMB Multichannel + RDMA + DCB。"
因为在微软看来,超融合时代最重要的已经不是把两块25Gb网卡变成一块50Gb网卡,而是让存储、迁移和虚拟机流量能够在多条RDMA链路上并行、无损、可控地运行。