Cisco Nexus(NX-OS)で新たに実装されたVXLAN GPO(Group Policy Option)でNX-OSでもACIと同様のマイクロセグメンテーションを実現可能になりました。
目次
1. はじめに
今回はCisco Nexus(NX-OS)シリーズスイッチで実装されているVXLAN GPO(Group Policy Option。以下「GPO」とする)についてご紹介いたします。
マイクロセグメンテーション機能に関しては、同じNexus 9000シリーズスイッチのハードウェアをベースとしたSDNソリューションであるCisco ACIで先行して利用が可能でしたが、長らくNX-OSで同様の機能は実装されていませんでした。
しかしNX-OS version 10.4(3)Fから新しくVXLAN GPOと呼ばれる機能が実装されました。
このVXLAN GPOにより、ACIと同様のマイクロセグメンテーション機能の利用が可能となりました。
2. VXLAN GPO概要
本題に入る前にVXLAN GPO機能をご存じでない方に向けて簡単にVXLAN GPOについてご説明いたします。
VXLAN GPOとは、ポリシー制御を可能にするためにVXLANヘッダーにタグ情報を追加した、後方互換性のあるVXLAN拡張機能です。
NX-OSではこのVXLAN GPOによってマイクロセグメンテーションを実現します。
図1の通り、VXLAN GPOでは標準VXLANヘッダーでReservedフィールドになっている部分にGroup Policy IDをセットすることでマイクロセグメンテーションを実現しています。
図1:VXLAN and VXLAN GBP Header
引用:Securing Data Centers with Microsegmentation using VXLAN GPO
以降の項目でVXLAN GPOを構成する要素についてご説明いたします。
2-1. Security Group
Security Group(以下「SG」とする)は様々なエンドポイントや外部プレフィックスを含む論理グループです。
VXLAN GPOではこのSG単位で通信の制御が実施されます。
各SGはSelectorと呼ばれるどのエンドポイントがどのSecurity Groupに所属するかを分類するための条件値があります。
以下の画像であればSecurity Group:Web_Appがあり、そこでSelectorとして4つのホストアドレスが指定されています。
この場合この4つのエンドポイントはSecurity Group:Web_Appとして分類されることになります。
また各SGにはSGの識別子としてSecurity Group Tag(以下「SGT」とする)が割り当てられ、後述するSecurity ContractではこのSGTを用いてルールを定義します。
前述の拡張VXLANヘッダーのGroup Policy IDにセットされる値もこのSGTの値となります。
図2:Host-Centric Approach for Security Group classification
引用:Securing Data Centers with Microsegmentation using VXLAN GPO
2-2. Security Contract
Security ContractもしくはSGACL(以降Security Contractで表現を統一)は2つのSG間の通信ルールを定義するポリシーです。
Security Contractは従来のACLと同様に通信ルールを定義するものになりますが、適用する単位がSGである点とTraffic selectorおよびDirectionと呼ばれるパラメーターが存在する点が大きな違いとなります。
1点目のTraffic SelectorはSecurity Contractで制御するトラフィック種別を定義するポリシーです。
以下の画像だとhttpsの部分で、SG間のどのようなトラフィックを制御対象とするかを指定します。
またTraffic Selectorは独立した構成要素であるため、一度作成したTraffic Selectorを別のSG間のSecurity Contractに再利用することも可能です。
2点目のDirectionは通信ルールの適用方向を定義します。
TCPのように戻りのトラフィックが発生する通信では戻りの通信も許可する必要がありますが、以下の画像のようにDirectionでBidirを指定すると戻りのトラフィックを許可するためのルールが自動で作成されます。
図3:VXLAN GPO Bidirectional Permit contract
引用:Securing Data Centers with Microsegmentation using VXLAN GPO
2-3. VRF Enforcement Mode
VRF Enforcement ModeはVXLAN GPOで制御を実施するVRFのデフォルトの挙動を定義します。
VXLAN GPOでは以下の2つの方式から選択することが可能です。
・Default-Permit
Default-Permitは名前の通りデフォルトで全てのSG間の通信を許可するモードで、SG間の通信を拒否したい場合はSecurity Contractで拒否する通信を定義します。
いわゆるブラックリスト方式の挙動になります。
図4:VXLAN GPO VRF Default-Permit mode
引用:Securing Data Centers with Microsegmentation using VXLAN GPO
・Default-Deny
Default-Denyは名前の通りデフォルトで全てのSG間の通信を拒否するモードで、SG間の通信を許可したい場合はSecurity Contractで許可する通信を定義します。
いわゆるホワイトリスト方式の挙動になります。
図5:VXLAN GPO VRF Default-Deny mode
引用:Securing Data Centers with Microsegmentation using VXLAN GPO
3. VXLAN GPOによるマイクロセグメンテーション
ここまでで大まかにVXLAN GPOの概要についてご説明いたしました。
以降は実際にVXLAN GPOでマイクロセグメンテーションが可能か確認してみます。
下記のパターンでそれぞれHTTP,ICMPによる通信確認を実施します。
パターン1:client1 → web2(別セグメント)
パターン2:client1 → web1(同一セグメント)
図6:物理構成図
今回の最終的なSGの構成イメージは下記の通りです。
上記物理構成図でclientの名前がついているホストはSG client、webの名前がついているホストはSG webに分類します。
VRFはDefault Deny、SG clientからSG webに対して許可する通信はHTTPのみとします。
図7:SG構成図
※VXLAN GPOを設定する上で事前準備/操作がいくつか必要ですが、今回の記事では省略しています。
※VXLAN GPO以外のVXLANなどの設定についても省略しています。
3-1. Security Group作成
通信制御の単位であるSGを作成します。
SGで使用するSGTとSG名を指定します。
SGに分類するためのSelectorをmatchで指定します。
今回はホストアドレスで指定しています。
※同様の設定をSG web用にも実施しています。
3-2. Security Class-Map作成
Security Contractで制御を行うトラフィックを識別するためのClass-Mapを作成します。
![]()
該当Class-mapとして識別されるTraffic Selectorをmatchで指定します。
3-3. Security Policy-Map作成
Security Group間の通信を制御するためのSecurity Contractを作成します。
![]()
トラフィックを識別するために使用するClass-mapを指定します。
該当Class-mapにmatchするトラフィックに対するアクションを指定します。
![]()
3-4. Security Contract作成
作成したSecurity ContractをSG間に適用します。
VRF配下に移動します。
![]()
VRFで使用するデフォルトルール(Default-Permit or Deny)を指定します。
デフォルトルールに対してもSGTの割り当てが必要です。
![]()
SG 100(client)からSG 200(web)に対してHTTPのみを許可するSecurity Contractを適用します。
bidirオプションを付けることで戻りのトラフィックが自動で許可されます。
3-5. VXLAN GPOによるマイクロセグメンテーションの確認
以上でVXLAN GPOの設定は完了です。
それでは実際にVXLAN GPOによるマイクロセグメンテーションで通信制御ができているのかを確認します。
3-5-1. SG間の通信制御(別セグメント)
client1からweb2へ通信確認します。
図8:client1からweb2への通信確認イメージ
Security Contractで許可しているためclient1からweb2へのHTTP通信は問題なく疎通ができていることが確認できます。

Security Contractで許可していないためclient1からweb2へのICMP通信は疎通ができないことが確認できます。

3-5-2. SG間の通信制御(同一セグメント)
client1からweb1へ通信確認します。
図9:client1からweb1への通信確認イメージ
Security Contractで許可しているためclient1からweb1へのHTTP通信は問題なく疎通ができていることが確認できます。
Security Contractで許可していないためclient1からweb1へのICMP通信は疎通ができないことが確認できます。

以上の結果から各エンドポイントが所属しているセグメントに関わらず、VXLAN GPOで定義した通信ルールで通信が制御できていることが確認できました。
4. まとめ
今回はVXLAN GPOについてご紹介いたしました。
VXLAN GPOの登場によりNX-OSでもACIと同様に柔軟にエンドポイントをグルーピングして、マイクロセグメンテーションによる通信制御を実現することが可能になりました。
ただし、VXLAN GPOは比較的新しく実装された機能であるため先行して実装しているACIと比べると、まだ機能的に足りない部分も多々あります。
しかし最新バージョンでACIとNexusをポリシーベースで相互接続することが可能になっている点や、既に判明しているロードマップ情報からマイクロセグメンテーションという観点での差は徐々に小さくなっていくものと推測しています。
これを機にCisco Nexusシリーズにご興味を持っていただければ幸いです。
※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。



