微软的ISCSI存储连接为什么不使用iWRP RDMA?

微软完全可以依靠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 已经变成了一个企业级存储协议。

它支持:

  1. SMB Multichannel
  2. SMB Direct(RDMA)
  3. SMB Encryption
  4. SMB Compression
  5. Witness
  6. Transparent Failover
  7. Persistent Handle
  8. Continuous Availability

这些能力都是 iSCSI 不具备的。

例如,Hyper-V 的一个 VHDX 文件:

Hyper-V

SMB3

File

客户端完全不知道,下面其实是:

  1. NVMe
  2. SSD
  3. SAS
  4. Storage Spaces
  5. Mirror
  6. Parity

全部被 SMB 屏蔽掉了。

第三,iSCSI 本身已经接近生命周期末期(对该观点个人持保留意见)

微软当时内部还有一个判断:

  1. 未来不会继续围绕 SCSI 扩展。
  2. 原因:SCSI 是几十年前设计的。

而 SSD 出来以后,真正适合 SSD 的协议:

是:NVMe。

所以:微软不会投入大量资源:

iSCSI

再增加:

iSER

因为,以后大家都会迁移到NVMe

今天来看,这个判断是正确的。

现在,越来越多 IPSAN:

都支持:

NVMe/TCP

NVMe/FC

而不是,继续发展 iSCSI。

第四,iWARP 的市场失败

这其实是最现实的原因。

2015 年左右,支持 iWARP 的厂家主要有:

  1. Intel
  2. Chelsio
  3. QLogic(部分产品)

而支持 RoCE 的厂家:

  1. Mellanox(后来被 NVIDIA 收购)
  2. Broadcom
  3. Marvell
  4. Intel(后来也支持部分 RoCE 产品)

随后市场发生了变化:

  1. Chelsio 市场份额持续缩小。
  2. Intel 新一代数据中心网卡逐步转向支持 RoCE,而不再重点投入 iWARP。
  3. 绝大多数交换机厂商开始围绕 RoCE 提供优化。

微软作为平台厂商,不可能只围绕少数网卡厂商构建生态。

因此,即使 iWARP 部署简单,它的生态规模越来越小。

第五,Azure 改变了一切

真正决定微软路线的是 Azure,Azure 有几十万甚至上百万台服务器。

微软希望:同一套协议,能够用于:

  1. Storage Spaces Direct
  2. Hyper-V Live Migration
  3. Storage Replica
  4. SMB File Server
  5. SQL Server
  6. 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,而是针对外部存储阵列提供更现代的块存储协议。因此现在实际上形成了两个方向:

  1. Azure Local / Storage Spaces Direct(内部 SDS):SMB Direct + RDMA。
  2. 外部全闪存储阵列(IPSAN):NVMe/TCP。
  3. 传统 iSCSI 更多是兼容已有设备,而不是微软重点发展的方向。

如果历史重来一次,如果只考虑技术优雅性,个人认为:

iSCSI + iWARP 在 2012~2016 年确实是一条非常有竞争力的路线。

因为:

  1. 不需要 DCB、PFC、ETS 等复杂网络配置。
  2. 基于 TCP,跨三层网络和故障恢复更自然。
  3. 运维复杂度远低于早期 RoCE。

但从微软的平台战略来看,它真正追求的是协议统一而不是块存储协议的持续演进。微软希望以 SMB3 作为 Windows 软件定义基础设施的统一数据协议,再随着 NVMe 的成熟,引入NVMe/TCP 满足现代外部存储需求,而不是继续投入 iSCSI/iSER 生态。

所以,微软没有采用 iSCSI+iWARP,并不是因为技术上不可行,而是因为它已经决定不再把 iSCSI 作为未来 Windows 存储架构的核心。

另外,还有一个经常被忽略但很关键的因素:

iSCSI+iWARP 只能解决块存储的数据传输问题,而 SMB Direct 是一个应用层协议,它不仅利用 RDMA,还集成了多通道、透明故障切换、持续可用句柄、加密、压缩等能力,能够同时服务 Hyper-V、SQL Server、Storage Replica、文件服务等多个场景。 从微软的角度看,投资一个统一协议栈的收益,远大于继续增强一个主要面向 SAN 的传统块存储协议。这也是微软最终技术路线形成的根本原因。