微软完全可以依靠iWARP来提升数据中心网络性能,iWARP对数据中心网络交换机没有特别的要求,再加上配置管理都简单,不象RoCE那个复杂,有配置上的要求,那么为什么微软不采用ISCSI+iWARP?
这是一个非常好的问题,而且实际上微软内部在 2012~2018 年期间确实认真考虑过这条路线。如果只从技术角度来看:
iSCSI + iWARP 确实是一条比 iSCSI + RoCE 更优雅、更容易部署的方案。
但是,微软最终没有选择它,而是选择了 SMB Direct(SMB3 + RDMA)。原因并不是 iWARP 不好,而是微软整个软件定义存储(SDS)和 Azure 数据中心战略发生了变化。
我们可以从几个方面分析。
第一,微软要解决的问题,不只是"存储"
如果回到 Windows Server 2012 推出 Storage Spaces 的时代,当时微软面临的问题是:
如何替代传统 SAN。
传统 SAN 的结构是:
服务器
│
iSCSI
│
SAN
而微软提出的是:
Hyper-V
│
CSV
│
SMB3
│
Storage Spaces
也就是说:微软希望以后:所有 Windows 的数据访问,都走 SMB3。而不是存储走 iSCSI。
所以 SMB 不再只是文件共享协议,而是:微软的软件定义存储协议。
第二,SMB3 的能力远远超过 iSCSI,很多人觉得 SMB 就是共享文件。
实际上从 Windows Server 2012 开始,SMB3 已经变成了一个企业级存储协议。
它支持:
- SMB Multichannel
- SMB Direct(RDMA)
- SMB Encryption
- SMB Compression
- Witness
- Transparent Failover
- Persistent Handle
- Continuous Availability
这些能力都是 iSCSI 不具备的。
例如,Hyper-V 的一个 VHDX 文件:
Hyper-V
│
SMB3
│
File
客户端完全不知道,下面其实是:
- NVMe
- SSD
- SAS
- Storage Spaces
- Mirror
- Parity
全部被 SMB 屏蔽掉了。
第三,iSCSI 本身已经接近生命周期末期(对该观点个人持保留意见)
微软当时内部还有一个判断:
- 未来不会继续围绕 SCSI 扩展。
- 原因:SCSI 是几十年前设计的。
而 SSD 出来以后,真正适合 SSD 的协议:
是:NVMe。
所以:微软不会投入大量资源:
iSCSI
│
再增加:
iSER
因为,以后大家都会迁移到NVMe
今天来看,这个判断是正确的。
现在,越来越多 IPSAN:
都支持:
NVMe/TCP
NVMe/FC
而不是,继续发展 iSCSI。
第四,iWARP 的市场失败
这其实是最现实的原因。
2015 年左右,支持 iWARP 的厂家主要有:
- Intel
- Chelsio
- QLogic(部分产品)
而支持 RoCE 的厂家:
- Mellanox(后来被 NVIDIA 收购)
- Broadcom
- Marvell
- Intel(后来也支持部分 RoCE 产品)
随后市场发生了变化:
- Chelsio 市场份额持续缩小。
- Intel 新一代数据中心网卡逐步转向支持 RoCE,而不再重点投入 iWARP。
- 绝大多数交换机厂商开始围绕 RoCE 提供优化。
微软作为平台厂商,不可能只围绕少数网卡厂商构建生态。
因此,即使 iWARP 部署简单,它的生态规模越来越小。
第五,Azure 改变了一切
真正决定微软路线的是 Azure,Azure 有几十万甚至上百万台服务器。
微软希望:同一套协议,能够用于:
- Storage Spaces Direct
- Hyper-V Live Migration
- Storage Replica
- SMB File Server
- SQL Server
- Azure Stack HCI(现在的 Azure Local)
于是:微软希望所有东西全部SMB Direct
例如:
Live Migration:
Host A
│
SMB Direct
│
Host B
Storage Replica:
Server
│
SMB Direct
│
Server
S2D:
Node
│
SMB Direct
│
Node
全部统一。如果存储用iSCSI+iWARP,而迁移用SMB Direct,维护两套协议栈,微软是不愿意的。
第六,微软后来又补充了 NVMe/TCP
近几年微软开始支持 NVMe/TCP,并不是放弃 SMB Direct,而是针对外部存储阵列提供更现代的块存储协议。因此现在实际上形成了两个方向:
- Azure Local / Storage Spaces Direct(内部 SDS):SMB Direct + RDMA。
- 外部全闪存储阵列(IPSAN):NVMe/TCP。
- 传统 iSCSI 更多是兼容已有设备,而不是微软重点发展的方向。
如果历史重来一次,如果只考虑技术优雅性,个人认为:
iSCSI + iWARP 在 2012~2016 年确实是一条非常有竞争力的路线。
因为:
- 不需要 DCB、PFC、ETS 等复杂网络配置。
- 基于 TCP,跨三层网络和故障恢复更自然。
- 运维复杂度远低于早期 RoCE。
但从微软的平台战略来看,它真正追求的是协议统一而不是块存储协议的持续演进。微软希望以 SMB3 作为 Windows 软件定义基础设施的统一数据协议,再随着 NVMe 的成熟,引入NVMe/TCP 满足现代外部存储需求,而不是继续投入 iSCSI/iSER 生态。
所以,微软没有采用 iSCSI+iWARP,并不是因为技术上不可行,而是因为它已经决定不再把 iSCSI 作为未来 Windows 存储架构的核心。
另外,还有一个经常被忽略但很关键的因素:
iSCSI+iWARP 只能解决块存储的数据传输问题,而 SMB Direct 是一个应用层协议,它不仅利用 RDMA,还集成了多通道、透明故障切换、持续可用句柄、加密、压缩等能力,能够同时服务 Hyper-V、SQL Server、Storage Replica、文件服务等多个场景。 从微软的角度看,投资一个统一协议栈的收益,远大于继续增强一个主要面向 SAN 的传统块存储协议。这也是微软最终技术路线形成的根本原因。