sriov 设置 vlan

702 阅读2分钟

sriov 应该是可以基于 pf vf 设置 vlan 的

1. 查看 一个 pf 以及及其 vf


# ip link show dev eth2  
7: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000  
link/ether 00:02:c9:e6:01:12 brd ff:ff:ff:ff:ff:ff  
vf 0 MAC 00:00:00:00:00:00, vlan 4095, spoof checking off, link-state auto  
vf 1 MAC 00:00:00:00:00:00, vlan 4095, spoof checking on, link-state enable  
vf 2 MAC 00:00:00:00:00:00, vlan 4095, spoof checking off, link-state disable  
vf 3 MAC 00:00:00:00:00:00, vlan 4095, spoof checking off, link-state auto  
vf 4 MAC 00:00:00:00:00:00, vlan 4095, spoof checking off, link-state auto  
vf 5 MAC 00:00:00:00:00:00, vlan 4095, spoof checking off, link-state auto


vlan 的配置


#ip link set <dev> down  
#ip link set <pf> vf <vf_index> vlan <vlan id> qos <priority>  
#ip link set <dev> up


ip link set eth8 down  
ip link set eth2 vf 1 vlan 2
ip link set eth8 up

QoS 配置


#ip link set <pf> vf <vf_index> vlan <vlan id> qos <priority>


MAC 配置

#ip link set <pf> vf <vf_index> mac <vnic_mac>

ip link set eth2 vf 1 mac 00:52:44:11:22:33
# 在该步骤之后再应用到 vm xml 

打开或者关闭 arp 欺骗检查


#ip link set <pf> vf <vf_index> spoofchk on|off

#ip link set eth2 vf 1 mac 00:52:44:11:22:33  
#ip link set eth2 vf 1 spoofchk on

2. 虚拟机 vf sriov pci 设备配置


<devices>

...

<hostdev mode='subsystem' type= **'pci'** managed='yes'>

<**source**>

<address domain='0x0000' **bus**='0x04' **slot**='0x00' **function**='0x4'/>

</**source**>

<alias name='hostdev0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

</hostdev>

...

</devices>


# lspci

…

**04:00.4** Network controller: Mellanox Technologies ... [ConnectX-3 Virtual Function]

#

3. macvtap 的并行虚拟化的配置


<devices>

...

<interface type= **'direct'** >

<mac address= **'52:54:00:36:5b:2c'** />

<source dev='**eth8**' mode='passthrough'/>

<target dev='macvtap0'/>

<model type='virtio'/>

<alias name='net1'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

</interface>

...

</devices>

华为的配置也大致类似:

VF可配置两种vlan,Transparent VLAN Tagging和Virtual Guest Tagging。

Transparent VLAN Tagging是由VF给报文添加vlan tag,相当于PVID,VM(OS)不感知vlan tag。VM发过来的报文,VF添加PVID再外发;VF接收带PVID的vlan tag的报文,去掉vlan tag后再发给VM。可使用下面命令配置Transparent VLAN Tagging。

#ip link set eth[num] vf [VF num] vlan [VLAN ID]

Virtual Guest Tagging是VF不设置PVID,由VM(OS)给报文设置vlan tag,VF不对报文的vlan tag作任何处理,直接透传。可使用下面命令配置Virtual Guest Tagging。

#ip link set eth[num] vf [VF num] vlan 4095

support.huawei.com/enterprise/…

4. 关于网络控制面如何编排

neutron 中应该有对应的 vlan 调度配置实现, 后续再梳理下:

access.redhat.com/documentati…

5. 注意点

注意:所有未设置 VLAN ID 的 VF 和 PF,可以认为是在同一个 LAN 中,不带 VLAN 的数据包在该 LAN 中按照上述规则进行处理。此外,设置了 VLAN 的 VF,发出数据包时,会自动给数据包加上 VLAN,在接收到数据包时,可以设置是否由硬件剥离 VLAN 头部。 cloud.tencent.com/developer/a…

参考:

enterprise-support.nvidia.com/s/article/h…