ルートマップ(router-map)とは特定のパケットや定義した条件(match)と、条件に一致した際に実行される処理(set)で構成されたルートフィルタリングのこと。
まずmatchで処理(set)の対象かを確認し、対象であれば処理(set)を行う。
このルートマップはどこで使われるかというとかなりパターンが多いです。
①redistribute (再配布)で使用
→ルートごとのシードメトリック、メトリックタイプ、ルートタグを付加可能
※※※
シードメトリック→別のルーティングプロトコルへ再配送される際に再度定義されるメトリックのこと。
特に配布先(=ルートの送信先)がRIPとEIGRPの場合は、シードメトリックを指定しないと無効なルートと判定されるため、必ずシードメトリックの設定が必要です。
配布元のルーティングプロトコル(=そのルートの受信元)に共通して設定も可能ですし、個別にルーティングプロトコルごとにも設定可能です。
メトリックタイプ→OSPFが再配布で外部ルートを受け取る際に指定するタイプのこと。
タイプ1と2があり、RIBには“O E1”や”O E2”と表記される。パスの優先は”O E2”よりも”O E1”です。
“O E1”はOSPFのコスト値が外部ルートに加算される。つまり、シードメトリック+OSPFのコスト値
“O E1”はOSPFのコスト値が外部ルートに加算されない。つまりシードメトリックのみの値。
OSPFの再配送は最初にコスト値を見るのではなく、まずメトリックタイプがO E1かO E2なのか確認が重要。
タイプが同一であれば、コスト値で比較する。
ルートタグ→ルートにタグ(32bitの整数)を使用することで、そのタグが付いているルートのみ条件に一致すると見なす事ができる。
②distribute-listで使用
→ルートタグの付与、ルートタグに対するフィルタリングができる
③BGPで使用
→neighbor ~コマンドと併せて定義したルートマップを設定可能
※BGPのルートフィルタリングはdistribute-list, filter-listなどを使用した実装もあり
以下、条件(match)の定義と処理(set)を定義するコマンドになります。
【matchの定義】
(config)# route-map "マップ名" {permit | deny} [ ※シーケンス ]
(config-route-map)# match condition
conditionの部分で、そもそも何と条件一致させたいか、ルートマップを定義する以前に記載する必要が当然あります。
match ~の部分は、redistribute, distribute-list, BGPなどで10種類以上あるので、細かい説明は割愛します。(※PBRは省略)
///redistribute, distribute-list, BGP///
・match ip address ** ・match ip address prefix-list ** ・match interface ** ・match tag **
・match metric ** ・match route-type ** ・match ip next-hop ** ・match ip route-source **
///BGP(distribute-list, redistributeでは使用できないもの)///
match as-path ** ・match community ** ・match extcommunity ** ・match local-preference **
【setの定義】※2行はmatchでも使用したコマンド
(config)# route-map "マップ名" {permit | deny} [ ※シーケンス ]
(config-route-map)# match condition
(config-route-map)# set action
matchした場合の処理をactionの部分に記載します。
redistribute, distribute-list, BGPなどで10種類近くあるので、細かい説明は割愛します(※PBRは省略)
///redistribute, distribute-list, BGP///
・set metric ** ・set metric-type ** ・set tag **
///BGP(distribute-list, redistributeでは使用できないもの)///
・set as-path prepend ~ ・set community ~ ・set dampening ~ ・set local-preference ~
・set origin ~ ・set weight ~