4.8. 对 VLAN 提供商网络上的实例物理网络连接进行故障排除

在对 VLAN 提供商网络中的连接进行故障排除时,请参阅"VLAN 提供程序网络数据包流工作" 中描述的数据包流。另外,请查看以下配置选项:

流程

  1. 验证 bridge_mapping 配置中使用的物理网络名称是否与物理网络名称匹配。

    示例

    $ openstack network show provider-vlan171

    输出示例

    ...
    | provider:physical_network | physnet1
    ...

    示例

    $ grep bridge_mapping /etc/neutron/plugins/ml2/openvswitch_agent.ini

    输出示例

    在本例中,物理网络名称 physnet1bridge_mapping 配置中使用的名称匹配:

    bridge_mappings = physnet1:br-ex
  2. 确认网络已创建为外部,类型为 vlan,并使用正确的 segmentation_id 值:

    示例

    $ openstack network show provider-vlan171

    输出示例

    ...
    | provider:network_type     | vlan                                 |
    | provider:physical_network | physnet1                             |
    | provider:segmentation_id  | 171                                  |
    ...

  3. 检查 patch-peer。

    验证 br-intbr-ex 是否使用 patch-peer int-br-ex <--> phy-br-ex 连接。

    $ ovs-vsctl show

    此连接在重启 neutron-openvswitch-agent 时创建的,只要 bridge_mapping/etc/neutron/plugins/ml2/openvswitch_agent.ini 中正确配置。

    如果这没有在重启服务后创建,则重新检查 bridge_mapping 设置。

  4. 检查网络流。

    1. 要查看传出数据包的流,请运行 ovs-ofctl dump-flows br-exovs-ofctl dump-flows br-int,并验证流是否将内部 VLAN ID 映射到外部 VLAN ID (segmentation_id)。
    2. 对于传入的数据包,请将外部 VLAN ID 映射到内部 VLAN ID。

      当您首次生成实例到此网络时,neutron OVS 代理会添加此流。

    3. 如果在生成实例后没有创建此流,请确保网络已创建为 vlan,是 外部,并且 physical_network 名称是正确的。另外,再次检查 bridge_mapping 设置。
    4. 最后,重新检查 ifcfg-br-exifcfg-ethx 配置。

      确保 br-ex 包含端口 ethX,并且 ifcfg-br-exifcfg-ethxip a 命令的输出中有一个 UP 标志。

      示例

      $ ovs-vsctl show

      在本例中,eth1br-ex 中的一个端口:

          Bridge br-ex
              Port phy-br-ex
                  Interface phy-br-ex
                      type: patch
                      options: {peer=int-br-ex}
              Port "eth1"
                  Interface "eth1"

      示例

      $ ip a

      输出示例

      在本示例输出中,eth1 已添加为端口,并且内核配置为将所有数据包从接口移动到 OVS 网桥 br-ex。这由条目 master ovs-system 演示。

      5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP qlen 1000