第11章 ブリッジマッピングの設定
本章では、Red Hat OpenStack Platform の ブリッジマッピング の設定方法を説明します。
11.1. ブリッジマッピングを使用する目的
ブリッジマッピングにより、プロバイダーネットワークのトラフィックは、物理ネットワークに到達することが可能となります。トラフィックは、ルーターの qg-xxx インターフェースからプロバイダーネットワークの外部に送出されて、br-int に達します。次に br-int と br-ex の間のパッチポートにより、トラフィックはプロバイダーネットワークのブリッジを通過して物理ネットワークまで到達することができます。
11.1.1. ブリッジマッピングの設定
以下は、br-int と br-ex のパッチピアの例です。
int-br-ex <-> phy-br-ex
この接続は、bridge_mappings で設定します。以下に例を示します。
bridge_mappings = physnet1:br-ex,physnet2:br-ex2
bridge_mapping エントリーが見つからない場合には、ネットワーク接続が存在しないか、物理ネットワークへの通信が機能していません。
この設定の最初のエントリーは、パッチピアケーブルを使用して br-int と br-ex の間の接続を作成します。2 番目のエントリーは、br-ex2 のパッチピアを作成します。
11.1.2. コントローラーノードの設定
bridge_mappings の設定は、コントローラーノードの network_vlan_ranges オプションと相関する必要があります。たとえば、上記の例では、コントローラーノードを以下のように設定します。
network_vlan_ranges = physnet1:10:20,physnet2:21:25
これらの値により、対応する外部ネットワークを表すプロバイダーが作成されてから、外部ネットワークはルーターのインターフェースを介してテナントのネットワークに接続されます。このため、ルーターがスケジュールされているネットワークノード上で bridge_mappings を設定する必要があります。これは、プロバイダーネットワークによって表されているルーターのトラフィックが正しい物理ネットワーク (例: physnet1) を使用して送信できることを意味します。
11.1.3. トラフィックの流れ
この設定は、接続の作成以外に、br-int と br-ex で OVS フローを設定し、外部ネットワークとの間でネットワークトラフィックの送受信が可能になります。外部ネットワークはそれぞれ、内部 VLAN id で表され、ルーターの qg-xxx ポートにタグ付けされます。パケットが phy-br-ex に到達すると、br-ex ポートは VLAN タグをストリップ化して、このパケットを物理インターフェース、その後に外部ネットワークに移動します。外部ネットワークからのリターンパケットは br-ex に到達して、phy-br-ex <→ int-br-ex を使用することで br-int に移動されます。パケットが int-br-ex に到達すると、br-int の別のフローがパケットに内部 VLAN タグを追加します。これにより、パケットは qg-xxx により受理可能になります。
11.2. ブリッジマッピングのメンテナンス
マッピングを削除した後には、patch port のクリーンアップを実行する必要があります。この操作により、ブリッジ設定から誤ったエントリーが確実に消去されます。このタスクを実行するには 2 つのオプションを利用できます。
- 手動ポートクリーンアップ: 不要なポートを慎重に削除する必要があります。ネットワーク接続を停止する必要はありません。
- neutron-ovs-cleanup を使用した自動ポートクリーンアップ: クリーンアップが自動で実行されますが、ネットワーク接続を停止する必要があります。また、必要なマッピングを再度追加する必要があります。このオプションは、ネットワーク接続を停止しても支障がない場合に選択してください。
各オプションの例を以下に示します。
11.2.1. 手動ポートクリーンアップ
手動ポートクリーンアッププロセスは、不要なポートを削除します。ネットワーク接続を停止する必要がありません。これらのポートは命名規則を使用して特定することができます。br-$external_bridge では、"phy-"$external_bridge、br-int では "int-"$external_bridge という名前が指定されます。
以下の例に記載する手順では、bridge_mappings からブリッジを削除し、対応するポートをクリーンアップします。
1. openvswitch_agent.ini を編集して、bridge_mappings から physnet2:br-ex2 のエントリーを削除します。
bridge_mappings = physnet1:br-ex,physnet2:br-ex2
physnet2:br-ex2 のエントリーを削除します。削除した後の bridge_mappings は以下のようになります。
bridge_mappings = physnet1:br-ex
2. ovs-vsctl を使用して、削除した physnet2:br-ex2 エントリーに関連付けられた patch port を削除します。
# ovs-vsctl del-port br-ex2 phy-br-ex2 # ovs-vsctl del-port br-int int-br-ex2
bridge_mappings エントリー全体が削除またはコメントアウトされた場合には、各エントリーに対してクリーンアップコマンドを実行する必要があります。
3. neutron-openvswitch-agent を再起動します。
# service neutron-openvswitch-agent restart
11.2.2. 「neutron-ovs-cleanup」を使用した自動ポートクリーンアップ
この操作は neutron-ovs-cleanup コマンドに --ovs_all_ports フラグを指定して実行します。neutron サービスまたはノード全体を再起動して、ブリッジを通常の稼動状態に戻します。このプロセスでは、ネットワーク接続を完全に停止する必要があります。
neutron-ovs-cleanup コマンドは、すべての OVS ブリッジから全ポート (インスタンス、qdhcp/qrouter など) を抜線します。--ovs_all_ports フラグを使用すると br-int から全ポートが削除されて、br-tun からトンネルエンドが、またブリッジ間からは patch port がクリーンアップされます。また、物理インターフェース (例: eth0、eth1) はブリッジ (例: br-ex、br-ex2) から削除されます。これにより、ovs-vsctl を使用してポートを手動で再度追加するまでの間は、インスタンスへの接続はできなくなります。
# ovs-vsctl add-port br-ex eth1
11.2.2.1. neutron-ovs-cleanup の使用例:
1. openvswitch_agent.ini> に記載されている bridge_mapping のエントリーをバックアップします。
2. neutron-ovs-cleanup コマンドに --ovs_all_ports フラグを指定して実行します。このステップにより、ネットワーク接続が完全に停止される点に注意してください。
# /usr/bin/neutron-ovs-cleanup --config-file /etc/neutron/plugins/ml2/openvswitch_agent.ini --log-file /var/log/neutron/ovs-cleanup.log --ovs_all_ports
3. OpenStack Networking サービスを再起動します。
# systemctl restart neutron-openvswitch-agent # systemctl restart neutron-l3-agent.service # systemctl restart neutron-dhcp-agent.service
4. openvswitch_agent.ini に bridge_mapping エントリーを再度追加して、接続をリストアします。
5. neutron-openvswitch-agent サービスを再起動します。
# systemctl restart neutron-openvswitch-agent
OVS エージェントを再起動する際には、bridge_mappings に設定されていない接続には影響はありません。br-int を br-ex2 に接続していて、かつ br-ex2 にフローがある場合には、bridge_mappings 設定から削除 (または完全にコメントアウト) してしまうと、サービスやノードを再起動するなど、どのような操作を行なっても、2 つのブリッジは切断されません。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.