Cisco ACI における基本的な Route Leak 設定パターン
Cisco ACI において、異なる VRF 間で Route Leak する設定方法をメモしておきます。
基本的な Route Leak 設定のパターン¶
VRF を超えて Route Leak させる場合、(vzAny などを考慮するパターンもありますが) 基本的には以下の組み合わせが考えられます。
No. | Provider | Consumer |
---|---|---|
1 | AppEpg | AppEpg |
2 | AppEpg | ExtEpg |
3 | ExtEpg | AppEpg |
4 | ExtEpg | ExtEpg |
図にすると下記の通りです。
設定のポイント¶
Contract の Scope
設定¶
Route Leak 設定を行う場合、どのパターンであっても Contract を利用することになります。 Contract には Scope
という概念があり、これは「Contract が作用する範囲」を意味しており、デフォルトでは VRF
Scope になっていると思われます。
意図しない副作用を招かない為にも「Scope
設定は最小範囲にしておくべき」ですが、Route Leak したい範囲が「同一 Tenant なのか?」「異なる Tenant なのか?」によって Scope
を適切に設定する必要があります。
No. | ケース | Contract の Scope 設定 |
---|---|---|
1 | 同一 Tenant の場合 | Tenant |
2 | 異なる Tenant の場合 | Global |
Provider 側の設定¶
Provider 側が「AppEpg なのか?」「ExtEpg なのか?」によって設定のポイントが異なります。
Provider 側 | 設定のポイント |
---|---|
AppEpg | BD だけでなく、AppEpg にも Subnet を設定する |
ExtEpg | Subnet を Shared Route Control Subnet で設定する |
往復のルーティングを考慮する¶
このメモでは単純に「Route Leak する」ことだけに主眼を置いています。 しかし、大部分の通信は「往復のルーティングが成立して初めて成立する」ものが多いと思いますので、「Provider → Consumer への片方向だけ Route Leak させる」だけでなく、必要に応じて「往復の、全体的なルーティングに問題無いように設計する」ことが重要です。
パターン 1 : AppEpg ─ AppEpg¶
設定のポイントは以下です。
- AppEpg にも Subnet を設定する
- AppEpg Subnet には
No Default SVI Gateway
チェックを入れる - AppEpg Subnet には
Shaed between VRFs
チェックを入れる
Provider 側になる AppEpg にも Subnet を作成するのがポイントです。 但し、BD Subnet とアドレスが重複してしまうと「同じ IP アドレスを持った SVI を重複して作成する」ことになってしまう為、Route Leak 用に作成する AppEpg の Subnet には No Default SVI Gateway
にチェックします。 また、AppEpg Subnet には「この経路が Route Leak 対象である」ことを示す為に Shared between VRFs
にチェックを入れます。
尚、Consumer 側には特別な設定は不要です。
パターン 2 : AppEpg ─ ExtEpg¶
Consumer 側が ExtEpg に変わっても、Provider 側 AppEpg の設定は ほぼ 変わりません。 但し、「Consumer 側の ExtEpg (L3Out) から、Leak された経路を広報するであろう」ことを考慮して一点、経路広報に関する設定差があります。
- AppEpg にも Subnet を設定する
- AppEpg Subnet には
No Default SVI Gateway
チェックを入れる - AppEpg Subnet には
Shared between VRFs
チェックを入れる - AppEpg Subnet に
Advertised Externally
チェックを入れる
Advertised Externally
が無くても Route Leak はするのですが、Leak された先の ExtEpg (L3Out) から経路を広報しません。 L3Out へ Leak した経路を「外部へ広報しない」というケースは、あまり考えられないと思いますので一般的には Advertised Externally
も設定するケースが殆どでは無いかと思われます。
( Consumer 側 ExtEpg では、特に何も設定することなく、Route Leak された経路が広報されます )
パターン 3 : ExtEpg ─ AppEpg¶
このパターンの設定は非常にシンプルです。
- Provider 側 ExtEpg Subnet には
Shared Route Control Subnet
チェックを入れる
尚、Consumer 側には特別な設定は不要です。 但し、Consumer 側 BD Subnet の経路が外部へ広報されていないとルーティング的に通信が成立しませんので、「ExtEpt → AppEpg へ Route Leak する」だけでなく、逆向きの「ExtEpg ← AppEpg へのルーティングも考慮する」必要があります (※ 他のパターンでも「往復のルーティング」はしっかり設計する必要があります)。
パターン 4 : ExtEpg ─ ExtEpg¶
このパターンは「L3Out で学習した経路を → 異なる L3Out から広報する」と言い換えることが出来ると思います。 このパターンの設定は非常に簡単で、ExtEpg Subnet を各々以下のように設定するだけです。
- Provider 側 ExtEpg Subnet には
Shared Route Control Subnet
チェックを入れる - Consumer 側 ExtEpg Subnet には
Export Route Control Subnet
チェックを入れる
Route Leak するだけであれば Consumer 側 ExtEpg Subnet の設定は不要です。 ですがパターン 2 同様、「Route Leak された先の L3Out から経路を広報しない」というのは考えづらい為、Consumer 側 ExtEpg Subnet には Export Route Control Subnet
チェックを入れて外部へ経路を広報します。