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. ネットワークの設定を確認します。

    ネットワークが external として作成され、flat の種別が使用されていることを確認します。

    この例では、ネットワーク provider-flat に関する詳細が照会されます。

    $ openstack network show provider-flat

    出力例

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

  3. パッチピアを確認します。

    パッチピア int-br-ex <--> phy-br-ex を使用して、br-intbr-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 でのパッチピアの設定:

        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

    /etc/neutron/plugins/ml2/openvswitch_agent.inibridge_mapping が正しく設定されていれば、この接続は neutron-openvswitch-agent サービスを再起動する際に作成されます。

    サービスを再起動してもこの接続が作成されない場合には、bridge_mapping の設定を再確認してください。

  4. ネットワークフローを確認します。

    ovs-ofctl dump-flows br-exovs-ofctl dump-flows br-int を実行して、フローにより送信パケットの内部 VLAN ID が削除されたかどうかを確認します。まず、このフローは、特定の Compute ノード上のこのネットワークにインスタンスを作成すると追加されます。

    1. インスタンスの起動後にこのフローが作成されなかった場合には、ネットワークが flat として作成されていて、external であることと、physical_network の名前が正しいことを確認します。また、bridge_mapping の設定を確認してください。
    2. 最後に ifcfg-br-exifcfg-ethx の設定を確認します。ethXbr-ex 内のポートとして追加されていること、および ip a の出力で ifcfg-br-ex および ifcfg-ethxUP フラグが表示されることを確認します。

      出力例

      以下の出力では、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