◆ ルートマップとは
ルートマップとは、特定のパケットやルートを定義した条件と、その時に実行される処理とで構成される
リストのことです。条件に合うかどうかは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となります。
|