ACI 連携された VMware 分散仮想スイッチ(vDS)と Trunk Port Group
ACI では vCenter と API を通じて連携することにより、vCenter サーバおよび ESXi ホスト側に一切の追加のモジュールやエージェント等を導入することなく ACI ファブリックと分散仮想スイッチ(vDS)を連携させて使用することができます。ACI と vDS を連携させた場合、ACI 側から EPG に紐付いた Port Group を vDS 側に構成することができますが、2.1 (Crystal) 以前のリリースでは、EPG 毎に Port Group を作成することしかできなかったため、ゲスト OS 側で Tag VLAN を構成して使用するための Trunk Port Group を使用することができませんでした。2.1からは、Trunk Port Group の利用がサポートされました。これにより、たとえば下図のように ASAv などの仮想アプライアンスで VLAN サブインターフェイスを構成して利用することができるようになります。
この構成は、Service Graph を用いた L4-7連携を使用する場合にも、特に連携を構成せずに使用する場合でも、どちらの場合に対しても使用することが可能です。
Trunk Port Group を利用した場合、EPG に対して VMM Domain を割り当てても紐付いた Port Group は作成されませんが、仮想マシンは VLAN ID に基いて適切な EPG にマッピングされます。下記の例では、"ASA-internal" と "ASA-external" の2つの EPG が Trunk Port Group に紐付いた EPG となりますが、Trunk Port Group かどうかは EPG としての管理性における違いは一切違いはありません。
Trunk Port Group の範囲ととして扱う VLAN は、静的にも動的にも割り当てることが可能です。いずれの場合も、VMM Domain に対して紐付いた VLAN Pool に使用する VLAN 範囲が含まれている必要があります。VLAN Pool 自体が Dynamic Allocation として構成されている場合であっても、VLAN 範囲を Static Allocation として構成することが可能です。
Trunk Port Group の構成
Trunk Port Group は、vCenter と連携構成済の VMM Domain において、[Create Trunk Port Group] 操作を行い作成します。Trunk VLAN として使用する最小限の VLAN 範囲を指定するようにして下さい。
これにより、vCenter を通じてvDS に指定した名前の Trunk Port Group が作成されます。
Trunk Port Group と EPGのマッピング
Trunk Port Group と EPG をマッピングする場合も VMM Domain を使用しますが、Trunk 範囲の特定の VLAN を EPG と紐付けたい場合は、以下のように [VLAN Mode] で "Static" を選択し、使用する VLAN を指定します。
適切に意図した Trunk Port Group と EPG がマッピングされているかどうか確認したい場合は、下図のように APIC 側の [VM Networking] 画面において確認することが可能です。
EPG 側の [Operational] タブ - [Client End-Points] 画面で確認できる情報は、Static Allocation の場合でも違いはありませんが、Encap の項目において指定した VLAN ID が使用されていることを確認できます。
Trunk Port Group 仕様における制約事項とワークアラウンド
ACI 連携された vDS で Trunk Port Group を使用する場合、同一 ESXi ホスト上で通常の Port Group とマッピングされた EPG (=Access Port) と Trunk Port Group とマッピングされた EPG (=Trunk Port) で同じ VLAN を使用することはできません。
これは、vDS が MAC アドレスを動的には学習しないために発生します。ACI では VLAN ID と IP サブネット範囲が異なることは問題ありませんが、同一 ESXi ホスト内で折り返してしまう通信が発生した場合、受信側仮想マシンのゲスト OS では VLAN ID が異なっているために破棄してしまいます。
この問題を回避するためには、以下のいずれかの対応が必要となります。
- Trunk Port Group の VLAN 範囲と重複する VLAN を他の EPG で使用しない
- 送信元と送信先を別の ESXi ホストに配置する
- 送信元と送信先を異なるサブネットに配置する
(1) Trunk Port Group の VLAN 範囲と重複する VLAN を他の EPG で使用しない
送信元 Port Group の VLAN が Trunk Port Group の Trunk VLAN 範囲と重複していなければ、通信は Leaf スイッチを経由することになるため、Leaf スイッチによって正しい VLAN ID に変換されます。
(2) 送信元と送信先を別の ESXi ホストに配置する
送信元と送信先が別の ESXi ホスト上に配置されている場合、通信は Leaf スイッチを経由することになるため、Leaf スイッチによって正しい VLAN ID に変換されます。
(3) 送信元と送信先を別のサブネットに配置する
送信元と送信先が別のサブネットに接続されている場合、通信は Leaf スイッチを経由することになるため、Leaf スイッチによって正しい VLAN ID に変換されます。
Trunk Port Group + Service Graph
Trunk Port Group は、Service Graph を用いた L4-7デバイス連携構成においても利用することが可能です。Service Graph としては、Device Package を利用する Managed Mode でも、利用しない Unmanaged Mode でも利用できますが、いずれの場合も仮想アプライアンスが VLAN サブインターフェイスに対応している必要があります。合わせて、Device Pakage を利用する場合には、Device Package 側が Trunk Port の利用に対応している必要があります。
一切連携しない構成と Unmanaged Mode の違いは、使用する VLANをDynamic に割り当てるか Static に割り当てるかの違いとなります。Managed Mode / Unmanaged Mode の違いに関わらず、Service Graph 連携を用いる場合には EPG に対する VLAN のマッピングは Dynamic となります。
たとえば下図のように VMM Domain に対して紐付いた VLAN Pool で Dynamic Allocation の VLAN 範囲と Static Allocation のVLAN 範囲が両方構成されていた場合、Service Graph 連携では Dynamic Allocation の範囲の VLAN が使用されます。
また、Trunk Port Group の構成は、使用する L4-7連携対象の動作仕様に合わせて適切に構成されている必要があります。VMM Domain の VLAN Pool における Dynamic Allocation の VLAN 範囲に、Trunk Port Group の VLAN 範囲が含まれていることを確認して下さい。
Device Package の使用有無にかかわらず、Trunk Port Group を使用するかどうかは、Tenant における [L4-L7 Devices] における L4-7の登録構成によって決まります。
ただし、Device Package 連携で Trunk Port Group を使用する場合には、Device Package によって VLAN サブインターフェイスの構成をサポートしている必要があります。