11.2. 在 ML2/OVN 部署中启用 VLAN 透明性
如果您需要在虚拟机(VM)实例之间发送 VLAN 标记的流量,请启用 VLAN 透明。在 VLAN 透明网络中,您可以直接在虚拟机中配置 VLANS,而无需在 neutron 中配置它们。
先决条件
- 部署 Red Hat OpenStack Platform 16.1 或更高版本,使用 ML2/OVN 作为机制驱动程序。
- VLAN 或 Geneve 类型的提供商网络。不要在带有扁平类型提供商网络的部署中使用 VLAN 透明。
- 确保外部交换机支持两个 VLAN 上使用 ethertype 0x8100 的 802.1q VLAN 堆栈。OVN VLAN 透明不支持带有外部供应商 VLAN ethertype 设置为 0x88A8 或 0x9100 的 802.1ad QinQ。
流程
在 undercloud 节点上的环境文件中,将
EnableVLANTransparency
参数设置为true
。例如,将以下行添加到ovn-extras.yaml
中。parameter_defaults: EnableVLANTransparency: true
parameter_defaults: EnableVLANTransparency: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
openstack overcloud deploy
命令中包含环境文件以及与您环境相关的任何其他环境文件并部署 overcloud。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<other_overcloud_environment_files>
替换为属于您现有部署的环境文件列表。使用-
-transparent-vlan
参数创建网络。示例
openstack network create network-name --transparent-vlan
$ openstack network create network-name --transparent-vlan
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个参与的虚拟机上设置一个 VLAN 接口。
将接口 MTU 设置为小于下划线网络的 MTU 的 4 字节,以适应 VLAN 透明所需的额外标记。例如,如果lay 网络 MTU 是 1500,则将接口 MTU 设置为 1496。
以下示例命令在
eth0
上添加了一个 VLAN 接口,其 MTU 为 1496。VLAN 为 50,接口名称为vlan50
:示例
ip link add link eth0 name vlan50 type vlan id 50 mtu 1496 ip link set vlan50 up ip addr add 192.128.111.3/24 dev vlan50
$ ip link add link eth0 name vlan50 type vlan id 50 mtu 1496 $ ip link set vlan50 up $ ip addr add 192.128.111.3/24 dev vlan50
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VM
端口上的 set-allowed-address
。将允许地址设置为在第 4 步中在虚拟机内部创建的 IP 地址。另外,您还可以设置 VLAN 接口 MAC 地址:
示例
以下示例将 IP 地址设置为
192.128.111.3
,其是可选的 MAC 地址00:40:96:a8:45:c4
on portfv82gwk3-qq2e-yu93-go31-56w7sf476mm0
:openstack port set --allowed-address ip-address=192.128.111.3,mac-address=00:40:96:a8:45:c4 fv82gwk3-qq2e-yu93-go31-56w7sf476mm0
$ openstack port set --allowed-address ip-address=192.128.111.3,mac-address=00:40:96:a8:45:c4 fv82gwk3-qq2e-yu93-go31-56w7sf476mm0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 使用 vlan50 IP 地址在 VLAN 上的两个虚拟机之间 ping。
-
在
eth0
上使用tcpdump
来查看数据包是否到达 VLAN 标签的完整性。