将晦涩难懂的技术讲的通俗易懂
分类: LINUX
2021-06-26 18:22:59
Muti-host技术本来是一些厂商,如NVIDIA(Mellanox)等提出用来设计和构建横向扩展的异构计算和存储架构的。但是随着云的发展,Muti-host也被用来解决数据中心高密,池化等一系列问题。而MR-IOV又是实现Muti-host中常见的一种技术。这里就将最近在网上看到的一些相关概念进行一下整理。
随着共享资源、池化、虚拟化等等概念的兴起,各家都发展了自己的Multi-Host技术。现在看到了至少三种实现方式:通过PCIe Fabric,通过网络,通过NIC。
通过PCIe Fabric的方式,是最直接的一种方式。如今两家大的PCIe SW厂家Broadcom(PLX)和Microchip(PMC/Microsemi)都支持Fabric模式,可以通过FW对实现复杂的PCIe拓扑,从而实现Multi-Host。对于可靠性要求很高的应用,还可以多个PCIe switch互连,形成更加复杂可靠的网络。
在这种连接中,所有的Host与EP(End-point)都有物理路径相连,只需要相应的配置就可以实现共享。当然现在还可以实现动态配置,在不影响功能的情况下就能改变配置。如下就是一种共享SR-IOV设备的示例。
Eth网络本身就是一个Multi-Host的架构,用网络实现对某些公司来说是信手拈来的技术。比如Intel的FM10000芯片。
虽然这个芯片对host给出的是PCIe信号,但是其内部马上就加了个Eth控制器转换成了网络,芯片内部其实是一个网络交换机。
对于Intel来说可能这种技术更为方便,可以实现Multi-Host的IO共享。
有些高级的NIC芯片本身就支持Multi-Host。比如Broadcom和Mellanox的一些NIC芯片。如Mellanox的ConnectX-4/5,PCIe接口可以分成4个独立的接口连接到4个CPU。
OCP的Yosemite项目就是一个Multi-Host共享100G网口的应用。4个节点直接通过PCIe连到同一个网卡。
用PCIe Fabric的方式最为灵活,可以组成非常复杂的网络,连接多个host与EP实现池化共享资源,EP可以是多种设备,可以是VNVMe, GPU或者网卡,支持SR-IOV即可。不过这种方式的成本是最高的。
用网络的方式实现也比较灵活,复用了已有的技术,比较成熟。FM10000对外提供很多网络接口,可以直接多节点互连组成更加复杂的网络。
用NIC的Multi-Host是最经济的一种方式, 省掉了switch芯片,不过能够连接的host数量有限,有一定的局限性。
可能大家对SR-IOV比较熟悉,而SR-IOV相对较为陌生。 SR-IOV(Single Root I/O Virtualization)技术是单个主机的多个 VM 共享一个PCIe 设备,将一个物理 PCIe 设备(Physical Function,PF)模拟成多个虚拟设备(Virtual Function,VF),其中每一个虚拟设备与一个虚拟机绑定,从而便于不同的虚拟机访问同一个 PCIe 设备。
MR-IOV(Multi Root I/O Virtualization) 技术增强了 SR-IOV 的功能,解决了多个处理器系统对一个 PCIe 总线域共享的问题,其本质是将一个物理 PCIe 总线域分解为多个虚拟的 PCIe总线域,多个处理器系统可以与多个 PCIe 总线域对应,实现不同 PCIe 总线域的隔离。
我们先来看一个刀片服务器系统,有4台服务器节点,每个有两个PCIe设备,通过两个Switch(为了冗余替换,有4个)连出去。每个服务器赔PCIe网络和存储设备,有点浪费,还不好共享。
有了MR-IOV之后,这个系统变成了下图:
每个服务器只有PCIe接口,而不是PCIe设备。有4个MRA设备,两台存储,两台以太网,两个MRA Switch。PCIe网络和存储设备可以被大家共享。
如下图是MR-IOV的作用,本来上面每个系统只有一个Host,两个设备,但是有了MRA Switch之后,系统里面有2个Host。
MR-IOV Switch 在 MR-IOV 规范中称为 MRA(Multi-Root Aware)Switch,是构建下一代数据中心交换结构的核心部件。MR-IOV Switch 是一种支持 I/O虚拟化的 PCIe Switch,其内部结构如下图所示。
MR-IOV Switch 由多个上游端口和下游端口组成,上游端口可以与多个 RP(Root Port)连接,这个 RP可以是 MR-IOV RP 也可以是传统的 RP。下游端口可以与多个 EP(End Point)连接,也可以连接 SR-IOV设备和传统的 PCIe 设备。使用 MR-IOV Switch 可以组成多个虚拟 PCIe 总线域 VHs(Virtual Hierarchies),这些 VH 是通过软件MR PCIM(Multi-Root PCI Manager) 管理和维护的。如上图所示,MR-IOV Switch 由 3 组 P2P(PCI-to-PCI)桥组成,每一组 P2P 可以组成 1 个 PCIe 总线域,这3个 PCIe 总线域的地址空间独立,虚拟机可以对外部设备隔离访问。现代计算架构越来越重视冗余和可靠性,MR-IOV Switch 结构通过 I/O 虚拟化能够提供 I/O 共享的功能,同时能够提供两个级别的冗余和故障切换,即1+1(一主一备)模式和N+1(多主一备)模式。主机间通过中间结果暂存器等交换各自的状态信息,信息在虚拟总线(Virtual Bus)上传递,实现主机的热插拔和故障切换。
MR-IOV 的架构简化了数据中心的结构,却将复杂性留给了 MR-IOV Switch,而且 I/O 设备需要提供对 MR-IOV 的支持,这也将是限制 MR-IOV 大规模部署的一个重要因素。现阶段的替代方案是利用 MR Switch 构建服务器系统,通过 PCIe Switch 的非透明桥NTB(Non-Transparent Bridging) 等特性实现系统互连,从而达到 I/O 共享的目的。
参考链接