route-map



 ◆ ルートマップとは

 ルートマップとは、特定のパケットやルートを定義した
条件と、その時に実行される処理とで構成される
 リストのことです。条件に合うかどうかはroute-map内の
matchコマンドで行い、合致した場合の処理は
 
setコマンドの内容に基づき実行されます。ルートマップは以下のような多くの用途で利用されています。

同時に使用されるコマンド 説明
 再配布 - redistribute

 再配布ルートごとのシードメトリック、メトリックタイプ、ルートタグを付加できる

 配布 - distribute-list  ルートに対するタグ付け、タグ付けされたルートのフィルタリングができる
 PBR - ip policy route-map

 送信元IPアドレス、プロトコル/ポート番号、入力I/Fなどに基づきルーティングできる

 BGP - neighbor  ルートのフィルタリング、ルートに付加されている path attribute の変更ができる
 NAT - ip nat inside source  宛先ごとに異なる送信元IPアドレスに変換できる



 ◆ ルートマップのルール

 ・ ルートマップにはシーケンス番号があり、シーケンス番号の小さい値のroute-mapから処理されます。
 ・ 合致したroute-mapがあればそれが実行され、以降で定義しているroute-mapの処理は行われません。
 ・ access-list、ip prefix-listコマンド同様に、route-mapコマンドの最後には暗黙のdenyが存在します。


 ◆ ルートマップの設定

 ルートマップの設定は任意の名前(map-tag)設定後に、条件文(match)と処理文(set)を記述します。
 route-mapコマンドの「permit」や「deny」は、route-map の用途によってその意味が異なり、例えば、
 ルートフィルタリングで使用する場合はpermitは対象ルートの許可、denyは対象ルートの拒否を意味します。
 PBRで使用する場合は、permitは条件と処理に従い転送され、denyは通常のルーティング実行を意味します。

 ◆ ルートマップの設定
 (config)# route-map map-tag permit | deny [ seq-number ]
 (config-route-map)#
match condition
 (config-route-map)#
set action

コマンド引数 説明
map-tag

 ルートマップの名前を適当に指定

permit | deny  permit(許可)または deny(拒否)の指定( 省略時には pemit が適用される )
seq-number

 オプション設定。シーケンス番号を 0 〜 65535 の範囲で指定( 省略時には 10 を割り当てる )

condition  合致させるパケットやルートの条件の指定( 条件文の定義 )
action  conditionに合致したパケットやルートの処理の指定( 処理文の定義 )


 ◆ ルートマップの処理

 ルートマップは、
シーケンス番号順に処理されていきます。つまり、コンフィグレーションの見た目では
 上から順番に下へと処理されていきます。
route-mapがどのように処理されていくのかを見ていきます。
 定義した条件(match)に合致した時点で、処理(set)が行われ、以降のシーケンスは参照されません。


 route-map TEST permit 10
  match A
  set 1

 route-map TEST permit 20
  match A
  match B
  set 2

 route-map TEST permit 30
  match A B
  set 3

 route-map TEST permit 40
  match A
  set 4
  set 5

 route-map TEST permit 50
  set 6

 route-map TEST permit 60
  match A

 route-map TEST deny 70
  match A

 route-map TEST permit 80



ルートマップ 動作
シーケンス番号 10  条件Aに合致すれば、処理 1 が実行される
シーケンス番号 20  条件Aと条件Bの両方に合致すれば、処理 2 が実行される
シーケンス番号 30  条件Aまたは条件Bのいずれかに合致すれば、処理 3 が実行される
シーケンス番号 40  条件Aに合致すれば、処理 4 と 5 が実行される
シーケンス番号 50  matchコマンドの設定がない場合、全てが合致して、処理 6 が実行される
シーケンス番号 60  route-map permitのsetコマンドがない場合、条件Aに合致すれば全てデフォルト状態で許可される
シーケンス番号 70  route-map denyのsetコマンドがない場合は、条件Aに合致すれば全て拒否される
シーケンス番号 80  permitのroute-mapのsetとmatchコマンドがない場合、全てが合致してデフォルト状態で許可される
シーケンス番号 XX  暗黙のdenyによる最終処理( コンフィグ上は表示されない。show route-mapでも表示されない )


 ルートマップをルート再配布( redistribute )で使用する時にどのような動作になるのかを解説します。
 以下の通り、redistributeでroute-mapを使用する場合、matchコマンドによって対象ルートを定義して、
 setコマンドによって、再配布される対象ルートの情報(メトリック値など)を変更できます。その上で
 route-mapがpermitである場合はルート再配布が許可、denyである場合はルート再配布が拒否されます。

ルートマップ 動作
シーケンス番号 10  条件Aに合致するルートは、処理 1 が実行された上でルート再配布として許可
シーケンス番号 20  条件Aと条件Bの両方に合致するルートは、処理 2 が実行された上でルート再配布として許可
シーケンス番号 30  条件Aまたは条件Bのいずれかに合致するルートは、処理 3 が実行された上でルート再配布として許可
シーケンス番号 40  条件Aに合致するルートは、処理 4 と 5 が実行された上でルート再配布として許可
シーケンス番号 50  全てのルートは、処理 6 が実行された上でルート再配布として許可
シーケンス番号 60  条件Aに合致するルートは、メトリック値など何も変更されずデフォルト状態でルート再配布として許可
シーケンス番号 70  条件Aに合致するルートは、ルート再配布されない
シーケンス番号 80  全てのルートは、メトリック値など何も変更されずデフォルト状態でルート再配布として許可
シーケンス番号 XX  どのシーケンス番号には合致しないルートは、ルート再配布されない

 暗黙のdenyに到達することを防ぐ、いわば permit any any に合致するのがシーケンス番号80となります。



ルート再配布とルート制御( redistribute、distribute-list、route-map、distance )

ネットワークエンジニアとして

Copyright (C) 2002-2019 ネットワークエンジニアとして All Rights Reserved.