ベアメタルからクラウドへ:OpenStack Neutron の紹介 — OVS プロバイダーネットワーク

從裸機到雲端:OpenStack Neutron 介紹 — OVS Provider Networks

前回の記事では、さまざまな状況下で Linux Bridge プラグインを使用した Neutron のアーキテクチャとフローについて紹介しました。これからの数日間は、OVS プラグインを使用した場合のアーキテクチャとトラフィックの流れについて紹介します。まず最初の記事として、Open vSwitch with Provider Network について解説します。

Open vSwitch: プロバイダーネットワーク

アーキテクチャ

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

この図は、単一の provider network (untagged/flat) において、compute node 内のコンポーネントがどのように接続されているかを示しています。この例では Instance と DHCP agent が同一ノード上にありますが、実際の環境では DHCP agent が他の compute node 上にある場合もあります。

複数の Provider networks が存在する状況では、各 provider network は同じ OVS provider bridge と integration bridge を使用しますが、異なる internal VLAN によって分離されます。Internal VLAN は通常、Neutron の network VLAN とは異なります。

トラフィックフロー

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

アーキテクチャ設定

以下は想定される構成です。VLANによって分離された2つのプロバイダーネットワークがあり、それぞれに1つのインスタンスが配置されています。

  • プロバイダーネットワーク 1 (VLAN)
    • VLAN ID 101 (タグ付き)
    • IP 地址範圍 203.0.113.0/24
    • Gateway (在實體的網路上)
      • IP 203.0.113.1
  • Provider network 2 (VLAN)
    • VLAN ID 102 (タグ付き)
    • IPアドレス範囲 192.0.2.0/24
    • Gateway
      • IP 192.0.2.1
  • インスタンス 1
    • IP 203.0.113.101
  • インスタンス 2
    • IP 192.0.2.101

南北トラフィック

  • Instance 在 compute node 1 上並且用 provider network 1
  • インスタンスが外部ネットワークへパケットを送信します

  • インスタンスのネットワークインターフェース (1) は、veth pair (2) を介してパケットを Linux bridge のインスタンスポートに送信します。
  • Linux bridge 上の iptables (3) が、ファイアウォールとコネクショントラッキングを処理します。
  • Linux bridge 上の OVS インターフェース (4) は、veth pair を介してパケットを OVS integration bridge のセキュリティグループインターフェース (5) に送信します。
  • OVS integration bridge は、パケットに内部 VLAN タグを付与します。
  • OVS integration bridge int-br-provider patch 介面 (6) 將封包送往 OVS provider bridge phy-br-provider patch 介面 (7)
  • OVS Provider bridgeは、内部VLANタグを実際のプロバイダーネットワークのVLANタグ101に変換します。
  • OVS Provider bridge 上的 provider network 介面 (8) 會將封包送往實體網路介面 (9)
  • 實體網路介面將封包送往實體網路設施中的交換器 (10)

後半部分は一般的なネットワークの仕組みと同様で、パケットはルーターに送られた後、外部へ送信されます。パケットの戻り(リターンパス)については、その逆のプロセスを辿ります。

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

  • Instance 1 在 compute node 1 上並且用 provider network 1
  • Instance 2 在 compute node 2 上並且用 provider network 1
  • インスタンス 1 がインスタンス 2 へパケットを送信します。

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

  • インスタンスのネットワークインターフェース (1) は、veth pair (2) を介してパケットを Linux bridge のインスタンスポートに送信します。
  • Linux bridge 上の iptables (3) が、ファイアウォールとコネクショントラッキングを処理します。
  • Linux bridge 上的 ovs 介面 (4) 透過 veth pair 將封包送往 OVS integration bridge security group 介面 (5)
  • OVS integration bridge は、パケットに内部 VLAN タグを付与します。
  • OVS integration bridge int-br-provider patch 介面 (6) 將封包送往 OVS provider bridge phy-br-provider patch 介面 (7)
  • OVS Provider bridgeは、内部VLANタグを実際のプロバイダーネットワークのVLANタグ101に変換します。
  • OVS Provider bridge 上的 provider network 介面 (8) 會將封包送往實體網路介面 (9)
  • 實體網路介面將封包送往實體網路設施中的交換器 (10)

実際のネットワークインフラストラクチャ内では:

  • 交換器將封包從 compute node 1 送往 compute node 2 (11)

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

  • 實體網路介面 (12) 將封包送往 OVS provider bridge 上的 provider network port (13)
  • 在 OVS provider bridge 的 phy-br-provider patch port (14) 將封包送往 OVS integration bridge 上的 int-br-provider patch port (15)
  • OVS integration bridge 將 VLAN tag 101 換成 internal VLAN tag
  • OVS integration bridge security group 介面 (16) 將封包送往 Linux bridge 上的 ovs 介面 (17)
  • 在 linux bridge 上 iptables (18) 會處理防火牆跟 connection tracking
  • linux bridge 的 instance port (19) 透過 veth pair 將封包送往Instance 的網路介面 (20)

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

  • Instance 1 在 compute node 1 上並且用 provider network 1
  • Instance 2 在 compute node 1 上並且用 provider network 2
  • インスタンス 1 がインスタンス 2 へパケットを送信します。

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

  • インスタンスのネットワークインターフェース (1) は、veth pair (2) を介してパケットを Linux bridge のインスタンスポートに送信します。
  • Linux bridge 上の iptables (3) が、ファイアウォールとコネクショントラッキングを処理します。
  • Linux bridge 上的 ovs 介面 (4) 透過 veth pair 將封包送往 OVS integration bridge security group 介面 (5)
  • OVS integration bridge は、パケットに内部 VLAN タグを付与します。
  • OVS integration bridge int-br-provider patch 介面 (6) 將封包送往 OVS provider bridge phy-br-provider patch 介面 (7)
  • OVS Provider bridgeは、内部VLANタグを実際のプロバイダーネットワークのVLANタグ101に変換します。
  • OVS Provider bridge 上的 provider network 介面 (8) 會將封包送往實體網路介面 (9)
  • 實體網路介面將封包送往實體網路設施中的交換器 (10)

実際のネットワークインフラストラクチャ内では:

  • スイッチはパケットから VLAN タグ 101 を削除し、ルーター (11) へ送信します。
  • ルーターはパケットをプロバイダーネットワーク 1 (12) からプロバイダーネットワーク 2 (13) へルーティングします。
  • ルーターはパケットをスイッチ (14) へ送信します。
  • スイッチはパケットから VLAN タグ 102 を削除し、コンピュートノード 1 (15) へ送信します。

compute node 1 に戻ります:

  • 物理ネットワークインターフェース (16) はパケットを OVS プロバイダーブリッジ上のプロバイダーネットワークポート (17) へ送信します。
  • OVS provider bridge の phy-br-provider パッチポート (18) は、パケットを OVS integration bridge 上の int-br-provider パッチポート (19) へ転送します。
  • OVS integration bridge は、VLAN タグ 102 を内部 VLAN タグに変換します。
  • OVS integration bridge のセキュリティグループインターフェース (20) が、パケットを Linux bridge 上の ovs インターフェース (21) へ送信します。
  • Linux bridge 上の iptables (22) が、ファイアウォールとコネクション追跡を処理します。
  • Linux bridge のインスタンスポート (23) は、veth ペアを介してパケットをインスタンスのネットワークインターフェース (24) へ送信します。

中間の物理ネットワーク機器におけるルーティングが異なる点を除けば、同一のプロバイダーネットワーク内の異なるインスタンスへ送信されるパケットフローと非常に似ていることがわかります。以上が、さまざまな状況下におけるOpen vSwitchプロバイダーネットワークのパケットフローです。

まとめ

本記事では、Open vSwitch – プロバイダーネットワークにおける構成とパケットフローについて紹介しました。全体的な概念はLinux Bridge – プロバイダーネットワークと非常によく似ていますが、中間にOVS integration/provider bridgeが追加されている点が異なります。次回の記事では、Open vSwitch – セルフサービスネットワークを使用した構成とパケットフローについて紹介します。


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

コメントを残す