ポリシーベース ルーティングについて
ここでは、次の内容について説明します。
• 「PBR について」
• 「PBR の使用」
PBR は、トラフィック フローに関するポリシーを定義し、ルーティング プロトコルから派生したルートへの依存度を軽減することによって、パケット ルーティングを柔軟に行えるようにします。PBR は、ルーティング プロトコルで提供される既存のメカニズムを拡張および補完することにより、ルーティングの制御を強化します。PBR を使用すれば、高コスト リンク上のプライオリティ トラフィックなど、特定のトラフィックのパスを指定することができます。
設定したポリシーに基づいてパケットをルーティングする方法として、PBR を設定できます。たとえば、特定のエンド システムの ID またはアプリケーション プロトコルに基づいてパスを許可または拒否するルーティング ポリシーを実装することができます。
PBR を使用すると、次の作業を実行できます。
• 拡張アクセス リスト基準に基づいたトラフィックの分類。リストにアクセスし、一致基準を設定します。
• 特定のトラフィック処理が行われたパスへのパケットのルーティング。
ポリシーは、IP アドレス、ポート番号、またはプロトコルをベースとします。単純なポリシーの場合はこれらの記述子のいずれかを使用し、複雑なポリシーの場合はこれらのすべてを使用します。
PBR について
PBR がイネーブルのインターフェイスで受信されたすべてのパケットは、ルート マップという拡張パケット フィルタを通過します。PBR で使用するルート マップはポリシーを要求し、パケットの転送先を判断します。
ルート マップは、許可または拒否としてマークできる文で構成されます。これは、次の方法で解釈されます。
• 文が deny とマークされている場合、一致基準に合致したパケットは通常転送チャネルを使用して送り返され、宛先ベースのルーティングを実行します。
• 文が permit とマークされていてパケットがアクセス リストと一致している場合、最初の有効な set 句がそのパケットに適用されます。
これについては、「ルート マップについて」で詳しく説明します。
PBR を着信インターフェイス(パケットを受信するインターフェイス)に指定できますが、発信インターフェイスには指定できません。
ルート マップについて
PBR は、着信インターフェイス上でルート マップを適用することによって実装されます。インターフェイスごとに 1 つずつのルート マップを設定することができます。
ルート マップは、グローバル コンフィギュレーション パーサー モードで設定されます。その後で、1 つ以上のインターフェイスにこのルート マップを(インターフェイス コンフィギュレーション パーサー サブモードで)適用することができます。
ルート マップは、1 つ以上のルート マップ文で構成されます。文ごとに、シーケンス番号と permit 句または deny 句が付加されます。
各ルート マップ文には、match コマンドと set コマンドが含まれています。match コマンドは、パケット データに適用される一致基準を示します。set コマンドは、パケットに対して実行される PBR アクションを示します。
次に、rm-test という名前の 1 つのルート マップと 6 つのルート マップ文の例を示します。
route-map rm-test permit 21
route-map rm-test permit 22
route-map rm-test permit 23
match ip address 101 2102
route-map rm-test deny 24
route-map rm-test deny 25
route-map rm-test permit 26
数字の 21、22、... 26 は、ルート マップ文のシーケンス番号です。
ここでは、次の内容について説明します。
• 「PBR ルート マップ処理ロジック」
• 「再帰ネクストホップによるロード バランシング」
• 「PBR ルート マップ処理ロジックの例」
PBR ルート マップ処理ロジック
パケットがルート マップで設定されたインターフェイスに到着すると、転送ロジックがシーケンス番号順にそれぞれのルート マップ文を処理します。
出現したルート マップ文が route-map... permit 文の場合:
• パケットが match コマンド内の基準と照合されます。このコマンドは、1 つ以上の permit 式または deny 式を含めることが可能な ACL を参照することができます。パケットが ACL 内の式と照合され、許可/拒否の決定が下されます。
• 下された決定が許可の場合は、PBR ロジックがパケット上の set コマンドで指定されたアクションを実行します。
• 下された決定が拒否の場合は、PBR アクション(set コマンドで指定された)が適用されません。代わりに、処理ロジックが、シーケンス内の次のルート マップ文(シーケンス番号が次に高い文)に移動します。次の文が存在しない場合は、PBR 処理が終了し、パケットがデフォルトの IP ルーティング テーブルを使用してルーティングされます。
出現したルート マップ文が route-map... deny 文の場合:
• パケットが match コマンドで指定された基準と照合されます。このコマンドは、1 つ以上の permit 式または deny 式を含めることが可能な ACL を参照することができます。パケットが ACL 内の式と照合され、許可/拒否の決定が下されます。
• 基準の決定が許可の場合は、PBR 処理が終了し、パケットがデフォルトの IP ルーティング テーブルを使用してルーティングされます。
• 基準の決定が拒否の場合は、PBR 処理ロジックがシーケンス内の次のルート マップ文(シーケンス番号が次に高い文)に移動します。次の文が存在しない場合は、PBR 処理が終了し、パケットがデフォルトの IP ルーティング テーブルを使用してルーティングされます。
(注) set コマンドは、route-map... deny 文内部に影響しません。
ルート マップ文は次のプライオリティで適用される複数の set コマンドを持つことができます。
set ip next-hop
set ip next-hop recursive
set interface
set default ip next-hop
set default interface
set ip next-hop と set ip next-hop recursive コマンドの両方が同じルート マップ文に存在する場合は、next-hop set コマンドが適用されます。
set ip next-hop コマンドを使用できない場合は、set ip next-hop recursive コマンドが適用されます。
set ip recursive-next-hop と set interface コマンドがない場合、パケットはドロップされなければデフォルトのルーティング テーブルを使用してルーティングされます。パケットがドロップされる必要がある場合は、set interface null0 configuration コマンドが後に続く set next-hop recursive コマンドを使用します。
再帰ネクストホップによるロード バランシング
サブネットへの複数の等コスト ルートが set ip next-hop recursive コマンドによって設定されている場合は、ロード バランシングはルートへのすべての隣接関係が解決された場合にだけ行われます。いずれかの隣接関係が解決されていなければ、ロード バランシングは行われず、隣接関係が解決されたルートのうち 1 つだけが使用されます。隣接関係がいずれも解決しない場合は、パケットはソフトウェアで処理され、少なくとも 1 つの隣接関係がハードウェアで解決およびプログラムされます。PBR は、ルーティング プロトコルまたはその他の手段に依存して、すべての隣接関係を解決し、ロード バランシングを行わせます。
PBR ルート マップ処理ロジックの例
次のように定義された rm-test という名前のルート マップを取り上げます。
access-list 101 permit tcp host 61.1.1.1 host 133.3.3.1 eq 101
access-list 102 deny tcp host 61.1.1.1 host 133.3.3.1 eq 102
access-list 2102 permit tcp host 61.1.1.1 host 133.3.3.1 eq 102
access-list 104 deny tcp host 61.1.1.1 host 133.3.3.1 eq 104
access-list 2104 permit tcp host 61.1.1.1 host 133.3.3.1 eq 104
access-list 105 permit tcp host 61.1.1.1 host 133.3.3.1 eq 105
route-map rm-test permit 21
route-map rm-test permit 22
route-map rm-test permit 23
match ip address 101 2102
route-map rm-test deny 24
!
route-map rm-test deny 25
route-map rm-test permit 26
• 宛先ポートが 101 で 61.1.1.1 から 133.3.3.1 に転送される TCP パケット
– シーケンス番号 21 の ACL 101 と一致します。
– PBR がネクストホップ 21.1.1.1 経由でスイッチされます。
(注) ACL 101 は、シーケンス番号 23 とも一致しますが、処理がその時点まで到達しません。
• 宛先ポートが 102 で 61.1.1.1 から 133.3.3.1 に転送される TCP パケット
– シーケンス番号 21 で、ACL 101 アクションがこのパケットを拒否します(理由は、すべての ACL に黙示的拒否が含まれているためです)。処理がシーケンス番号 22 に進みます。
– シーケンス番号 22 で、ACL 102 が TCP ポート 102 と一致しますが、ACL アクションは拒否です。処理がシーケンス番号 23 に進みます。
– シーケンス番号 23 で、ACL 2102 が TCP ポート 102 と一致しますが、ACL アクションは許可です。
– パケットが出力インターフェイス VLAN 23 にスイッチされます。
• 宛先ポートが 105 で 61.1.1.1 から 133.3.3.1 に転送される TCP パケット
– 処理が、シーケンス番号 21 からシーケンス番号 24 に移動します。これは、これらのシーケンス番号内の ACL にポート 105 に対する拒否アクションが含まれているためです。
– シーケンス番号 25 で、ACL 105 に TCP ポート 105 に対する許可アクションが含まれています。
– ルート マップの拒否が実行され、パケットがデフォルトの IP ルーティング テーブルを使用してルーティングされます。
Catalyst 4500 シリーズ スイッチは、ルート マップの一致基準内の ACL で記述された一連のパケットと一致する TCAM 内のエントリをインストールすることによって、ルート マップ アクションとパケットを照合します。これらの TCAM エントリは、ハードウェアがそのアクションをサポートしない、またはハードウェアのリソースが消費されている場合に、必要な出力アクションを実行するか、または、パケットをソフトウェアに転送する隣接関係を示します。
ルート マップで set interface ... アクションが指定されている場合は、match 文と一致するパケットがソフトウェアでルーティングされます。同様に、ルート マップで set default interface ... アクションが指定されており、一致するパケットの IP ルートが存在しない場合は、パケットがソフトウェアでルーティングされます。
(注) TCAM サイズとハードウェアにプログラミングする前に ACL をフラットにするために CPU に必要な時間とでハードウェア ベース PBR のスケールは決定されます。後者は PBR ポリシーに相当数のクラス マップが必要な場合に著しく増加します。たとえば、1,200 のクラス マップの PBR ポリシーにはハードウェアにプログラミングする前に「フラット化」の時間が 60 ~ 90 分必要になることがあります。このプロセスは、隣接関係の変更で PBR の再プログラミングが必要な場合に繰り返すことがあります。
PBR の使用
PBR で特定のパケットのルーティング パスを IP ルーティングによって選択されるデフォルト パスから変更することができます。たとえば、次の機能を提供するために、PBR を使用できます。
• 同等アクセス
• プロトコル依存ルーティング
• 送信元依存ルーティング
• 双方向対バッチ トラフィックに基づくルーティング
• 専用リンクに基づくルーティング
アプリケーションまたはトラフィックによっては、送信元依存ルーティングが有効です。たとえば、在庫記録を本社に送信する場合は高帯域幅で高コストのリンクを短時間使用し、電子メールなどの日常的に使うアプリケーション データは低帯域幅で低コストのリンクで送信します。
(注) PBR の設定は、グローバル ルーティング テーブルに属しているインターフェイス上でのみ可能です。PBR は、VRF に属しているインターフェイス上ではサポートされません。