Skip to content

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

図にすると下記の通りです。

file

設定のポイント

Contract の Scope 設定

Route Leak 設定を行う場合、どのパターンであっても Contract を利用することになります。 Contract には Scope という概念があり、これは「Contract が作用する範囲」を意味しており、デフォルトでは VRF Scope になっていると思われます。

file

意図しない副作用を招かない為にも「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 にチェックを入れます。

file

尚、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 チェックを入れる

file

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 チェックを入れる

file

尚、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 チェックを入れる

file

Route Leak するだけであれば Consumer 側 ExtEpg Subnet の設定は不要です。 ですがパターン 2 同様、「Route Leak された先の L3Out から経路を広報しない」というのは考えづらい為、Consumer 側 ExtEpg Subnet には Export Route Control Subnet チェックを入れて外部へ経路を広報します。