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






