Cisco Catalyst 9300(IOS-XE)では、OSPFv2 で受信した経路ごとにコスト(メトリック)を調整するにはいくつかの方法があります。
通常、OSPF 内部ルートのコストはインターフェイスの帯域幅設定に基づく計算結果になりますが、特定のプレフィックスに対してコストを上書きしたり、経路選択に影響を与えるにはルートマップやディストリビュートリストを用いたポリシー適用、および集約ルート(サマリールート)のコスト調整が有効です。
以下では、要求された各ケース(内部ルート、外部ルート、サマリールート)について具体的な手法と設定例を示します。
内部ルート(Intra-area、Inter-area)のコスト調整
ルートマップ+ディストリビュートリストによるコスト変更(受信ルートのメトリック調整)
Catalyst 9300 は IOS-XE 16.12 以降で、OSPF 受信ルートに対してルートマップを適用し、特定プレフィックスのルートがルーティングテーブルにインストールされる際の動作を制御できます (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco) (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)。
ルートマップ内でプレフィックスやルートタイプ、タグなどにマッチさせてpermitアクション時に set metric
コマンドを使うことで、その経路の OSPF コストを上書きできます (How to Configure OSPF Distribute Lists on Cisco Routers | Orhan Ergun)。
これにより、特定サブネットからのルートだけコストを高く(または低く)設定し、ルーティングの優先度を調整することが可能です(注: この操作は LSA 上のメトリックを変更するものではなく、当該ルータが経路を選択する際のコストをローカルに上書きするイメージです)。
設定例 1: 特定プレフィックスの内部ルートコストを変更
ネイバーから学習した 192.168.10.0/24
のみコストを 100 に変更する場合の設定例です。
まずプレフィックスリストとルートマップを作成し、次に OSPF プロセスにインバウンドのディストリビュートリストとして適用します。
! プレフィックスリストで対象プレフィックスを定義
Router(config)# ip prefix-list PLIST_IN seq 5 permit 192.168.10.0/24
!
! ルートマップの作成(プレフィックス一致でメトリック変更)
Router(config)# route-map OSPF-IN permit 10
Router(config-route-map)# match ip address prefix-list PLIST_IN
Router(config-route-map)# set metric 100
!
! OSPFプロセスにルートマップをインバウンドフィルタとして適用
Router(config)# router ospf 1
Router(config-router)# distribute-list route-map OSPF-IN in
上記の設定では、PLIST_IN
にマッチする OSPF ルートが受信された際、そのコストを 100 に設定してルーティングテーブルにインストールします (How to Configure OSPF Distribute Lists on Cisco Routers | Orhan Ergun)(他の経路はデフォルトの動作=許可かつ変更なしのため、既存コストでインストールされます)。
必要に応じて match interface
で特定インターフェイスから来た OSPF 経路に絞り込むことも可能です (How to Configure OSPF Distribute Lists on Cisco Routers | Orhan Ergun)。
例えば以下のようにすると、Serial0 インターフェイス経由で受信した指定プレフィックスだけコスト変更ができます。
Router(config)# route-map OSPF-IN permit 10
Router(config-route-map)# match ip address prefix-list PLIST_IN
Router(config-route-map)# match interface Serial0
Router(config-route-map)# set metric 100
このようにルートマップとディストリビュートリストを組み合わせることで、OSPF 学習ルートをサブネット単位・インターフェイス単位で選別し、メトリックを調整できます (How to Configure OSPF Distribute Lists on Cisco Routers | Orhan Ergun)。
ルートタイプ(intra-area か inter-area か、あるいは External Type1/2 か)でマッチさせて処理を変えることも可能です (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)。
たとえば match route-type internal
や match route-type external type-2
のように記述すると、OSPF 内部ルートや特定種別の外部ルートに対してポリシーを適用できます (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)。
補足:OSPFでは、インターフェイスのコストを次の式で計算するのが基本です。(Cisco IOSデバイスでの古い標準)
インターフェイスコスト = 10^8 [bps] / インターフェイスの帯域幅[bps]
近年のIOS-XEでは、大容量インターフェイスを使うケースが一般的になったため、
auto-cost reference-bandwidth
コマンドで参照帯域幅を1Gbps (1000Mbps) や10Gbps (10000Mbps) などに変更することが推奨されています。
そうしないと、1Gbpsや10Gbpsのインターフェイスでもすべてコストが1となり、細かい差がつけられません。Router(config)# router ospf 1 Router(config-router)# auto-cost reference-bandwidth 100000 ! 参照帯域幅を 100000 Mbps (100Gbps) にする
ディストリビュートリストによる経路フィルタリング:
コスト値の直接変更ではありませんが、特定経路を受信側で無視する(インストールしない)ことで間接的にルーティングを操作する方法としてディストリビュートリストによるフィルタリングも利用できます。
プレフィックスリストやルートマップと組み合わせてdistribute-list in
を設定すると、その条件にマッチした OSPF 経路をルーティングテーブルに追加しないよう制御できます (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)。
たとえば「特定サブネット A はバックアップ経路として扱いたいので通常はインストールしない」といった場合、当該サブネットをdenyするルートマップを作成し distribute-list route-map ... in
で適用します(必要に応じて他のルートは permit で通す)。
Catalyst 9300 ではこの OSPF インバウンドフィルタ機能を用いて、LSA は受信しつつルーティングテーブル計算から除外するといったポリシーが可能です (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)。
なお、この手法はあくまで経路のインストール可否を制御するものであり、LSA 自体のフラッディングには影響しない点に注意してください (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)。
インターエリア経路のコスト調整(ABR での対応):
OSPF エリア境界ルータ(ABR)が複数エリア間で経路を中継している場合、エリアサマリを活用することでコストを調整できます。
ABR 上で area <area-id> range <プレフィックス> <マスク> cost <値>
と設定すると、指定エリアから集約したサマリールートを生成し、手動でコストを設定できます (OSPF Summarization Explained + Configuration in Cisco IOS) (OSPF Summarization Explained + Configuration in Cisco IOS)。
このサマリールートはタイプ 3 LSA として他エリアへ広告され、デフォルトでは範囲内の最も低いコストを持つ経路に合わせたコストになりますが、cost
オプションで任意の値に変更可能です (OSPF Summarization Explained + Configuration in Cisco IOS) (OSPF Summarization Explained + Configuration in Cisco IOS)。
例えば、エリア 1 内の 10.0.0.0/24~10.0.3.0/24 をまとめてエリア 0 に広告する際、コストを固定で 100 にしたければ以下のように設定します。
Router(config)# router ospf 1
Router(config-router)# area 1 range 10.0.0.0 255.255.252.0 cost 100
この設定により、ABR は 10.0.0.0/22 の集約経路をコスト 100 で生成します。
通常、OSPF のサマリールートのコストは集約対象に含まれる経路の中で最も低いメトリック値が採用されますが (SwitchPacket: OSPF Summary Address Cost) (summary-address (ospf))、cost
を指定することでそれを上書きできます(Catalyst 9300 を含む IOS ルータでは ABR の area range
コマンドでコスト指定が可能です)。
補足: インターエリア経路をフィルタする場合(コスト変更ではなく経路そのものを遮断したい場合)、ABR 上で
area <area-id> filter-list prefix <プレフィックスリスト> in|out
コマンドを使用する方法があります。
これは指定したプレフィックスを含むタイプ 3 LSAの受信/送信を抑制するもので、サブネット単位で他エリアとの経路共有を制御できます。
ただしコストの微調整という観点では、前述のルートマップ機能やサマリールート活用が主な手段となります。
外部ルート(External Type1、Type2)のコスト調整
External Type1 と Type2 の違い(調整方法の前提知識):
OSPF 外部ルートにはType1(E1)とType2(E2)の 2 種類があります。
Type1 は「外部元のメトリック + OSPF 内部での経路コスト(転送コスト)」で評価され、Type2 は基本的に「外部元のメトリックのみ」をコストとみなし、OSPF 内部コストは考慮しません(ただし同一メトリックの複数経路がある場合の判定などに内部コストを利用)。
Catalyst 9300 で外部ルートの優先度を調整する場合、この種類を使い分けたりメトリック値を設定することが重要です。
外部ルート受信時の振る舞い:
他ルータから受信した OSPF 外部 LSA (Type5 or NSSA Type7) に含まれるコスト値は基本的にそのまま受け入れるしかありません。
受信側で任意に LSA 上のメトリックを書き換えることはできないため、特定の外部経路だけコストを変えるにはフィルタか管理距離の変更など間接的な方法となります。
上述のルートマップ+distribute-list in
機能を使えば、例えば特定のタグやプレフィックスを持つ外部ルートだけ受け入れを拒否する(あるいは許可する)ことが可能です (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)。
実際、外部ルートには再配布元でタグを付与し、それを利用して他ルータで受信フィルタを行うデザインが一般的です (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)。
コストそのものは変えられませんが、不要な外部経路をインストールしないようにすることで結果的に他の経路を選択させることができます。
外部ルート送信時(再配布時)のコスト調整:
Catalyst 9300 自身が ASBR(自律システム境界ルータ)として他プロトコルやスタティックから OSPF へ経路再配布する場合、ルートマップを用いて特定プレフィックスの外部メトリック値やタイプを調整できます。
再配布コマンド(redistribute
)に route-map
オプションを付け、ルートマップ内で set metric <値>
や set metric-type type-1
/type-2
を指定します (networking – Static-to-OSPF Route Redistribution – Server Fault)。
こうすることで、再配布される個々の経路に対し異なるコストやタイプを割り当てることが可能です。
設定例 2: 特定外部経路のみ Type1 でメトリック値変更
スタティック経路 192.0.2.0/24
のみを OSPF へ再配布する際に Type1 外部でメトリック 20 を設定し、その他はデフォルトの Type2 メトリック 20 で再配布する例を示します。まずプレフィックスリストとルートマップで条件を定義し、OSPF 再配布に適用します。
! プレフィックスリストで特定経路を指定
Router(config)# ip prefix-list PLIST_STATIC seq 5 permit 192.0.2.0/24
!
! ルートマップ: 一致した経路はメトリックとタイプを変更
Router(config)# route-map OSPF-REDIST permit 10
Router(config-route-map)# match ip address prefix-list PLIST_STATIC
Router(config-route-map)# set metric 20
Router(config-route-map)# set metric-type type-1
! 続けてデフォルト動作(マッチしない他経路は許可)を記述
Router(config-route-map)# exit
Router(config)# route-map OSPF-REDIST permit 100
Router(config-route-map)# <no match clauses> ! (全てマッチ)
Router(config-route-map)# set metric 20 ! 他はメトリック20, type-2既定
!
! OSPFプロセスでスタティック経路を再配布し、ルートマップを適用
Router(config)# router ospf 1
Router(config-router)# redistribute static subnets route-map OSPF-REDIST
上記設定により、192.0.2.0/24
は OSPF 外部 Type1、メトリック 20 として再配布され、それ以外のスタティック経路は OSPF 外部 Type2(デフォルト)・メトリック 20 になります。
(networking – Static-to-OSPF Route Redistribution – Server Fault) のように、プレフィックスリストで特定経路をマッチさせて set metric-type type-1
を付与することで、選択的なタイプ変更が可能です。
また set metric
も併用することで値自体も細かく調整できます。デフォルトでは OSPF への再配布は Type2・メトリック 20(BGP は 1)となるため (Cisco OSPF Route Redistribution > Configuration Example 1: Redistributing Classful Routes into OSPF with the Default Type and Metric | Cisco Press )、必要に応じて全体デフォルトを default-metric
コマンドで変更するか、上記のようにルートマップで個別に設定します。
ディストリビュートリスト out による外部経路制御:
OSPF プロセスのdistribute-list out
コマンドを使うと、当該ルータが再配布によって生成する外部 LSA をフィルタできます。
Catalyst 9300 など IOS では、このコマンドはASBR が生成する外部ルートに対してのみ有効であり (ospf distribute-list out not work – Cisco Community)、たとえば「特定プレフィックスの外部 LSA はこのルータから広告しない」といったポリシーを実現できます。
設定例として、再配布時に ACL やプレフィックスリストで許可したネットワークだけ OSPF 外部経路として広告するケースでは、router ospf 1
コンフィグ下で distribute-list <ACL名> out
とします(ACL で許可された prefix だけが再配布される)。
注意: distribute-list out
は OSPF 内部エリア間の経路には適用できず、あくまで再配布経路 (External LSA)の広告制限専用です (ospf distribute-list out not work – Cisco Community)。
内部ルートの制御には先述の distribute-list in
やエリアフィルタを使用してください。
サマリールート(Summary)のコスト変更方法
OSPF のサマリールートとは、ABR が生成するエリア間集約経路(タイプ 3 LSA)や、ASBR が生成する外部集約経路(タイプ 5 LSA の集約)のことです。
Catalyst 9300 を含む Cisco デバイスでは、以下の方法でそれぞれコストを調整・設定できます。
ABR におけるエリアサマリ(inter-area 集約)のコスト設定:
前述の通り ABR では area ... range
コマンドで集約するサブネット範囲とコストを指定できます (OSPF Summarization Explained + Configuration in Cisco IOS)。
例えば「エリア 2 内の 172.16.0.0/16 全体を 1 本の経路としてエリア 0 に通知し、コストを 50 にする」には次のように設定します。
Router(config-router)# area 2 range 172.16.0.0 255.255.0.0 cost 50
こうすると、エリア 0 には 172.16.0.0/16 のタイプ 3 LSA がコスト 50 で広告されます(エリア 2 内では引き続き細かいプレフィックスが存在)。
デフォルトでは集約経路のコストは範囲内でもっとも低コストの経路に合わせられますが (summary-address (ospf))、上記のようにcost パラメータを明示することで任意の値に設定できます (OSPF Summarization Explained + Configuration in Cisco IOS)。
コスト調整により、複数 ABR 間での経路選択を制御したり、サマリールート経由のトラフィックの優先度を調節できます。
ASBR における外部サマリ(External 集約)のコスト調整:
ASBR(他プロトコルから OSPF へ経路再配布しているルータ)では、summary-address <プレフィックス> <マスク>
コマンドにより複数の外部プレフィックスをまとめて単一の外部 LSA にすることが可能です。
このとき生成されるサマリールート(タイプ 5 LSA)のコストは、基本的に含まれるもっとも低いメトリックの経路に応じた値が自動設定されます (summary-address (ospf))。
Cisco IOS では summary-address
コマンドにコストを手動指定するオプションは提供されていません (OSPF Summarization Explained + Configuration in Cisco IOS)。
そのため、ASBR サマリールートのコストを調整したい場合は次のような間接的方法を検討します。
例えば、複数の再配布元経路のメトリック値自体を再配布前に統一・調整する(スタティックルートの AD や距離を変えて OSPF への再配布順序を変える等)ことで結果的に希望のコスト値のサマリールートを得る、といった工夫です。
あるいは、集約したいプレフィックス範囲に対応するダミーのスタティックルートを用意し高いメトリックで再配布することで、集約 LSA のメトリックを意図的に上乗せする手法もあります。
しかし通常は、最も低コストの経路にコストを合わせたサマリールートを受け入れるデザインが推奨されます (summary-address (ospf))(OSPF 標準の挙動に従う形)。
どうしても外部集約 LSA のコストを固定したい場合には、集約せず個々の再配布でメトリックを設定する方法(前述のルートマップ使用)も検討してください。
スタブ/トータリースタブエリアのデフォルト経路コスト:
補足として、ABR がスタブエリアやトータリースタブエリアに注入するデフォルトルート(0.0.0.0/0, Type3 or Type5) のコストは、area <area-id> default-cost <値>
コマンドで設定可能です (Optimizing OSPF Behavior > OSPF Implementation | Cisco Press)。
スタブエリアでは ABR が常にデフォルト経路を広告しますが、そのメトリックをこのコマンドで調整できます。
例えば遠隔拠点用のスタブエリアに対しデフォルトルートのコストを引き上げ、他の経路(例えば静的バックアップ)を優先させるといった設計が可能です。
まとめ
以上、Catalyst 9300 シリーズにおける OSPFv2 ルートのサブネット単位でのコストカスタマイズ方法をまとめました。
ルートマップを用いることで細かなポリシー制御(コスト変更やフィルタリング)が可能であり、ディストリビュートリストはその適用手段として利用します。
また、サマリールート設定はネットワーク全体の集約とコスト調整に寄与します。
これらの機能を組み合わせて適切に設定することで、OSPF ルーティングの挙動をきめ細かく制御することができます。
参考文献・出典:
- Cisco Systems, IP Routing: OSPF Configuration Guide – OSPF インバウンドフィルタ(ルートマップ対応)の解説 (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco) (IP Routing Configuration Guide, Cisco IOS XE 17.x – OSPF Inbound Filtering Using Route Maps with a Distribute List [Cisco IOS XE 17] – Cisco)
- Orhan Ergun, How to Configure OSPF Distribute Lists on Cisco Routers – ルートマップと distribute-list を使用した OSPF 経路の条件付き受信およびメトリック調整例 (How to Configure OSPF Distribute Lists on Cisco Routers | Orhan Ergun) (How to Configure OSPF Distribute Lists on Cisco Routers | Orhan Ergun)
- itskillbuilding.com – OSPF サマリールートのデフォルトコスト計算とコスト指定方法の解説 (OSPF Summarization Explained + Configuration in Cisco IOS) (OSPF Summarization Explained + Configuration in Cisco IOS) (OSPF Summarization Explained + Configuration in Cisco IOS)
- Aruba Networks, AOS-CX OSPF Command Reference – summary-addressコマンド説明(外部集約ルートのメトリックは最小コストに自動設定) (summary-address (ospf))
- Cisco Community 投稿 – OSPF の distribute-list out コマンドは ASBR 再配布経路にのみ適用される旨の注意 (ospf distribute-list out not work – Cisco Community)