ベアメタルからクラウドへ:OpenStack Neutron 紹介 — Linux Bridge – セルフサービスネットワーク

從裸機到雲端:OpenStack Neutron 介紹 — Linux Bridge – Self-Service Networks

前回の記事では Linux Bridge with Provider Network のアーキテクチャとパケットフローについて解説しました。今回は Linux Bridge with self-service networks について紹介します。

Linux bridge: セルフサービスネットワーク

セルフサービスネットワークは、ユーザーにほぼ無制限の数の仮想ネットワークを提供します。Neutron は VLAN セルフサービスネットワークもサポートしていますが、本稿では VXLAN セルフサービスネットワークを例に説明します。

アーキテクチャ

上の図は Linux Bridge – セルフサービスネットワーク構成におけるアーキテクチャ全体の概要です。どのコンポーネントが controller node 上で動作し、どれが compute node 上、どれが network node 上で動作しているかを確認できます。

この図は、単一の provider network 下のセルフサービスネットワークで使用されるコンポーネントがどのように接続されているかを示しています。この例では Instance と DHCP agent が同じノードにありますが、実際の状況では DHCP agent が他の compute node 上にある場合もあります。

トラフィックフロー

このセクションでは、さまざまな状況下で実際のパケットがアーキテクチャ内をどのように流れるかを紹介します。

アーキテクチャ設定

以下は想定されるアーキテクチャです。VXLAN によって分離された 2 つのセルフサービスネットワークがあり、それぞれに 1 つのインスタンスが存在します。

  • プロバイダーネットワーク 1 (VLAN)
    • VLAN ID 101 (タグ付き)
  • セルフサービスネットワーク 1 (VXLAN)
    • VXLAN ID (VNI) 101
  • セルフサービスネットワーク 2 (VXLAN)
    • VXLAN ID (VNI) 102
  • セルフサービスルーター
    • プロバイダーネットワーク上のゲートウェイ
    • セルフサービスネットワーク 1 のインターフェース
    • セルフサービスネットワーク 2 のインターフェース
  • インスタンス 1
  • インスタンス 2

南北トラフィック 1:固定 IP のインスタンス

固定 IPv4 アドレスを持つインスタンスの場合、ネットワークノード (network node) はセルフサービスネットワークからインターネットなどの外部ネットワークへ向かう南北トラフィックに対して SNAT を実行します。固定 IPv6 アドレスを持つインスタンスの場合、ネットワークノードは通常のルーティングを介してパケットを外部ネットワークに送信します。

  • インスタンスはコンピュートノード 1 上で動作し、セルフサービスネットワーク 1 を使用します
  • インスタンスが外部ネットワークへパケットを送信します

  • インスタンスのネットワークインターフェース (1) は、veth ペア (2) を介してセルフサービスブリッジのインスタンスポートにパケットを送信します
  • セルフサービスブリッジ上の iptables (3) が、ファイアウォールとコネクション追跡を処理します
  • セルフサービスブリッジ上の VXLAN インターフェース (4) が、パケットを VNI 101 にカプセル化します
  • VXLAN インターフェースに対応する物理ネットワークインターフェース (5) は、オーバーレイネットワークを介してネットワークノード (6) に送信されます

パケットが network node に到達した後:

  • VXLAN インターフェースに対応する物理ネットワークインターフェース (7) は、パケットを VXLAN インターフェース (8) に送信し、VXLAN パケットをデカプセル化します
  • ルーターのセルフサービスブリッジインターフェース (9) は、セルフサービスルーターの名前空間内にあるセルフサービスネットワークインターフェース (10) にパケットを送信します
    • IPv4 の場合、ルーターは SNAT を使用して送信元 IP をルーターの IP に変更した後、プロバイダーネットワーク上のゲートウェイインターフェース (11) を介してゲートウェイにパケットを送信します
    • IPv6 の場合、ルーターはパケットをネクストホップ IP アドレス(通常はプロバイダーネットワークのゲートウェイ)に送信します。これもプロバイダーネットワーク上のゲートウェイインターフェース (11) を介して行われます
  • ルーターはパケットをルーターのプロバイダーブリッジインターフェース (12) に送信します
  • プロバイダーブリッジ上の VLAN サブインターフェースポート (13) は、プロバイダー物理ネットワークインターフェース (14) にパケットを送信します
  • プロバイダー物理ネットワークインターフェース (14) は、パケットに VLAN タグ 101 を付与し、物理ネットワーク設備 (15) へ送信します。

その後の部分は、一般的なネットワークの知識と同様です。パケットは物理ネットワーク内のルーターに送られた後、外部へ送信されます。パケットの戻りのフローは、このプロセスを完全に逆にしたものになります。

南北トラフィック 2:Floating IP のインスタンス

固定 IPv4 アドレスを持つインスタンスの場合、ネットワークノード (network node) はセルフサービスネットワークからインターネットなどの外部ネットワークへ向かう南北トラフィックに対して SNAT を実行し、外部ネットワークから戻ってくるトラフィックに対して DNAT を実行します。Floating IP は IPv6 には適用されません。

インスタンスから外網へ向かうパケットフローは例 1 と同じであるため、ここでは詳しく説明しません。唯一の違いは、SNAT の IP がルーターの IP ではなく Floating IP に置き換わっている点です。ここでは、外網から戻ってくるトラフィックについて紹介します。

  • インスタンスはコンピュートノード 1 上で動作し、セルフサービスネットワーク 1 を使用します
  • 外部ネットワークはパケットをインスタンスへ送信します。

外網からのパケットが network node に到達した後:

  • 物理ネットワーク設備 (1) は、パケットをプロバイダー物理ネットワークインターフェース (2) へ送信します。
  • プロバイダー物理ネットワークインターフェース (2) は、VLAN タグ 101 を削除した後、プロバイダーブリッジ上の VLAN サブインターフェースポート (3) へ送信します。
  • プロバイダーブリッジ (4) は、パケットをセルフサービスルーターのプロバイダーゲートウェイインターフェース (5) へ送信します。
    • IPv4 の場合、ルーターは DNAT を使用して宛先 IP をインスタンスの IP に変更した後、セルフサービスインターフェース (6) を介してパケットをセルフサービスネットワークへ送信します。
    • IPv6 の場合、ルーターはパケットをネクストホップ IP アドレス(通常はセルフサービスネットワークのゲートウェイ)へ送信し、これもセルフサービスインターフェース (6) を経由します。
  • ルーターはパケットをセルフサービスブリッジルーターインターフェース (7) へ送信します。
  • セルフサービスブリッジは、パケットを VXLAN インターフェース (8) へ送信し、パケットを VNI 101 にカプセル化します。
  • 物理ネットワークインターフェース (9) は、オーバーレイネットワーク (10) を介して VXLAN パケットをコンピュートノードへ送信します。

パケットが compute node に到達した後:

  • 物理ネットワークインターフェース (11) は、パケットを VXLAN インターフェース (12) へ送信し、VNI 101 をデカプセル化します。
  • セルフサービスブリッジ上の iptables (13) が、ファイアウォールとコネクショントラッキングを処理します。
  • セルフサービスブリッジのインスタンスポート (14) は、veth ペアを介してパケットをインスタンスのネットワークインターフェース (15) へ送信します。

以上が、Floating IP 使用時の戻りパケットのフローです。

東西トラフィック 1:同一ネットワーク内のインスタンス

  • インスタンス 1 はコンピュートノード 1 上にあり、セルフサービスネットワーク 1 を使用します。
  • インスタンス 2 はコンピュートノード 2 上にあり、セルフサービスネットワーク 1 を使用します。
  • インスタンス 1 がインスタンス 2 へパケットを送信します。

前述の状況は全く同じです。

  • インスタンスのネットワークインターフェース (1) は、veth ペア (2) を介してセルフサービスブリッジのインスタンスポートにパケットを送信します
  • セルフサービスブリッジ上の iptables (3) が、ファイアウォールとコネクション追跡を処理します
  • セルフサービスブリッジ上の VXLAN インターフェース (4) が、パケットを VNI 101 にカプセル化します
  • VXLAN インターフェースに対応する物理ネットワークインターフェース (5) は、オーバーレイネットワークを介してコンピュートノード 2 (6) へ送信します。

パケットが compute node 2 に到達した後:

  • 物理ネットワークインターフェース (7) はパケットを VXLAN インターフェース (8) へ送信し、VNI 101 を解除します。
  • セルフサービスブリッジ上の iptables (9) が、ファイアウォールとコネクショントラッキングを処理します。
  • セルフサービスブリッジのインスタンスポート (10) は、veth ペアを介してインスタンスのネットワークインターフェース (11) へパケットを送信します。

東西トラフィック 2:異なるネットワーク間のインスタンス

  • インスタンス 1 はコンピュートノード 1 上にあり、セルフサービスネットワーク 1 を使用します。
  • インスタンス 2 はコンピュートノード 1 上にあり、セルフサービスネットワーク 2 を使用します。
  • インスタンス 1 がインスタンス 2 へパケットを送信します。

最初にパケットが送信されるプロセスも同様です。

  • インスタンスのネットワークインターフェース (1) は、veth ペア (2) を介してセルフサービスブリッジのインスタンスポートにパケットを送信します
  • セルフサービスブリッジ上の iptables (3) が、ファイアウォールとコネクション追跡を処理します
  • セルフサービスブリッジ上の VXLAN インターフェース (4) が、パケットを VNI 101 にカプセル化します
  • VXLAN インターフェースに対応する物理ネットワークインターフェース (5) は、オーバーレイネットワークを介してコンピュートノード 2 (6) へ送信します。

パケットが network node に到達した後:

  • VXLAN インターフェースに対応する物理ネットワークインターフェース (7) は、パケットを VXLAN インターフェース (8) に送信し、VXLAN パケットをデカプセル化します
  • ルーターのセルフサービスブリッジインターフェース (9) は、セルフサービスルーターの名前空間内にあるセルフサービスネットワーク 1 インターフェース (10) へパケットを送信します。
  • ルーターは、セルフサービスネットワーク 2 インターフェース (11) を介して、セルフサービスネットワークのゲートウェイへパケットを送信します。
  • ルーターは、ルーターのセルフサービスネットワーク 2 ブリッジインターフェース (12) へパケットを送信します。
  • セルフサービスネットワーク 2 ブリッジは、パケットを VNI 102 でカプセル化し、VXLAN インターフェースへ送信します。
  • VXLAN インターフェースに対応する物理ネットワークインターフェース (14) は、オーバーレイネットワークを介してコンピュートノード 1 へパケットを送信します。

compute node 1 に戻ります:

  • 物理ネットワークインターフェース (16) はパケットを VXLAN インターフェース (17) へ送信し、VNI 102 を解除します。
  • セルフサービスブリッジ上の iptables (18) が、ファイアウォールとコネクショントラッキングを処理します。
  • セルフサービスブリッジのインスタンスポート (19) は、veth ペアを介してインスタンスのネットワークインターフェース (20) へパケットを送信します。

以上が、さまざまな状況下における Linux Bridge セルフサービスネットワークのパケットトラフィックです。

まとめ

本記事では、Linux Bridge セルフサービスネットワークにおけるアーキテクチャとパケットの流れについて紹介しました。ネットワークパケットがどのように流れるかを理解することで、ネットワークの疎通確認(デバッグ)を行う際により明確なイメージを持てるようになります。次回の記事では、Open vSwitch: Provider networks を使用したアーキテクチャとパケットの流れについて紹介します。


著作権表示:特に断りのない限り、本ブログのすべての記事はCC BY-NC-SA 4.0ライセンスの下で提供されています。

コメントを残す