我们进入PCIe Switch的最后一部分,IO虚拟化SR-IOV和MR-IOV的大PK。
术语介绍
上图是PCIe IO虚拟化的架构图,科普一下术语:
- SI:System Image,其实就是虚拟机OS。
- VI: Virtual Intermediary,可以看成是VMM,虚拟机管理层,物理机和虚拟机的中介。
- TA:Translation Agent,PCI地址空间到Host主机内存空间的地址转换。也提供MSI,MSI-X中断重映射。
- ATPT: Address Translation and Protection Table,对于每个VF或者PF提供地址访问权限,用来进行保护,防治地址越界。其实就是城管,小贩们别想占用别人的摊位。
再来看看SR-IOV和MR-IOV的对比图,也来解释一些概念:
VF和PF阿呆以前也跟祥林嫂一样老提到,估计你也是被死记硬背了。不过我们再来默写一遍名词解释:
- PF:Physical Function,可以支持很多SR-IOV,拥有完整的PCIe配置空间和BAR。
- VF:Virtual Function,多个VF共享一个PF,只有PCIe的数据传输等关键功能。但是1个VF不能关联到多个PF。奴隶禁止买卖,共享,只能私有。
- MRA:Multi-Root Aware,在它的屁护下,每个VH(Virtual Hierarchy)拥有独立的PCI Memory,IO,配置空间。
看到这里,大家估计已经有点感觉了。我们用历史知识来类比,SR-IOV下,每个VF就是明朝的军队,靠国家养活,只能用来打仗,后勤靠别人,总是缺少军需,饿着肚子打仗,最后只能跟着闯王造反。MR-IOV下,每个VH就是唐朝的藩镇,跟着军阀混,割据一方,自己收税养活自己,战斗力强,后勤有保障。
SR-IOV
传统的PCIe设备是下面这样的,特点有:
- 扩展性:同一套配置空间和BAR系统最多支持8个PCI Function。如果用了ARI,Alternative Routing-ID Interpretation技术,可支持的Function达到256个,为什么?因为把Device 号的5个bit分配给Function Number了。Device Number在共享式PCI总线中有用,到了点对点的PCIe架构中,没啥用。
- Function 0管理共享资源。
- 支持传统中断和MSI,MSI-x。
- 多个虚拟机不能共享一个PCIe设备。
好,SR-IOV出场了:
- 扩展性:支持65536个function,因为ARI实现了256个,IOV又增加了额外的Bus Number。
- Function 0是必须的。
- 支持MSI,MSI-x中断。
- 每个Function有独立的配置空间和BAR,多个VF共享一个Function。
- 多个虚拟机共享一个PCIe设备。
MR-IOV
我们先来看一个刀片服务器系统,有4台服务器节点,每个有两个PCIe设备,通过两个Switch(为了冗余替换,有4个)连出去。每个服务器赔PCIe网络和存储设备,有点浪费,还不好共享。
有了MR-IOV之后,这个系统变成了下图:
- 每个服务器只有PCIe接口,而不是PCIe设备。
- 有4个MRA设备,两台存储,两台以太网。
- 两个MRA Switch。
- PCIe网络和存储设备可以被大家共享。
如下图是MR-IOV的作用,本来上面每个系统只有一个Host,两个设备,但是有了MRA Switch之后,系统里面有2个Host。
MR-IOV里有个重要概念:VH,Virtual Hirearchy:
- 每个VH至少包含一个PCIe Switch,这个PCIe Switch是MRA Switch里面的一个虚拟组件。
- 每个VH可以包含各种PCIe设备、MRA PCIe设备、或者PCIe-PCI桥的组合。
如下图,在MRA PCIe Switch中,可以有多个根端口Root Port,RP。
这样,有了MR-IOV之后,软件系统变成了下面这种,物理机之间也能相互通信,PCIe设备被多台物理机共享。
最终PK
最后,我们再来做个大对比:
再用历史知识来类比。
- 传统PCIe设备是宋朝的军队,八十万禁军驻扎在京城,打仗了再指个将军派出去。机动性和战斗力都不行。
- SR-IOV是明朝的军队,边境有各种卫所驻军,职业军人,战斗力是有的。但是后勤靠国家,后来沽名钓誉的东林党带着大家抗税,国家收不上钱,大兵们吃不饱,穿不暖,只能跟着闯王造反。
- MR-IOV是唐朝的军队,藩镇割据,自己收税养自己,跟着军阀混,战斗力强,后勤也有保障。
引用
I/O Virtualization and Sharing,Michael Krause (HP, co-chair),Renato Recio (IBM, co-chair),IO Virtualization,PCI-SIG。也不知道这两个co-chair是哪个机构的。