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。

流程

  1. 在 undercloud 节点上的环境文件中,将 EnableVLANTransparency 参数设置为 true。例如,将以下行添加到 ovn-extras.yaml 中:

    parameter_defaults:
        EnableVLANTransparency: true
  2. openstack overcloud deploy 命令中包含环境文件,以及任何与您环境相关的其他环境文件,并部署 overcloud:

    $ openstack overcloud deploy \
    --templates \
    …
    -e <other_overcloud_environment_files> \
    
    -e ovn-extras.yaml \
    …

    <other_overcloud_environment_files > 替换为作为现有部署一部分的环境文件列表。

  3. 使用 --transparent-vlan 参数创建网络。

    示例

    $ openstack network create network-name --transparent-vlan

  4. 在每个参与的虚拟机上设置一个 VLAN 接口。

    将接口 MTU 设置为小于 underlay 网络的 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

  5. 在虚拟机端口上设置 --allowed-address

    将允许的地址设置为您在第 4 步中在虚拟机内的 VLAN 接口中创建的 IP 地址。另外,您还可以设置 VLAN 接口 MAC 地址:

    示例

    以下示例将 IP 地址设为 192.128.111.3,可选的 MAC 地址 00:40:96:a8:45:c4 on port 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

验证

  1. 使用 vlan50 IP 地址在 VLAN 上的两个虚拟机间 ping。
  2. eth0 上使用 tcpdump 来查看数据包是否到达 VLAN 标签。

其他资源