Linux 中每个 VF 的 Q-in-Q 封装
此功能仅在 ConnectX-5 和 ConnectX-6 适配器卡上受支持。
本节介绍如何在每个 VF 的基础上为虚拟机监控程序配置 IEEE 802.1ad Q-in-Q VLAN 标记(S-VLAN)。通过 SR-IOV 连接到 VF 的 VM 可以传输带有或不带有 C-VLAN 标记的流量。
当 VF 配置为 VST Q-in-Q 封装时,适配器硬件会自动将 S-VLAN 标记插入从 VF 到物理端口的传出数据包中。对于传入数据包,硬件会在将流量传递到 VF 之前删除 S-VLAN 标记。
此设置假设有两台服务器配备了 ConnectX-5/ConnectX-6 适配器卡。

内核必须为 v3.10 或更高版本,或者自定义/内置内核必须支持 vlan-stag
对于 ConnectX-5/ConnectX-6 HCA,必须安装 16/20.21.0458 或更高版本的固件
服务器应启用 SR-IOV,并且 VF 应连接到虚拟机监控程序上的 VM。
网络注意事项 - 网络交换机可能需要在相关的交换机端口上增加 MTU(以支持 1522 MTU 大小)。
为每个端口的每个 VF 添加所需的 S-VLAN (QinQ) 标记(在虚拟机监控程序上)。有两种方法可以添加 S-VLAN
通过使用 sysfs
echo
'100:0:802.1ad'
> /sys/class
/net/ens1f0/device/sriov/0
/vlan通过使用 ip link 命令(仅在使用最新内核版本时可用)
ip link set dev ens1f0 vf
0
vlan100
proto802
.1ad使用 ip link show 命令检查配置
# ip link show ens1f0 ens1f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu
1500
qdisc mq state UP mode DEFAULT qlen1000
link/ether ec:0d:9a:44
:37
:84
brd ff:ff:ff:ff:ff:ff vf0
MAC00
:00
:00
:00
:00
:00
, vlan100
, vlan protocol802
.1ad, spoof checking off, link-state auto, trust off vf1
MAC00
:00
:00
:00
:00
:00
, spoof checking off, link-state auto, trust off vf2
MAC00
:00
:00
:00
:00
:00
, spoof checking off, link-state auto, trust off vf3
MAC00
:00
:00
:00
:00
:00
, spoof checking off, link-state auto, trust off vf4
MAC00
:00
:00
:00
:00
:00
, spoof checking off, link-state auto, trust off
可选:添加 S-VLAN 优先级。在 ip link 命令(或 sysfs)中使用 qos 参数
ip link set dev ens1f0 vf
0
vlan100
qos3
proto802
.1ad使用 ip link show 命令检查配置
# ip link show ens1f0 ens1f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu
1500
qdisc mq state UP mode DEFAULT qlen1000
link/ether ec:0d:9a:44
:37
:84
brd ff:ff:ff:ff:ff:ff vf0
MAC00
:00
:00
:00
:00
:00
, vlan100
, qos3
, vlan protocol802
.1ad, spoof checking off, link-state auto, trust off vf1
MAC00
:00
:00
:00
:00
:00
, spoof checking off, link-state auto, trust off vf2
MAC00
:00
:00
:00
:00
:00
, spoof checking off, link-state auto, trust off vf3
MAC00
:00
:00
:00
:00
:00
, spoof checking off, link-state auto, trust off vf4
MAC00
:00
:00
:00
:00
:00
, spoof checking off, link-state auto, trust off在 VM 上创建 VLAN 接口并添加 IP 地址。
ip link add link ens5 ens5.
40
type vlan protocol802
.1q id40
ip addr add42.134
.135.7
/16
brd42.134
.255.255
dev ens5.40
ip link set dev ens5.40
up要验证设置,请在两个 VM 之间运行 ping 命令,并打开 Wireshark 或 tcpdump 以捕获数据包。