前回の記事では Neutron のアーキテクチャを紹介しました。これから数回にわたり、Neutron で Linux Bridge と OVS プラグインを使用する場合のアーキテクチャと、トラフィックがどのように流れるかについて解説します。まず第1回目は、Linux Bridge と Provider Network の組み合わせについて紹介します。
目次
Linux bridge: Provider networks
Provider network アーキテクチャの例では、VLAN (802.1q) タギングを使用して、インスタンス (instance) と物理ネットワークインフラストラクチャ間の L2 接続を提供します。これは、1 つのタグなし(フラット)ネットワークと、最大 4095 個のタグ付き (VLAN) ネットワークをサポートします。VLAN ネットワークの実際の数は、物理ネットワークインフラストラクチャに依存します。
アーキテクチャ
上の図は Linux Bridge – Provider Networks 構成におけるアーキテクチャの全体像です。どのコンポーネントがコントローラーノード (controller node) で動作し、どれが計算ノード (compute node) で動作しているかを確認できます。
この図は、単一の Provider network において計算ノード内のコンポーネントがどのように接続されているかを示しています。この例では、インスタンスと DHCP エージェントが同じノードに配置されていますが、実際の運用環境では DHCP エージェントが別の計算ノードに配置されることもあります。
複数の Provider network が存在する状況では、各 Provider network は各計算ノード上の 1 つの Linux Bridge に対応し、VLAN によって分離されます。計算ホスト上のインスタンスは、そのネットワークインターフェースを対応する Linux Bridge に接続します。
トラフィックフロー
このセクションでは、さまざまな状況下で実際のパケットがアーキテクチャ内をどのように流れるかを紹介します。
アーキテクチャ設定
以下は想定される構成です。VLANによって分離された2つのプロバイダーネットワークがあり、それぞれに1つのインスタンスが配置されています。
- プロバイダーネットワーク 1 (VLAN)
- VLAN ID 101 (タグ付き)
- IP アドレス範囲 203.0.113.0/24
- ゲートウェイ (物理ネットワーク上)
- IP 203.0.113.1
- Provider network 2 (VLAN)
- VLAN ID 102 (タグ付き)
- IPアドレス範囲 192.0.2.0/24
- ゲートウェイ
- IP 192.0.2.1
- インスタンス 1
- IP 203.0.113.101
- インスタンス 2
- IP 192.0.2.101
南北トラフィック
- コンピュートノード1上のインスタンス
- インスタンスが外部ネットワークへパケットを送信します
- インスタンスのネットワークインターフェース (1) は、vethペア (2) を介してパケットをプロバイダーブリッジのインスタンスポートに送信します
- プロバイダーブリッジ上のiptables (3) が、ファイアウォールとコネクショントラッキングを処理します
- プロバイダーブリッジ上のVLANサブインターフェースポート (4) は、パケットを物理ネットワークインターフェース (5) に送信します
- 物理ネットワークインターフェースは、パケットにVLANタグ101を付与し、物理ネットワークインフラ内のスイッチ (6) に送信します
後半部分は一般的なネットワークの仕組みと同様で、パケットはルーターに送られた後、外部へ送信されます。パケットの戻り(リターンパス)については、その逆のプロセスを辿ります。
東西トラフィック 1:同一ネットワーク内のインスタンス
- インスタンス1はコンピュートノード1上にあります
- インスタンス2はコンピュートノード2上にあります
- インスタンス 1 がインスタンス 2 へパケットを送信します。
前述の状況は全く同じです。
- インスタンスのネットワークインターフェース (1) は、vethペア (2) を介してパケットをプロバイダーブリッジのインスタンスポートに送信します
- プロバイダーブリッジ上のiptables (3) が、ファイアウォールとコネクショントラッキングを処理します
- プロバイダーブリッジ上のVLANサブインターフェースポート (4) は、パケットを物理ネットワークインターフェース (5) に送信します
- 物理ネットワークインターフェースは、パケットにVLANタグ101を付与し、物理ネットワークインフラ内のスイッチ (6) に送信します
実際のネットワークインフラストラクチャ内では:
- スイッチはパケットをコンピュートノード1からコンピュートノード2へ送信します
パケットが compute node 2 に到達した後:
- 物理ネットワークインターフェース (8) は、VLANタグ101を削除し、プロバイダーブリッジ上のVLANサブインターフェースポート (9) に送信します
- プロバイダーブリッジ上のiptables (10) が、ファイアウォールとコネクショントラッキングを処理します
- プロバイダーブリッジ上のインスタンスポート (11) は、vethペアを介してパケットをインスタンス2のネットワークインターフェース (12) に送信します
東西トラフィック 2:異なるネットワーク間のインスタンス
- インスタンス1はコンピュートノード1上にあり、プロバイダーネットワーク1を使用しています
- インスタンス2はコンピュートノード1上にあり、プロバイダーネットワーク2を使用しています
- インスタンス 1 がインスタンス 2 へパケットを送信します。
最初にパケットが送信されるプロセスも同様です。
- インスタンスのネットワークインターフェース (1) は、vethペア (2) を介してパケットをプロバイダーブリッジのインスタンスポートに送信します
- プロバイダーブリッジ上のiptables (3) が、ファイアウォールとコネクショントラッキングを処理します
- プロバイダーブリッジ上のVLANサブインターフェースポート (4) は、パケットを物理ネットワークインターフェース (5) に送信します
- 物理ネットワークインターフェースは、パケットにVLANタグ101を付与し、物理ネットワークインフラ内のスイッチ (6) に送信します
実際のネットワークインフラストラクチャ内では:
- 交換器將封包 VLAN tag 101 拿掉並且送往路由器 (7)
- 路由器將封包從 provider network 1 (8) 路由到 provider network 2 (9)
- 路由器將封包送往交換器 (10)
- 交換器將封包 VLAN tag 102 拿掉並且送往 compute node 1 (11)
compute node 1 に戻ります:
- 實體網路介面 (12) 將 VLAN tag 102 拿掉並且送往 provider bridge 上的 VLAN sub-interface port (13)
- 在 provider bridge 上 iptables (14) 會處理防火牆跟 connection tracking
- provider bridge 上的 instance port (15) 透過 veth pair 將封包送往 instance 2 的網路介面 (16)
以上が、さまざまな状況における Linux Bridge Provider Network のパケットフローです。
まとめ
本記事では、Linux Bridge – Provider Network におけるアーキテクチャとパケットフローについて紹介しました。パケットがどのように流れるかを理解することで、ネットワークトラブルのデバッグ時に役立つはずです。次回の記事では、Linux Bridge – self-service network のアーキテクチャとパケットフローについて紹介します。
著作権表示:特に断りのない限り、本ブログのすべての記事はCC BY-NC-SA 4.0ライセンスの下で提供されています。






