前言
本文是摘抄翻译自MLNX_OFED Documentation Rev 5.0-2.1.8.0手册中的SRIOV配置文档。
翻译中删去了InfiniBand
相关内容。
简介
Single Root IO虚拟化(SR-IOV)是一种使一个物理PCIe设备通过PCIe总线(bus)多次呈现的技术。这项技术使设备的多个虚拟实例拥有独立的资源。Mellanox适配器能够在ConnectX®-3网卡中暴露出多达126个虚拟实例,称为虚拟功能(Virtual Functions (VFs)),ConnectX-4/Connect-IB网卡多达62个虚拟实例。然后,这些虚拟功能(virtual function)可以被单独配置。每个VF可以被看作是一个连接到Physical Function的额外设备。它与Physical Function共享相同的资源,其端口数量等于物理功能的端口数量。
SR-IOV通常与支持SR-IOV的虚拟机监视器(hypervisor)一起使用,为虚拟机直接提供硬件来访问网络资源,从而提高其性能。
在本章中,我们将演示在Red Hat Linux环境中使用Mellanox ConnectX® VPI网卡系列进行SR-IOV的设置和配置。
系统要求
要建立一个SR-IOV环境,需要以下条件:
- MLNX_OFED驱动程序
- 服务器主板BIOS支持SR-IOV能力
- 支持SR-IOV的Hypervisor,例如:Red Hat Enterprise Linux Server Version 6
- 具有SR-IOV功能的Mellanox ConnectX® VPI网卡系列
启用SR-IOV
根据你的系统,执行下面的步骤来设置你的BIOS。本节中使用的插图仅用于示例。更多信息,请参考相应的BIOS用户手册。
-
在系统BIOS中启用 "SR-IOV":
-
启用"Intel Virtualization Technology".
- 安装一个支持SR-IOV的虚拟化管理器(Hypervisor)
- 根据你的系统,更新 /boot/grub/grub.conf 文件,为Linux内核加入一个类似的命令行加载参数。
例如,对于Intel systems,添加:default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.32-36.x86-645) root (hd0,0) kernel /vmlinuz-2.6.32-36.x86-64 ro root=/dev/VolGroup00/LogVol00 rhgb quiet intel_iommu=on initrd /initrd-2.6.32-36.x86-64.img
在更新/boot/grub/grub.conf文件时,请确保参数 "intel_iommu=on "存在,否则SR-IOV不能被加载。
一些操作系统使用/boot/grub2/grub.cfg。如果你的服务器使用这样的文件,请编辑这个文件来代替(在以 "linux16 "开头的一行的末尾,添加 "intel_iommu=on")
配置CX-3
-
安装支持SR-IOV的Linux的MLNX_OFED驱动
通过运行mlxconfig工具并将SRIOV_EN参数设置为 "1",可以启用和管理SR-IOV,而无需重新烧录固件。
要找到mst设备,请运行。"mst start "和 "mst status"mlxconfig -d <mst_device> s SRIOV_EN=1
更多信息,请参考MFT用户手册(www.mellanox.com > 产品 > 软件 > 固件工具)中的 "mlxconfig-ChangingDeviceConfigurationTool "部分。
-
确认HCA[1]被配置为支持SR-IOV
# mstflint -dev <PCI Device> dc
HCA显示以下字段:
[HCA] num_pfs = 1 total_vfs = <0-126> sriov_en = true
参数 推荐值 num_pfs 1 total_vfs 固件2.31.5000以上,推荐126. 固件2.30.8000以下,推荐63 sriov_en true - 要确保系统支持这个数量的VFs,过大的话,可能导致系统停止工作
- 如果缺少上述字段,请将它们添加到INI中。
- 如果你需要改变总VF的数量,将total_vfs参数设置为所需的数字。
- 如果上述字段被添加到INI中,或total_vfs参数被修改,请使用mlxburn工具烧录固件。如果没有安装mlxburn,请从Mellanox网站下载:http://www.mellanox.com→产品→固件工具
mlxburn -fw ./fw-ConnectX3-rel.mlx -dev /dev/mst/mt4099_pci_cr0 -conf ./MCX341A-XCG_Ax.ini
创建文本文件/etc/modprobe.d/mlx4_core.conf
-
在/etc/modprobe.d/mlx4_core.conf文件中插入一个 "options "行,以设置VF的数量,每个端口的协议类型,以及物理函数驱动(probe_vf)允许使用的虚拟函数的数量。
For example:options mlx4_core num_vfs=5 port_type_array=1,2 probe_vf=1
参数推荐值:
num_vfs:- 如果没有,或为零:将没有VF可用。
- 如果它的值是0-63范围内的单个数字。驱动程序将启用HCA上的num_vfs VFs,这将应用于主机上的所有ConnectX® HCAs。
- 如果是三元组 x,y,z(只适用于所有端口都配置为以太网的情况),驱动程序会创建。
- x 物理端口1上的单端口VF
- y 物理端口2上的单端口VF(只适用于存在这样一个端口的情况下)
- z n个端口的VF(其中n是设备上物理端口的数量)。这适用于主机上的所有ConnectX® HCAs
- 如果是三元组 x,y,z(只适用于所有端口都配置为以太网的情况),驱动程序会创建。
- 如果是格式字符串。该字符串对每个安装的HCA分别指定num_vfs参数。
字符串的格式是。"bb:dd.f-v,bb:dd.f-v, ..."- bb:dd.f = HCA的PF的总线:设备.功能
- v = 为该HCA启用的VF数量,如上所述,可以是一个单一的数值,也可以是一个三元组。
例如:
- num_vfs=5 - 驱动程序将在HCA上启用5个VF,这将应用于主机上的所有ConnectX® HCA。
- num_vfs=00:04.0-5,00:07.0-8 - 驱动程序将在BDF 00:04.0的HCA上启用5个VF,在00:07.0的HCA上启用8个VF
- num_vfs=1,2,3 - 驱动程序将在物理端口1上启用1个VF,在物理端口2上启用2个VF,在双端口上启用3个VF(仅适用于所有端口都是以太网端口时的双端口HCA)。
- num_vfs=00:04.0-5;6;7,00:07.0-8;9;10 - 驱动程序将启用。
- 位于BDF 00:04.0的HCA
- 在端口1上有5个单一的VF
- 6个端口2的单VF
- 7个双端口VF
- 位于BDF 00:07.0的HCA
- 8 端口1上的单VFs
- 9 端口2上的单VFs
- 10 双端口VFs
- 位于BDF 00:04.0的HCA
注:
不包括在上述列表中的PF将不会启用SR-IOV。
三元组和单端口VF只有在所有端口都配置为以太网时才有效。当InfiniBand端口存在时,只有num_vfs=a语法有效,其中"a"是一个代表VF数量的单一值。
三元组中的第二个参数只有在有1个以上的物理端口时才有效。
在一个三元组中,x+z<=63和y+z<=63,每个物理端口上的最大VF数量必须是63。port_type_array:
指定端口的协议类型。它是所有设备的2个端口类型't1,t2'的一个数组,或者是BDF到port_type_array的列表'bb:dd.f-t1;t2,...'。
有效的端口类型。1-ib, 2-eth, 3-auto, 4-N/A
如果只有一个端口可用,则对端口2使用N/A端口类型(例如'1,4')。
注意,这个参数只有在num_vfs不为零时才有效(即,SRIOV被启用)。否则,它将被忽略。probe_vf: 同num_vfs
重启服务
-
加载驱动校验 sr-iov已加载:
lspci | grep Mellanox 03:00.0 InfiniBand: Mellanox Technologies MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] (rev b0) 03:00.1 InfiniBand: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function] (rev b0) 03:00.2 InfiniBand: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function] (rev b0) 03:00.3 InfiniBand: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function] (rev b0) 03:00.4 InfiniBand: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function] (rev b0) 03:00.5 InfiniBand: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function] (rev b0)
- "03:00" 表示Physical Function
- "03:00.X" 表示连接到PF的Virtual Function
配置CX-4/CX-5/CX-6
配置包括如下步骤:
- 启用 SR-IOV在BIOS中
- 在固件中启用SR-IOV
- 在驱动中配置启用SR-IOV
配置
1. 固件启用SR-IOV
MST: (Mellanox Software Tools) service
mst start:
创建代表Mellanox设备的特殊文件,放在/dev/mst/目录中。加载适当的内核模块并将PCI配置头文件保存在temp-directory中。
启动后,可以使用其他工具或更改配置文件来对固件进行操作和配置。
- Run MST
# mst start
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module - Success
Loading MST PCI configuration module - Success
Create devices
- 查看PCI插槽对应的设备名
# mst status
MST modules:
------------
MST PCI module loaded
MST PCI configuration module loaded
MST devices:
------------
/dev/mst/mt4103_pciconf0 - PCI configuration cycles access.
domain{?:}bus:dev.fn=0000:81:00.0 addr.reg=88 data.reg=92
Chip revision is: 00
/dev/mst/mt4103_pci_cr0 - PCI direct access.
domain: bus:dev.fn=0000:81:00.0 bar=0xc8000000 size=0x100000
Chip revision is: 00
/dev/mst/mt4115_pciconf0 - PCI configuration cycles access.
domain: bus:dev.fn=0000:05:00.0 addr.reg=88 data.reg=92
Chip revision is: 00
- 查询设备状态
# mlxconfig -d /dev/mst/mt4115_pciconf0 q
Device #1:
----------
Device type: ConnectX4LX
Name: N/A
Description: N/A
Device: /dev/mst/mt4117_pciconf0
Configurations: Next Boot
MEMIC_BAR_SIZE 0
MEMIC_SIZE_LIMIT _256KB(1)
ROCE_NEXT_PROTOCOL 254
NON_PREFETCHABLE_PF_BAR False(0)
NUM_PF_MSIX_VALID True(1)
NUM_OF_VFS 0
SRIOV_EN False(0)
PF_LOG_BAR_SIZE 5
VF_LOG_BAR_SIZE 0
NUM_PF_MSIX 63
NUM_VF_MSIX 11
...
- 启用SR-IOV,设置VF数量
- SRIOV_EN=1
- NUM_OF_VFS=4
# mlxconfig -d /dev/mst/mt4115_pciconf0 set SRIOV_EN=1 NUM_OF_VFS=4
Device #1:
----------
Device type: ConnectX4
PCI device: /dev/mst/mt4115_pciconf0
Configurations: Current New
SRIOV_EN 0 1
NUM_OF_VFS 0 4
LINK_TYPE_P1 2 2
LINK_TYPE_P2 2 2
INT_LOG_MAX_PAYLOAD_SIZE 0 0
LOG_DCR_HASH_TABLE_SIZE 14 14
DCR_LIFO_SIZE 16384 16384
...
Apply new Configuration? ? (y/n) [n] : y
Applying... Done!
-I- Please reboot machine to load new configurations.
- 重启系统
2. 配置MLNX_OFED驱动启用SR-IOV
- 找到主网卡设备
ibstat: 查看IB设备状态
# ibstat
CA 'mlx5_0'
CA type: MT4117
Number of ports: 1
Firmware version: 14.21.2010
Hardware version: 0
Node GUID: 0xXXXX
System image GUID: 0xXXXX
Port 1:
State: Active
Physical state: LinkUp
Rate: 25
Base lid: 0
LMC: 0
SM lid: 0
Capability mask: 0x00010000
Port GUID: 0xXXXX
Link layer: Ethernet
ibdev2netdev: 查询物理设备对应的linux网络设备
# ibdev2netdev
mlx5_0 port 1 ==> ens785f1 (Up)
- 获取固件允许配置的最大VFs数量
# cat /sys/class/net/ens785f1/device/sriov_totalvfs
4
注: 这是一个只读参数,应该与上面命令中固件中配置的数字一致。
mlxconfig -d /dev/mst/mt4115_pciconf0 set SRIOV_EN=1 NUM_OF_VFS=4
注:如果看不到这个参数,说明intel_iommu=on
没有被正确的配置到grub中
- 获取设备当前VF数量
以下几种方式都可以:
# cat /sys/class/net/ens785f1/device/sriov_numvfs
0
# cat /sys/class/net/ens785f1/device/mlx5_num_vfs
0
注:如果命令失败,可能意味着驱动没有被加载。
注: mlx5_num_vfs参数和sriov_numvfs的区别是mlx5_num_vfs总是存在的,即使操作系统没有加载虚拟化模块(在grub文件中添加intel_iommu支持)。sriov_numvfs只有在intel_iommu被添加到grub文件时才显示。所以,如果你没有看到sriov_numvfs文件,请重新检查intel_iommu是否被添加到上述的grub文件中。
注:不同的内核版本可能没有上述所有选项。
- 设置所需的VFs数量。
VF的数量可以通过两个参数来设置,取决于内核的版本。
有几种方法可以做到这一点。
# option 1:
$ echo 4 > /sys/class/net/ens785f1/device/sriov_numvfs
# option 2:
$ echo 4 > /sys/class/net/ens785f1/device/mlx5_num_vfs
4
# check numvfs
$ cat /sys/class/net/ens785f1/device/sriov_numvfs
4
- 改变VF的数量是不持久的,在服务器重启后就不存在了
- 写入sysfs文件来配置numvfs时适用以下规则:
- 如果没有分配VF,VF的数量可以改变为任何有效的值(0-FW刻录期间设置的最大#VF)。
- 如果有分配给虚拟机的VF,就不可能改变VF的数量。
- 如果管理员在没有分配VF的情况下卸载PF上的驱动程序,驱动程序将被卸载,SRI-OV将被禁用。
- 如果在PF的驱动器被卸载时有分配的VF,SR-IOV将不会被禁用。这意味着VF将在虚拟机上可见。但是它们将不可操作。这适用于使用pci_stub而不是vfio的内核的操作系统。
- VF驱动会发现这种情况并关闭其资源
- 当PF上的驱动程序被重新加载时,VF就变得可操作了。VF的管理员将需要重新启动驱动程序,以便恢复与VF的工作。
- 检查PCI bus:
# lspci -D | grep Mellanox
0000:05:00.0 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]
0000:05:00.1 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]
0000:05:00.6 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4 Virtual Function]
0000:05:00.7 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4 Virtual Function]
0000:05:01.0 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4 Virtual Function]
0000:05:01.1 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4 Virtual Function]
0000:81:00.0 Network controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]
# ibdev2netdev -v
0000:81:00.0 mlx4_0 (MT4103 - MT1521X02584) CX354A - ConnectX-3 Pro QSFP fw 2.33.5100 port 1 (ACTIVE) ==> ens817 (Up)
0000:81:00.0 mlx4_0 (MT4103 - MT1521X02584) CX354A - ConnectX-3 Pro QSFP fw 2.33.5100 port 2 (ACTIVE) ==> ens817d1 (Up)
0000:05:00.0 mlx5_0 (MT4115 - MT1530X08465) CX456A - ConnectX-4 QSFP fw 12.12.0780 port 1 (DOWN ) ==> ens785f0 (Down)
0000:05:00.1 mlx5_1 (MT4115 - MT1530X08465) CX456A - ConnectX-4 QSFP fw 12.12.0780 port 1 (ACTIVE) ==> ens785f1 (Up)
0000:05:00.6 mlx5_2 (MT4116 - MT1530X08465) CX456A - ConnectX-4 QSFP fw 12.12.0780 port 1 (ACTIVE) ==> ens785f6 (Up)
0000:05:00.7 mlx5_3 (MT4116 - MT1530X08465) CX456A - ConnectX-4 QSFP fw 12.12.0780 port 1 (ACTIVE) ==> ens785f7 (Up)
0000:05:01.0 mlx5_4 (MT4116 - MT1530X08465) CX456A - ConnectX-4 QSFP fw 12.12.0780 port 1 (ACTIVE) ==> enp5s1 (Up)
0000:05:01.1 mlx5_5 (MT4116 - MT1530X08465) CX456A - ConnectX-4 QSFP fw 12.12.0780 port 1 (ACTIVE) ==> enp5s1f1 (Up)
可以看到4个VFs和1个PF
PCI Function | VF number |
---|---|
0000:05:00.6 | 0 |
0000:05:00.7 | 1 |
0000:05:01.0 | 2 |
0000:05:01.1 | 3 |
注: Functions 05:00:2, 05:00:3, 05:00:4, 05:00:5 给mlx5_0设备保留着
- 用ip工具检查VFs配置
$ ip link show
...
9: ens785f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT qlen 1000
link/ether e4:1d:2d:f2:a4:89 brd ff:ff:ff:ff:ff:ff
vf 0 MAC 00:00:00:00:00:00, spoof checking off, link-state auto
vf 1 MAC 00:00:00:00:00:00, spoof checking off, link-state auto
vf 2 MAC 00:00:00:00:00:00, spoof checking off, link-state auto
vf 3 MAC 00:00:00:00:00:00, spoof checking off, link-state auto
...
- 给VF设置 mac 地址
$ echo 0000:05:00.6 > /sys/bus/pci/drivers/mlx5_core/unbind
$ ip link set ens785f1 vf 0 mac 00:22:33:44:55:66
$ echo 0000:05:00.6 > /sys/bus/pci/drivers/mlx5_core/bind
$ ip link show
...
9: ens785f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT qlen 1000
link/ether e4:1d:2d:f2:a4:89 brd ff:ff:ff:ff:ff:ff
vf 0 MAC 00:22:33:44:55:66, spoof checking off, link-state auto
vf 1 MAC 00:00:00:00:00:00, spoof checking off, link-state auto
vf 2 MAC 00:00:00:00:00:00, spoof checking off, link-state auto
vf 3 MAC 00:00:00:00:00:00, spoof checking off, link-state auto
...
通过lspci -D
来获取完整的PCI地址
SR-IOV功能配置
配置以太网Virtual Function
SR-IOV虚拟功能配置可以通过Hypervisor iprout2/netlink工具完成。没有的话,可以通过sysfs完成。
ip link:
ip link set { dev DEVICE | group DEVGROUP } [ { up | down } ]
...
[ vf NUM [ mac LLADDR ] [ vlan VLANID [ qos VLAN-QOS ] ]
...
[ spoofchk { on | off} ] ]
...
sysfs:
sysfs configuration (ConnectX-4):
/sys/class/net/enp8s0f0/device/sriov/[VF]
+-- [VF]
| +-- config
| +-- link_state
| +-- mac
| +-- mac_list
| +-- max_tx_rate
| +-- min_tx_rate
| +-- spoofcheck
| +-- stats
| +-- trunk
| +-- trust
| +-- vlan
VLAN访客标签(VGT)和VLAN交换机标签(VST)
当eth端口运行在VGT(VLAN Guest Tagging)模式时,端口会直接透传来自VF的数据包(包括VLAN标记),或者管理员可以配置Hypervisor将端口的数据包静默强制的与VLAN/Qos相关联(VLAN Switch Tagging)。
在后一种情况下,从访客发出的无标记或优先级标记的数据包将被插入VLAN标记,而传入的数据包将被移除VLAN标记。
默认行为是VGT。
要配置 VF 成 VST模式,运行:
ip link set dev <PF device> vf <NUM> vlan <vlan_id> [qos <qos>]
where:
NUM = 0..max-vf-num
vlan_id = 0..4095
qos = 0..7
For example:
# sets VST mode for VF #2 belonging to PF eth2, with vlan_id = 10 and qos = 3
ip link set dev eth2 vf 2 vlan 10 qos 3
# sets mode for VF 2 back to VGT
ip link set dev eth2 vf 2 vlan 0
注:在ConnectX-3网卡系列中,切换到VGT模式也可以通过设置vlan_id为4095来完成。
其他以太网VF配置选项
访客MAC配置
默认情况下,访客MAC地址被配置为全部为零。如果希望Guest总是以相同的MAC启动,应该在来Guest动启动前配置MAC。
通过以下方式进行配置:
ip link set dev <PF device> vf <NUM> mac <LLADDR>
对于CX-4和传统Guest,他们不会生成随机的mac地址,管理员应该总是配置他们的 mac 地址。
Spoof checking
目前只适用于3.1以上的内核。
ip link set dev <PF device> vf <NUM> spoofchk [on | off]
**Guest Link State **
ip link set dev <PF device> vf <UM> state [enable| disable| auto]
VF统计
VF统计数据可以通过sysfs查询到:
cat /sys/class/infiniband/mlx5_2/device/sriov/2/stats
tx_packets : 5011
tx_bytes : 4450870
tx_dropped : 0
rx_packets : 5003
rx_bytes : 4450222
rx_broadcast : 0
rx_multicast : 0
tx_broadcast : 0
tx_multicast : 8
rx_dropped : 0
MAC转发数据库(FDB)管理
FDB也被称为转发信息库(FIB)或转发表,最常用于网络桥接(bridging)、路由和类似的功能,以找到输入接口应转发数据包到适当出口。
以太网驱动程序在VF和PF之间共享一个表,可以存储128个MAC:
- 每个VF得到2个预留的MAC(从128个MAC的总池中抽取)。
- 每个VF/PF最多可以申请128个MAC,采用先申请先得的政策(除了每个VF预留的2个MAC,池子里的其他MAC可以自由申请)。
查看接口可用的MAC数量:
cat /sys/class/net/eth2/fdb_det
device eth2: max: 112, used: 2, free macs: 110
添加新的MAC到接口:
echo +<MAC> > /sys/class/net/eth<X>/fdb
一旦运行上述命令,接口(VF/PF)将验证是否存在空闲的MAC。如果有空闲的MAC,VF/PF会从全局池中获取并分配它。如果没有空闲的MAC,就会返回一个错误,通知用户池中MAC已满。
从接口中删除MAC:
echo -<MAC> > /sys/class/net/eth<X>/fdb
如果 /sys/class/net/eth<X>/fdb
不存在,使用ip-route2
中的bridge
工具,它包含管理FDB表的功能,因为内核支持FDB回掉。
bridge fdb add 00:01:02:03:04:05 permanent self dev p3p1
bridge fdb del 00:01:02:03:04:05 permanent self dev p3p1
bridge fdb show dev p3p1
如果添加mac地址时,内核函数返回失败,因为池子中MAC地址已满,将会发生以下错误:
- 如果该接口是PF,它将自动进入混杂模式
- 如果接口是VF,它将尝试进入混杂模式,如果它不支持混杂模式,该操作将失败,并在内核的日志中打印出一个错误。
虚拟客户标记(VGT+)
VGT+是虚拟客户标记(VGT)的高级模式,允许VF像VGT那样标记自己的数据包,但受到VLAN trunk策略的约束。该策略决定了哪些VLAN ID被允许被传输或接收。该策略不决定用户优先级,用户优先级保持不变。
数据包可以以下列模式之一发送:要么允许VF发送/接收无标记的流量,要没不允许。
VGT+模式,不会为端口定义默认VLAN。发送的数据包只有在与集合相匹配时才会传给eSwitch,而接收的数据包只有在与集合相匹配时才会转发给VF。
为CX-3配置VGT+
以下是目前VGT+的限制:
- VLAN集合的大小被定义为最多10个VLAN,包括为无标记/优先级标记的流量添加的VLAN 0。
- 这种行为适用于所有VF流量:普通以太网和所有RoCE传输。
- VGT+允许的VLAN集合只有在VF激活时才能扩展
- 只有在VF重置后,配置的集合才会生效
- VGT+仅在DMFS模式下可用
默认的模式是VGT:
cat /sys/class/net/eth5/vf0/vlan_set
oper:
admin:
启用VGT+模式:
-
设置相应的端口及VF(在下面的例子中,是端口eth5 VF0)允许的VLANs列表。
echo 0 1 2 3 4 5 6 7 8 9 > /sys/class/net/eth5/vf0/vlan_set
其中0指定是否允许无标记/优先级标记的流量。
重新启动相关的虚拟机以使更改生效,或者运行:
/etc/init.d/openibd
重新启动
禁用VGT+模式:
-
设置VLAN为空
echo > /sys/class/net/eth5/vf0/vlan_set
重新启动相关的虚拟机以使更改生效,或者运行:
/etc/init.d/openibd
重新启动
为CX-4/CX-5配置VGT+
配置允许的VLANs到对应的端口及VF下(例中是端口 eth5,vf 0):
echo "<add> <start_vid> <end_vid>" > /sys/class/net/eth5/device/sriov/0/trunk
# 添加 4-15 VLAN到trunk
echo add 4 15 > /sys/class/net/eth5/device/sriov/0/trunk
# 添加单个VLAN到trunk
echo add 17 17 > /sys/class/net/eth5/device/sriov/0/trunk
当VLAN ID=0时,允许无VLAN和无QOS的流量通过
禁用VGT+模式,删除所有的VLANs:
echo rem 0 4095 > /sys/class/net/eth5/device/sriov/0/trunk
删除指定的VLANs,同添加,add改为rem
-
Host Channel Adapter(HCA)一词通常用于描述InfiniBand接口卡。 ↩