※ 当該記事は ACI version 6.0(7e) をベースに作成しています。
■はじめに
Cisco ACI の Service Graph PBR (Policy Base Redirect) ファイアウォールやロードバランサ―などの L4-L7装置への通信の捻じ曲げを簡単に実装する機能です。具体的にはContractを使用して特定のEPG間の通信や特定のサービスのみFWやADCを経由するようにリダイレクトする処理を行います。
尚、以前は Managed mode と Unmanaged mode の2通りをサポートしていましたが、バージョン 5.2(1) 以降 Managed mode のサポートは終了しております。従って、本記事では Unmanaged Mode での設定方法をご紹介する形となります。
※ Managed mode:L4-L7サービスノードに Device Packege をインストールし、APICと連携して使用するモード。
■全体の流れ
ACIにおける Service Graph PBR を構成する際に必要となる項目は以下のとおりです。
■ACI + ASAv (PBR) の事前構成
ACI + ASAv (PBR) を構成するテナントでは、以下の構成が準備されている必要があります。IPアドレスや命名は本ページにおける説明例となっていますので、環境に合わせて適宜読み替えてください。
-
VRF - VRF
-
BD1 - Gateway 192.168.1.254/24
-
BD2 - Gateway 192.168.2.254/24
-
BD100 - Gateway 192.168.100.254/24 ※紐付くEPGの構成などは不要
-
BD200 - Gateway 192.168.200.254/24 ※紐付くEPGの構成などは不要
-
EPG1 → BD1を使用、サービスを「利用」する側のエンドポイントを接続
-
EPG2 → BD2を使用、サービスを「提供」する側のエンドポイントを接続
-
Contract - PBR_Con → EPG1側ではConsumed Contractとして構成、EPG2側ではProvided Contractとして構成
※少なくともDestinationとしてHTTP通信を許可するFilterが含まれる必要があります。Firewall動作を確認するためにICMPなども含めると確認がし易くなります。

※ Shadow EPG はシステム側で自動生成されるため、手動で作成する必要はありません。
■L4-L7 Deviceの構成
まず、L4-L7 Deviceの定義を行います。Tenants > Services > L4-L7 > Devices を右クリックし、"Create L4-L7 Devices"を選択し、General の項目を以下のように設定します。
Name: 任意のデバイス名
Service Type: Firewall or ADC
Device Type: PHYSICAL or VIRTUAL
※ サービスノードが仮想アプライアンス 且つ VMM連携を行っている場合は VIRTUAL を選択します。サービスノードが仮想アプライアンスであっても、VMM連携を行っていない場合は PHYSICAL を選択します。
Physical Domain: 関連付ける Physical Domain を選択 (Device Type で VIRTUAL を選択した場合は VMM Domain の選択項目が表示されます)
Context Aware: Multiple or Single
Function Type: Go Through, Go To, L1, L2 から選択。※ 今回はASAvでルーティングするため Go To を選択。
続いて、画面右側の Devices の"+"ボタンをクリックしてConcrete Device / Interface を追加します。

provider
任意の Concrete Device 名を入力し、"+"ボタンを押して consumer側 / provider側 のインタフェースを追加します。
今回の例では以下のように接続されています。
consumer側: Leaf201 eth 1/15 --- ASAv Gi 0/0
provider側: Leaf202 eth 1/15 --- ASAv Gi 0/1

Create L4-L7 Devices の画面に戻り、画面右下の Cluster Interface の"+"を押して Cluster Interface 設定を行います。
■Service Graph Templateの構成
続いて、Service Graph Template を構成します。
Tenants > Services > L4-L7 > Service Graph Template を右クリックし、新規作成します。左側に先程設定した Device が表示されるため、ドラッグ&ドロップして Consumer と Provider の間に入れ込みます。
任意の Service Graph Template 名を入力します。
今回は ASAv をルーテッドモードで挿入し、PBRを行うため、"Routed" を選択して "Route Redirect" にチェックを入れます。

■Service Graph Template の適用
次に、Serbice Graph Template を適用します。これにより、Contractにおいて許可されているFilterルールにマッチする通信にService Graphによって定義されているL4-L7 PBRが適用されるようになります。
先程作成した Service Graph Template を右クリックし、"Apply Service Graph Templates" を選択します。
consumer側 / provider側 の EPG をそれぞれプルダウンから選択し、Contract Information で consumer - provider間で既に設定済みのContractを紐づけます(このタイミングで新規に作成する場合は "New Contract" を選択)

次に、PBRに関連する情報を設定します。

Redirect Policy のプルダウンから "Create L4-L7 Policy Redirect" を選択し、Redirect Policy を新規作成します。
Redirect Policy では、リダイレクト先となる ASAv の IP/MAC を指定します。

以上で L4-L7 Service Graph PBR の設定は完了です。
■ASA側の設定
// インターフェース設定
natakesh-asav# show run int gi 0/0
!
interface GigabitEthernet0/0
nameif externalif
security-level 50
ip address 192.168.100.1 255.255.255.0
natakesh-asav#
natakesh-asav#
natakesh-asav# show run int gi 0/1
!
interface GigabitEthernet0/1
nameif internalif
security-level 100
ip address 192.168.200.1 255.255.255.0
natakesh-asav#
natakesh-asav#
// アクセスリスト設定
natakesh-asav# show run | inc access-
access-list AccessList-inbound extended permit tcp any any eq www
access-group AccessList-inbound in interface externalif
natakesh-asav#
natakesh-asav#
// スタティックルーティング設定
natakesh-asav# show run | inc route
route externalif 192.168.1.0 255.255.255.0 192.168.100.254 1
route internalif 192.168.2.0 255.255.255.0 192.168.200.254 1
natakesh-asav#
natakesh-asav#