4.7. VLAN プロバイダーネットワークのパケットフローが機能する仕組み
本項では、VLAN プロバイダーネットワークが設定された状況で、インスタンスに対するトラフィックがどのように送付されるかについて詳しく説明します。
VLAN プロバイダーネットワークでの送信トラフィックのフロー
以下の図で、インスタンスから送信され直接 VLAN プロバイダー外部ネットワークに到達するトラフィックのパケットフローについて説明します。この例では、2 つの VLAN ネットワーク (171 および 172) にアタッチされた 2 つのインスタンスを使用します。br-ex を設定した後に、物理インターフェイスをブリッジに追加してインスタンスを Compute ノードに作成すると、得られるインターフェイスとブリッジの設定は、以下の図のようになります。
![VLAN プロバイダーネットワークでのネットワークトラフィック - 送信](https://access.redhat.com/webassets/avalon/d/Red_Hat_OpenStack_Platform-16.2-Networking_Guide-ja-JP/images/cc390d3d97ea50f3a65244f58ec7a886/vlan-provider.jpg)
- インスタンスの eth0 インターフェイスから送信されたパケットは、インスタンスに接続された linux ブリッジ qbr-xx に到達します。
- qbr-xx は、veth ペア qvbxx <→ qvoxxx を使用して br-int に接続されます。
- qvbxx は linux ブリッジ qbr-xx に、qvoxx は Open vSwitch ブリッジ br-int に接続されています。
Linux ブリッジ上の qvb-xx の設定例
以下の例には、2 つのインスタンスおよびこれに対応する 2 つの linux ブリッジが表示されています。
# brctl show bridge name bridge id STP enabled interfaces qbr84878b78-63 8000.e6b3df9451e0 no qvb84878b78-63 tap84878b78-63 qbr86257b61-5d 8000.3a3c888eeae6 no qvb86257b61-5d tap86257b61-5d
br-int 上の qvoxx の設定
options: {peer=phy-br-ex} Port "qvo86257b61-5d" tag: 3 Interface "qvo86257b61-5d" Port "qvo84878b78-63" tag: 2 Interface "qvo84878b78-63"
-
qvoxx
には、VLAN プロバイダーネットワークが関連付けられた内部 VLAN のタグが付けられます。この例では、内部 VLAN タグ 2 には VLAN プロバイダーネットワークprovider-171
、VLAN タグ 3 には VLAN プロバイダーネットワークprovider-172
が関連付けられます。パケットが qvoxx に到達すると、この VLAN タグがパケットのヘッダーに追加されます。 -
パケットは次に、パッチピア
int-br-ex
<→phy-br-ex
を使用して br-ex OVS ブリッジに移動します。br-int 上のパッチピアの例を以下に示します。
Bridge br-int fail_mode: secure Port int-br-ex Interface int-br-ex type: patch options: {peer=phy-br-ex}
br-ex 上のパッチピアの設定例を以下に示します。
Bridge br-ex Port phy-br-ex Interface phy-br-ex type: patch options: {peer=int-br-ex} Port br-ex Interface br-ex type: internal
- このパケットが br-ex 上の phy-br-ex に到達すると、br-ex 内の OVS フローが内部 VLAN タグを VLAN プロバイダーネットワークに関連付けられた実際の VLAN タグに置き換えます。
以下のコマンドの出力では、phy-br-ex のポート番号は 4
となっています。
# ovs-ofctl show br-ex 4(phy-br-ex): addr:32:e7:a1:6b:90:3e config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max
以下のコマンドでは、VLAN タグ 2 (dl_vlan=2
) の付いた phy-br-ex (in_port=4
) に到達するパケットが表示されます。Open vSwitch は VLAN タグを 171 に置き換え (actions=mod_vlan_vid:171,NORMAL
)、パケットを物理インターフェイスに転送します。このコマンドでは、VLAN タグ 3 (dl_vlan=3
) の付いた phy-br-ex (in_port=4
) に到達するパケットも表示されます。Open vSwitch は VLAN タグを 172 に置き換え (actions=mod_vlan_vid:172,NORMAL
)、パケットを物理インターフェイスに転送します。neutron-openvswitch-agent は、これらのルールを追加します。
# ovs-ofctl dump-flows br-ex NXST_FLOW reply (xid=0x4): NXST_FLOW reply (xid=0x4): cookie=0x0, duration=6527.527s, table=0, n_packets=29211, n_bytes=2725576, idle_age=0, priority=1 actions=NORMAL cookie=0x0, duration=2939.172s, table=0, n_packets=117, n_bytes=8296, idle_age=58, priority=4,in_port=4,dl_vlan=3 actions=mod_vlan_vid:172,NORMAL cookie=0x0, duration=6111.389s, table=0, n_packets=145, n_bytes=9368, idle_age=98, priority=4,in_port=4,dl_vlan=2 actions=mod_vlan_vid:171,NORMAL cookie=0x0, duration=6526.675s, table=0, n_packets=82, n_bytes=6700, idle_age=2462, priority=2,in_port=4 actions=drop
- このパケットは、次に物理インターフェイス eth1 に転送されます。
VLAN プロバイダーネットワークでの受信トラフィックのフロー
以下のフローは、プロバイダーネットワーク provider-171 に VLAN タグ 2 を使用し、プロバイダーネットワーク provider-172 に VLAN タグ 3 を使用して、Compute ノードでテストを行った際の例です。フローは、統合ブリッジ br-int のポート 18 を使用します。
実際の VLAN プロバイダーネットワークでは、異なる設定が必要な場合があります。また、ネットワークの設定要件は、2 つの別個の Compute ノード間で異なる場合があります。
以下のコマンドの出力には、ポート番号 18 を使用する int-br-ex が表示されます。
# ovs-ofctl show br-int 18(int-br-ex): addr:fe:b7:cb:03:c5:c1 config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max
以下のコマンドの出力には、br-int のフローのルールが表示されます。
# ovs-ofctl dump-flows br-int NXST_FLOW reply (xid=0x4): cookie=0x0, duration=6770.572s, table=0, n_packets=1239, n_bytes=127795, idle_age=106, priority=1 actions=NORMAL cookie=0x0, duration=3181.679s, table=0, n_packets=2605, n_bytes=246456, idle_age=0, priority=3,in_port=18,dl_vlan=172 actions=mod_vlan_vid:3,NORMAL cookie=0x0, duration=6353.898s, table=0, n_packets=5077, n_bytes=482582, idle_age=0, priority=3,in_port=18,dl_vlan=171 actions=mod_vlan_vid:2,NORMAL cookie=0x0, duration=6769.391s, table=0, n_packets=22301, n_bytes=2013101, idle_age=0, priority=2,in_port=18 actions=drop cookie=0x0, duration=6770.463s, table=23, n_packets=0, n_bytes=0, idle_age=6770, priority=0 actions=drop
受信フローの例
ここでは、以下の br-int OVS フローの例を示しています。
cookie=0x0, duration=3181.679s, table=0, n_packets=2605, n_bytes=246456, idle_age=0, priority=3,in_port=18,dl_vlan=172 actions=mod_vlan_vid:3,NORMAL
- VLAN タグ 172 の付いた外部ネットワークからのパケットが、物理ノード上の eth1 から br-ex ブリッジに到達します。
-
このパケットは、パッチピア
phy-br-ex <-> int-br-ex
を通じて br-int に移動します。 -
パケットは、フローの条件 (
in_port=18,dl_vlan=172
) を満たします。 -
フローのアクション (
actions=mod_vlan_vid:3,NORMAL
) は VLAN タグ 172 を内部 VLAN タグ 3 に置き換え、通常のレイヤー 2 処理でパケットをインスタンスに転送します。