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

"扁平提供商网络数据包的工作方式"中提供的输出提供了足够的调试信息,以排除扁平提供商网络的问题。以下步骤包含有关故障排除流程的更多信息。

流程

  1. 检查 bridge_mappings

    验证您使用的物理网络名称是否与 bridge_mapping 配置的内容一致。

    示例

    在本例中,物理网络名称为 physnet1

    $ openstack network show provider-flat

    输出示例

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

    示例

    在本例中,bridge_mapping 配置的内容也是 physnet1

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

    输出示例

    bridge_mappings = physnet1:br-ex

  2. 检查网络配置。

    确认网络已创建为外部,并使用 flat 类型:

    示例

    在本例中,会查询网络 provider-flat 的详细信息:

    $ openstack network show provider-flat

    输出示例

    ...
    | provider:network_type     | flat                                 |
    | router:external           | True                                 |
    ...

  3. 检查 patch-peer。

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

    $ ovs-vsctl show

    输出示例

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

    输出示例

    br-ex 上配置 patch-peer:

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

    如果 bridge_mapping/etc/neutron/plugins/ml2/openvswitch_agent.ini 中正确配置,这个连接会在重启 neutron-openvswitch-agent 服务时被创建。

    如果在重启该服务后没有创建连接,请重新检查 bridge_mapping 设置。

  4. 检查网络流。

    运行 ovs-ofctl dump-flows br-exovs-ofctl dump-flows br-int,并检查流是否剥离传出数据包的内部 VLAN ID,并为传入的数据包添加 VLAN ID。当您生成实例到特定 Compute 节点上的此网络时,会首先添加此流。

    1. 如果在生成实例后没有创建此流,请验证网络是否创建为 flat,为 external,且 physical_network 名称是正确的。此外,请检查 bridge_mapping 设置。
    2. 最后,检查 ifcfg-br-exifcfg-ethx 配置。确保 ethX 作为端口添加到 br-ex 中,并且 ifcfg-br-exifcfg-ethxip 的输出中有一个 UP 标志。

      输出示例

      以下输出显示 eth1br-ex 中的端口:

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

      示例

      以下示例演示了 eth1 配置为 OVS 端口,并且内核知道从接口传输所有数据包,并将它们发送到 OVS 网桥 br-ex。这可以在条目 master ovs-system 中观察到。

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