ベアメタルからクラウドへ:OpenStack Neutron 紹介 — Linux Bridge Provider Networks

從裸機到雲端:OpenStack Neutron 介紹 — Linux Bridge 1

前回の記事では 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ライセンスの下で提供されています。

コメントを残す