はじめに
このドキュメントでは、ダイナミック ルーティング プロトコルの redistribute コマンドで適用されるルートマップの設定方法について説明します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの情報は、Cisco IOS® ソフトウェア リリース 12.3 に基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
このセクションでは、Cisco IOSソフトウェアで使用されるルートマップの概要を説明します。
ルートマップの基本
ルートマップには、広く知られている Access Control List(ACL; アクセス コントロール リスト)と共通する機能が多数備わっています。両者のメカニズムには共通の特性があります。
- これらは個々の文の順序付けられたシーケンスであり、それぞれが許可または拒否の結果を持ちます。ACL またはルートマップの評価は、事前に定義された順序でのリストのスキャンと、一致する各文の基準の評価で構成されています。最初に一致したステートメントが見つかると、リストスキャンは中止され、一致したステートメントに関連するアクションが実行されます。
- これらは一般的なメカニズムです。基準の一致と一致の解釈は、適用される方法によって決定されます。同じルートマップを異なるタスクに適用すると、解釈が異なる場合があります。
ルートマップとACLの間には、次のような違いがあります。
- ルートマップでは、一致基準としてACLが頻繁に使用されます。
- アクセスリストの評価から得られる主な結果は、「はい」または「いいえ」です。ACLは、入力データを許可または拒否します。ACLを再配布に適用すると、特定のルートを再配布できる(route matches ACLs permit文)か、再配布できない(matches deny文)かがACLによって決定されます。一般的なルートマップは、再配布されたルートを(一部は)許可するだけでなく、ルートが別のプロトコルに再配布されるときにルートに関連付けられている情報も変更します。
- ルートマップはACLよりも柔軟性が高く、ACLが検証できない基準に基づいてルートを検証できます。たとえば、ルートマップはルートのタイプが内部であるかどうか、特定のタグがあるかどうかを確認できます。
- 各ACLは、設計上の規則により、暗黙のdenyステートメントで終わります。ルートマップに関する同様の規則はありません。一致試行が行われたときにルートマップの末尾に到達した場合、その結果はルートマップの特定のアプリケーションによって異なります。幸い、再配布に適用されるルートマップはACLと同じように動作します。つまり、ルートがルートマップ内の句に一致しない場合、ルートマップの最後にdeny文が含まれているかのように、ルートの再配布が拒否されます。
ダイナミック プロトコルの redistribute 設定コマンドを使用すると、ACL またはルートマップのいずれかを適用できます。このセクションで説明する違いは、再配布プロセスでルートマップを使用する状況を示しています。ルートマップは、再配布の際にルート情報を変更する場合、またはACLが提供できる機能よりも強力な機能を照合する必要がある場合に推奨されます。反対に、プレフィックスまたはマスクに基づいて一部のルートを選択的に許可することだけが必要な場合は、redistribute コマンドで直接 ACL(または等価のプレフィックス リスト)を使用することをお勧めします。ルートマップを使用して、プレフィックスまたはマスクに基づいて一部のルートを選択的に許可する場合は、通常はこれよりも多くのコンフィギュレーション コマンドを使用して同じ目標を達成します。ルートマップは常に着信トラフィックに適用され、発信トラフィックには何の影響もありません。
Open Shortest Path First(OSPF)
次に、一般的なOpen Shortest Path First(OSPF)からEnhanced Interior Gateway Routing Protocol(EIGRP)へのルートマップがredistributeコマンドを使用して適用された例を示します。
!
router eigrp 1
redistribute ospf 1 route-map ospf-to-eigrp
default-metric 20000 2000 255 1 1500
!--- Output suppressed.
!
route-map ospf-to-eigrp deny 10
match tag 6
match route-type external type-2
!
route-map ospf-to-eigrp permit 20
match ip address prefix-list pfx
set metric 40000 1000 255 1 1500
!
route-map ospf-to-eigrp permit 30
set tag 8
!
この例では、次のような重要な所見が見られます。
- ルートマップの句には番号が付けられています。この例では、句に 10、20、30 のシーケンス番号が付いています。シーケンス番号を使用することで、次のアクションが可能になります。
- ルートマップの別の部分に影響を与えずに、特定の句だけを容易に削除する。
- 現在の2つの句の間に新しい句を挿入します。
シスコでは、必要に応じて、将来の句の挿入用に番号空間を確保するために、句に10の間隔で番号を付けることを推奨しています。
- ルートマップには permit 句と deny 句が使用できます。route-map ospf-to-eigrpには、1つのdeny句(シーケンス番号10)と2つのpermit句があります。deny 句は、一致したルートを再配布から除外します。したがって、次の規則が適用されます。
- ルートマップの permit 句で ACL を使用すると、ACL で許可されるルートが再配布されます。
- ルートマップの deny 句で ACL を使用すると、ACL で許可されるルートは再配布されません。
- ルートマップのpermit句またはdeny句でACLを使用し、ACLがルートを拒否する場合、ルートマップ句の一致は見つからず、次のルートマップ句が評価されます。
- 個々の route-map 句には次の 2 種類のコマンドがあります。
- match:この句を適用する必要があるルートを選択します。
- set:ターゲットプロトコルに再配布する情報を変更します。
再配布されたルートごとに、ルータはまずルートマップ内の句のmatchコマンドを評価します。一致基準が成功すると、permit句またはdeny句の指示に従ってルートが再配布または拒否され、一部の属性がsetコマンドによって変更されます。一致した基準が満たされない場合、この句はルートに適用されず、Cisco IOSソフトウェアはルートマップの次の句に対してルートの評価に進みます。ルートマップのスキャンは、その match コマンドがルートに一致する句が見つかるまで、またはルートマップの終わりに達するまで続行します。
- 次のいずれかの条件が満たされる場合は、各句の match コマンドまたは set コマンドを省略したり、何回か繰り返したりできます。
- 複数の match コマンドが句に含まれる場合に、特定のルートが句に一致するためには、そのルートですべての照合に成功しなければなりません(つまり、複数の match コマンドでは論理 AND アルゴリズムが適用される)。
- matchコマンドが1つのコマンド内の複数のオブジェクトを参照する場合は、一致するか(論理ORアルゴリズムが適用されます)。たとえば、match ip address 101 121コマンドでは、アクセスリスト101またはアクセスリスト121によって許可されている場合にルートが許可されます。
- match コマンドがない場合は、すべてのルートが句に一致します。前の例では、句30に到達するすべてのルートが一致するため、ルートマップの最後には到達しません。
- ルートマップのpermit句にsetコマンドがない場合、ルートは現在のアトリビュートを変更せずに再配布されます。
deny route-map句ではsetコマンドを設定しないでください。deny句によってルートの再配布が禁止されるためです。変更する情報はありません。
matchsetコマンドのないroute-map句は、アクションを実行します。空のpermit句を使用すると、変更を加えずに残りのルートを再配布できます。空のdeny句は、他のルートの再配布を許可しません(ルートマップが完全にスキャンされるが、明示的な一致が見つからない場合のデフォルトのアクションです)。
このセクションの情報に基づき、前述の OSPF-to-EIGRP ルートマップ例では次のことが行われます。
- タグ 6 が設定されたすべての Type-2 外部 OSPF ルートの再配布を禁止します。
- 5つのメトリック値(40000、1000、255、1、および1500)を持つpfxプレフィクスリストに一致するすべてのルートをEIGRPに再配布します。
- 他のすべてのルートのタグを 8(デフォルト)に設定して再配布します。
再配布に適用されるルートマップで使用するコマンド
ここでは、次の内容について説明します。
サポート対象外の一致を設定し、ルートマップのコマンドを設定する
ルートマップは多くの設定で使用できる一般的なメカニズムで、前述のredistributeコマンドも含まれます。たとえば、PBR のルートマップで match length コマンドを設定して、特定の長さのパケットが転送されたときに特別なアクションが実行されるように指定することができます。ただし、再配布に適用されるルートマップでは match length コマンドを使用しません。
ルートマップが適用されているか、後の段階で適用されるような状況では、サポート対象外の(または効力のない)ルートマップに match コマンドと set コマンドを設定できます。この状況の例としては、再配布に適用されるルートマップで使用される match length コマンドがあります。再配布では、redistribute コマンドで指定されたプロトコルにより、ルートマップがルーティング テーブルにインストールされた各ルートに適用されます。このため、ルータがルートマップを実行する際に解釈するのは、ルートマップが適用されている状況で意味を持つコマンドだけです。この例では、再配布ルートマップに指定されているmatch lengthコマンドは再配布に影響しません。コマンドはルートマップの設定に残り、ルータの実行コンフィギュレーションで確認できます。ところが、このコマンドがルートマップに存在するかどうかにかかわらず、経路再配布への影響はありません。
そのため、ルータではあらゆる種類のmatchコマンドとsetコマンドの設定が可能ですが、状況に応じて論理的に適用する必要があります。そうしないと、設定が非常に混乱したり、誤ったタスクを実行したりする可能性があります。
ルートマップで影響を与えないコマンドの使用は、それが無害のように見えてもやめてください。次のような問題があるからです。
-
影響のないコマンドにより、ユーザが達成しようとすることが分かりにくくなってしまう可能性があります。混乱を引き起こす可能性があります。
-
現在サポートされていないコマンドは、Cisco IOSソフトウェアの将来のリリースでサポートされる可能性があります。将来のソフトウェアアップグレード後に、ルートマップの動作に望ましくない変更が生じる可能性があります。
-
すべてのコマンドが完全に無害というわけではありません。たとえば、set metric +/- コマンドはメトリックの相対的な変更を指定するもので、BGPルートアドバタイズメントで使用されます。ルートの現行メトリックをとり、それを伝達する前に、指定した値により増減できます。
このコマンドの+/- 形式は、一部のプロトコルではサポートされていません。「EIGRPルートマップのサポート」を参照してください。他のシナリオでは、このコマンドは実際には記号が省略されたset metric コマンドと解釈されます。たとえば、次のルートマップについて考えてみましょう。
!--- This redistribution route-map is very dangerous!
route-map ospf-to-ospf permit 10
set metric +2
!
この設定では、1 つの OSPF プロセスから別の OSPF プロセスへすべてのルートを再配布して、すべてのルートのメトリックが 2 増分されるように見えます。しかし、実際には、すべてのルートのメトリックが同じ(2に等しい)ように設定されます。これは、ルータの設定では予期しない動作です。
このルートマップは、さらにわかりにくい結果になります。
!--- This redistribution route-map is very dangerous!
route-map ospf-to-ospf permit 10
set metric +2
!
この設定では、再配布ルートのメトリックは減少されるのではなく、実際にはメトリックが 367 に設定されます(記号なしで set metric が解釈されると、負のメトリックは不可能なので、正の値になります)。
ルートマップによる再配布の 2 つのプロトコルの特性
再配布に適用されるルートマップは、次の 2 つのルーティング プロトコルで動作します。
-
オリジナルのルーティング情報を提供するプロトコル
-
ルーティング情報が再配布されるプロトコル
各ルーティング プロトコルはルート属性の独自のセットをサポートできます。
再配布ルートマップ設定の場合は、次のようになります。
この文書の「コマンド サポート表」セクションに、コマンドのリストがあります。これらはmatchコマンドとsetコマンドによって分類され、再配布ルートマップの2つのプロトコルの性質を強調しています。
コマンド サポート表
このセクションでは、redistribute コマンドに添付されるルートマップでサポートされているコマンドを説明します。ルートを再配布できるルーティングプロトコルは7つありますが、再配布を実行できるルーティングプロトコルは5つだけです。接続済みのスタティック ルートはダイナミック ルーティング プロトコルではなく、他のプロトコルに再配布される情報しか提供できません。
このセクションには、Cisco IOSソフトウェアリリース12.3のルートマップでサポートされているが再配布のコンテキストには適用されない matchコマンドとsetコマンドは含まれていません。
Intermediate System-to-Intermediate System(IS-IS)および BGP は、Connectionless Network Service(CLNS)ルートと IP ルートに関する情報を伝達します。このセクションの表には、これらのプロトコルの再配布ルートマップに使用可能な CLNS 関連コマンドも含まれています。
Routing Information Protocol(RIP;ルーティング情報プロトコル)、OSPF、IS-IS、およびBGPを使用して、IPv6ルートを伝播できます。これらのプロトコルの再配布ルートマップには、IPv6固有のコマンドを含めることができます。match ipコマンドとset ipコマンドは、IPv4プレフィクスの再配布だけに使用されます。match ipv6コマンドとset ipv6コマンドは、IPv6プレフィクスの再配布だけに使用されます。match clns コマンドと set clns コマンドを使用できるのは、ルートマップを使用してルーティング プロトコルと相互に CLNS ルートを再配布する場合だけです。
表 1 および表 2 では、次の表記法を使用しています。
-
サポートされているコマンドは、aYesとマークされています。
-
サポート対象外コマンドには、ダッシュ(-)マークが付けられています。
-
処理(おそらくは望まれない処理)が実行されることが判明しているサポート対象外コマンドには、不可というマークが付けられています。
表 1 - プロトコルによってルーティング テーブルにインストールされたルートを照合するルートマップ コマンド
コマンド |
再配布のサポート |
connected |
static |
RIP |
EIGRP |
OSPF |
IS-IS |
BGP |
match clns address |
— |
Yes |
— |
— |
— |
Yes |
Yes |
match clns next-hop |
— |
Yes |
— |
— |
— |
Yes |
— |
match interface |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
— |
match ip address |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
match ip address prefix-list |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
match ip next-hop |
— |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
match ip next-hop prefix-list |
— |
いいえ |
いいえ |
いいえ |
いいえ |
いいえ |
いいえ |
match ip route-source |
— |
— |
Yes |
Yes |
Yes |
— |
Yes |
match ip route-source prefix-list |
— |
— |
いいえ |
いいえ |
いいえ |
— |
いいえ |
match ipv6 address [prefix-list] |
Yes |
Yes |
Yes |
— |
Yes |
Yes |
Yes |
match ipv6 next-hop [prefix-list] |
— |
Yes |
Yes |
— |
— |
— |
Yes |
match ipv6 route-source [prefix-list] |
— |
— |
Yes |
— |
— |
— |
Yes |
match metric |
— |
— |
Yes |
Yes |
Yes |
Yes |
Yes |
match policy-list |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
match route-type external |
— |
— |
— |
Yes |
Yes |
Yes |
Yes |
match route-type internal |
— |
— |
— |
Yes |
Yes |
— |
Yes |
match route-type local |
— |
— |
— |
— |
— |
— |
Yes |
match route-type nssa-external |
— |
— |
— |
— |
Yes |
— |
— |
match route-type {level-1|level-2} |
— |
— |
— |
— |
— |
Yes |
— |
match tag |
— |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
表 2 - ターゲット プロトコルへの再配布中にルート属性を変更するコマンド
コマンド |
再配布のサポート |
RIP |
EIGRP |
OSPF |
IS-IS |
BGP |
set as-path tag |
— |
— |
— |
— |
Yes |
set community |
— |
— |
— |
— |
Yes |
set ip next-hop |
— |
— |
— |
— |
Yes |
set ip next-hop peer-address |
— |
— |
— |
— |
いいえ |
set ipv6 next-hop |
— |
— |
— |
— |
Yes |
set level {バックボーン|スタブエリア} |
— |
— |
いいえ |
— |
— |
set level {level-1|level-2|level-1-2} |
— |
— |
— |
Yes |
— |
set local-preference |
— |
— |
— |
— |
Yes |
set metric |
Yes |
— |
Yes |
Yes |
Yes |
set metric +/- |
いいえ |
— |
いいえ |
いいえ |
いいえ |
set metric eigrp-metric |
— |
Yes |
— |
— |
— |
set metric +/- eigrp-metric |
— |
いいえ |
— |
— |
— |
set metric-type internal |
— |
— |
— |
Yes |
— |
set metric-type external |
— |
— |
— |
Yes |
— |
set metric-type {type-1|type-2} |
— |
— |
Yes |
— |
— |
set nlri |
— |
— |
— |
— |
Yes |
set origin |
— |
— |
— |
— |
Yes |
set tag |
Yes |
Yes |
Yes |
— |
— |
set weight |
— |
— |
— |
— |
Yes |
結論
ルートマップは、ルートの再配布を行う強力なツールですが、同時に複雑なツールでもあります。これらは、プロトコル間で再配布を行う場合には、非常に詳細にルーティング情報を操作できます。ただし、これらは危険であり、ネットワークにブラックホールや最適でないトラフィックフローを生み出す可能性があります。複数のルーティングプロトコル間で複雑な再配布機能を使用する場合は、ネットワークを慎重に設計する必要があります。
関連情報