SR-IOV的功能

SR-IOV是PCI Express的功能。在各PCI Express设备中,都安装了这个功能,作为PCI Express扩展功能。SR-IOV是让操作系统将一个设备识别为多个虚拟设备的功能。在SR-IOV中,将以往以物理方式存在的设备称为Physical Function(PF)。在PF中可以进行SR-IOV的设置。通过SR-IOV功能虚拟添加的设备称为Virtual Function(VF)。Intel 82576 Gigabit Ethernet Controller SR-IOV对应的PCI Express卡有Intel 82576千兆以太网控制器等。在Linux中,可以使用lspci命令来显示SR-IOV的信息。下面是Intel 82576的lspci-vvvv的结果。


02:00.0 Ethernet controller:Intel Corporation 82576 Gigabit Network Connection(rev 01)

……snip……

Capabilities:[160]Single Root I/O Virtualization(SR-IOV)

IOVCap:Migration-,Interrupt Message Number:000

IOVCtl:Enable-Migration-Interrupt-MSE-ARIHierarchy+

IOVSta:Migration-

Initial VFs:8,Total VFs:8,Number of VFs:8,Function

Dependency Link:00

……snip……

Capabilities:[160]Single Root I/O Virtualization(SR-IOV)的部分就是SR-IOV的信息。

Initial VFs:VF数的初始值。在SR-IOV中是与Total VFs相同的值。

Total VFs:可以启用的最大VF数。

Number of VFs:当前启用的VF数。


尝试启用Intel 82576的VF

如图5-25所示,要启用Intel 82576的VF,可以在使用modprobe将驱动程序安装到内核时指定max_vfs选项。向max_vfs选项指定希望启用的VF数量。VF从操作系统方面来看是普通的PCI设备,因此可以使用lspci来确认已启用的VF。另外,要使用SR-IOV, BIOS必须也支持该功能。如果BIOS不支持,就会导致VF无法启用或只能对一部分PF启用VF。

SR-IOV的功能 - 图1

图 5-25 Intel 82576内的L2交换机

lscpi|grep 82576

02:00.0 Ethernet controller:Intel Corporation 82576 Gigabit Network

Connection(rev 01)

rmmod igb;modprobe igb max_vfs=1

lscpi|grep 82576

02:00.0 Ethernet controller:Intel Corporation 82576 Gigabit Network Connection(rev 01)

02:10.0 Ethernet controller:Intel Corporation 82576 Virtual Function(rev 01)


Intel 82576最大能够提供8个VF。使用了SR-IOV时,把PF的通信带宽分配给各VF。Intel 82576只有在每个PF上有物理端口,因此所有VF共享一个PF端口。PF内部有L2交换机,VF经由L2交换机进行通信。发送(TX)队列和接收(RX)队列统称为池(pool)。把池分配给各VF,在各个池中可以设置MAC过滤器和VLAN过滤器。