はじめに
CCNP ENARSIをPING-Tで学習していた際、AD値とメトリックに関する問題を間違えました。
AD値とメトリックは、どちらもルーティングにおける経路選択に関係する値です。そのため、どちらも「経路の優先順位を決める値」という認識はありました。
しかし、問題を解いているうちに、次の疑問に明確に答えられないことに気付きました。
- AD値は、どの経路と比較するときに使用するのか
- メトリックは、どの経路と比較するときに使用するのか
どちらも経路選択に使用する値ですが、比較する対象が異なります。
そこで今回は、AD値とメトリックの違いを整理したうえで、CML(Cisco Modeling Labs)を使用して実際に値を変更し、ルーティングテーブルがどのように変化するのか検証します。
CCNP ENARSIの学習を進めている方や、ルーティングの基礎を理解したい方の参考になれば幸いです。
AD値とメトリックの違い
結論から言うと、AD値とメトリックの違いは、経路を比較する対象にあります。
それぞれの役割を整理すると、次のとおりです。
| 項目 | AD値(Administrative Distance) | メトリック(Metric) |
|---|---|---|
| 比較対象 | 異なるルーティング情報源 | 同じルーティングプロトコル内の経路 |
| 目的 | どの情報源から学習した経路を優先するか決める | 同じプロトコル内で、どの経路を優先するか決める |
| 優先される値 | 小さい値 | 小さい値 |
| 具体例 | StaticルートとOSPFルートの比較 | OSPFで学習した複数経路の比較 |
簡単にまとめると、次のようになります。
AD値は「どのルーティング情報源を優先するか」を決める値です。
メトリックは「同じルーティングプロトコル内で、どの経路を優先するか」を決める値です。
例えば、同じ宛先への経路をStaticルートとOSPFの両方から学習した場合、CiscoルータではAD値を比較します。
一方、OSPFで同じ宛先への経路を複数学習した場合は、OSPFのメトリックであるCostを比較します。
いずれも基本的には小さい値が優先されますが、何を比較しているのかを区別することが重要です。
なお、AD値はCisco機器で使用される概念です。異なるルーティング情報源の信頼性を比較するために使用されます。
今回の検証内容
今回の検証では、4台のルータを使用します。
すべてのルータでOSPFを有効化し、RT1から宛先 2.2.2.2/32 への経路がどのように選択されるのかを確認します。
検証では、次の2つの観点から動作を確認します。
- OSPFのCostを変更し、メトリックの違いによって経路が切り替わること
- Staticルートを追加し、AD値の違いによって経路が切り替わること
ネットワーク構成
今回のネットワーク構成は、次のとおりです。

RT1からRT4へは、直接接続された経路と、RT2またはRT3を経由する経路があります。
RT4にはLoopbackインターフェースを設定し、2.2.2.2/32 を割り当てています。
RT1からこの宛先への経路を確認することで、経路選択の変化を観察します。
各ルータの設定
今回使用する各ルータの設定は、次のとおりです。
RT1
router ospf 1
interface lo0
ip address 1.1.1.1 255.255.255.255
ip ospf 1 area 0
interface ethernet0/0
ip address 192.168.1.1 255.255.255.0
no shut
ip ospf 1 area 0
interface ethernet0/1
ip address 192.168.2.1 255.255.255.0
no shut
ip ospf 1 area 0
interface ethernet0/2
ip address 192.168.5.1 255.255.255.0
no shut
ip ospf 1 area 0
RT2
router ospf 1
interface ethernet0/0
ip address 192.168.1.2 255.255.255.0
no shut
ip ospf 1 area 0
interface ethernet0/1
ip address 192.168.4.2 255.255.255.0
no shut
ip ospf 1 area 0
RT3
router ospf 1
interface ethernet0/0
ip address 192.168.3.2 255.255.255.0
no shut
ip ospf 1 area 0
interface ethernet0/1
ip address 192.168.2.2 255.255.255.0
no shut
ip ospf 1 area 0
RT4
router ospf 1
interface lo0
ip address 2.2.2.2 255.255.255.255
ip ospf 1 area 0
interface ethernet0/0
ip address 192.168.3.3 255.255.255.0
no shut
ip ospf 1 area 0
interface ethernet0/1
ip address 192.168.4.3 255.255.255.0
no shut
ip ospf 1 area 0
interface ethernet0/2
ip address 192.168.5.3 255.255.255.0
no shut
ip ospf 1 area 0
各ルータでOSPFを有効化し、宛先ネットワークへの経路が学習されていることを前提に検証します。
検証①:AD値の違いによるルーティングテーブルの変化
まずは、AD値の違いによってルーティングテーブルがどのように変化するのか確認します。
今回は、OSPFで学習している経路に対してStaticルートを追加します。
変更前のルーティングテーブルを確認する
最初に、RT1でルーティングテーブルを確認します。
show ip route

この時点では、RT1はOSPFによって宛先 2.2.2.2/32 への経路を学習しています。
確認できた値は、次のとおりです。
- AD値:110
- メトリック:11
CiscoルータにおけるOSPFのデフォルトAD値は110です。
また、今回のOSPF経路のメトリックは11となっています。
ここで、同じ宛先に対するStaticルートを追加してみます。
Staticルートを追加する

RT1で、次のコマンドを実行します。
ip route 2.2.2.2 255.255.255.255 192.168.1.2
このコマンドでは、宛先 2.2.2.2/32 へのStaticルートを設定しています。
ネクストホップには、RT2のIPアドレスである 192.168.1.2 を指定しています。
Ciscoルータにおける、ネクストホップを指定した通常のStaticルートのデフォルトAD値は1です。
そのため、今回の経路情報は次のようになります。
| 経路 | AD値 | メトリック |
|---|---|---|
| OSPFルート | 110 | 11 |
| Staticルート | 1 | ― |
この2つを比較すると、StaticルートのAD値のほうが小さくなっています。
したがって、Staticルートが優先されると予想できます。
変更後のルーティングテーブルを確認する
Staticルートを追加したら、再度ルーティングテーブルを確認します。
show ip route

確認すると、宛先 2.2.2.2/32 への経路が、OSPFルートからStaticルートに切り替わっています。
これは、StaticルートのAD値が1であり、OSPFルートのAD値110よりも小さいためです。
この結果から、異なるルーティング情報源から同じ宛先への経路を学習した場合、AD値が小さい経路が優先されることを確認できました。
今回の比較では、OSPFのメトリックが11であることは、Staticルートとの優先順位を決める要素にはなっていません。
Staticルートを削除する
続いて、追加したStaticルートを削除します。

no ip route 2.2.2.2 255.255.255.255 192.168.1.2
削除後、再度ルーティングテーブルを確認します。
show ip route

確認すると、再びOSPFで学習した経路がルーティングテーブルに登録されています。
ここで重要なのは、Staticルートを設定している間も、OSPFによる経路学習そのものが停止していたわけではないという点です。
同じ宛先への経路として、AD値の小さいStaticルートが優先されていました。
Staticルートを削除すると、その経路が利用できなくなります。
その結果、利用可能な経路であるOSPFルートが、再びルーティングテーブルに登録されます。
この動作からも、AD値が異なるルーティング情報源の経路選択に使用されていることが分かります。
検証②:メトリックを変更した場合のルーティングテーブルの変化
次に、OSPFのメトリックを変更し、同じルーティングプロトコル内で経路がどのように選択されるのか確認します。
OSPFでは、メトリックに相当する値を「Cost」と呼びます。
OSPFは、宛先までの経路に含まれるインターフェースのCostを合算し、その合計値を基準に経路を選択します。
今回は、RT1からRT4への直接経路と、RT2またはRT3を経由する経路を比較します。
変更前のルーティングテーブルを確認する
まず、RT1でルーティングテーブルを確認します。
show ip route

変更前の状態では、宛先 2.2.2.2/32 へのネクストホップはRT4です。
この経路のメトリックは11となっています。
RT1からRT4への直接経路が、今回の構成では最も小さいCostを持つためです。
それでは、ほかの経路のメトリックも確認してみましょう。
RT1とRT4の直接経路を無効化する
RT1からRT4への直接経路を一時的に無効化するため、RT1のE0/2をシャットダウンします。

これにより、RT1からRT4への直接経路が使用できなくなります。
続いて、ルーティングテーブルを確認します。

確認すると、RT2とRT3を経由する経路が使用されています。
どちらの経路もメトリックは21です。
つまり、RT1からRT2を経由する経路と、RT1からRT3を経由する経路は、同じCostで宛先に到達できます。
OSPFでは、同じ宛先への最小Costが等しい複数の経路を利用できます。
このような動作を「等コストロードバランシング」と呼びます。
今回はRT2経由とRT3経由のメトリックが等しいため、両方の経路がルーティングテーブルに登録されています。
直接経路を再び有効化する
続いて、RT1のE0/2を再び有効化します。

再度、ルーティングテーブルを確認します。

直接経路が復旧すると、RT1からRT4への経路が再び選択されます。
このときのメトリックは11です。
RT2経由とRT3経由のメトリックは21なので、直接経路のほうが小さいCostを持っています。
そのため、OSPFはメトリック11の直接経路を優先します。
このように、同じOSPFで学習した経路同士の比較では、メトリックが経路選択に使用されます。
直接経路のCostを変更する
次に、RT1からRT4への直接経路のCostを変更してみます。
RT1のE0/2で、OSPFのCostを21に設定します。
RT1のE0/2のコストを21に設定。

ルーティングテーブル確認。

確認すると、RT1からRT4への直接経路ではなく、RT2またはRT3を経由する経路が選択されています。
それぞれのメトリックは、次のとおりです。
| 経路 | メトリック |
|---|---|
| RT1 → RT4 | 22 |
| RT1 → RT2 → RT4 | 21 |
| RT1 → RT3 → RT4 | 21 |
RT1からRT4への直接経路のメトリックは22になりました。
一方、RT2経由とRT3経由のメトリックは21のままです。
メトリックは小さい値が優先されるため、RT2またはRT3を経由する経路が選択されます。
この結果から、同じOSPF内で複数の経路が存在する場合、メトリックが小さい経路が優先されることを確認できました。
今回の検証では、AD値ではなくOSPFのCostを変更したことで、選択される経路が変化しています。
これが、AD値とメトリックの違いを理解するうえで重要なポイントです。
OSPFのメトリック(Cost)の計算方法
ここまでの検証で、OSPFのCostを変更すると、ルーティングテーブルに登録される経路が変化することを確認しました。
では、OSPFのメトリックはどのように計算されるのでしょうか。
OSPFでは、基本的に宛先までの経路上にある各出力インターフェースのCostを合算します。
その合計値が、宛先への経路のメトリックになります。
今回の構成では、RT4のLoopbackインターフェースに設定した 2.2.2.2/32 までのCostを、次のように計算できます。
RT1からRT4への直接経路
変更前の直接経路では、RT1からRT4へのリンクのCostが10です。
また、RT4のLoopbackインターフェースに到達するまでのCostが1です。
そのため、合計値は次のようになります。
10 + 1 = 11
したがって、メトリックは11です。
RT1からRT4への直接経路(Cost変更後)
RT1のE0/2のCostを21に変更すると、計算結果は次のようになります。
21 + 1 = 22
その結果、直接経路のメトリックは22になります。
RT1からRT2を経由してRT4へ向かう経路
RT2を経由する場合は、各リンクのCostを合算します。
10 + 10 + 1 = 21
そのため、メトリックは21です。
RT1からRT3を経由してRT4へ向かう経路
RT3を経由する場合も、同様に計算できます。
10 + 10 + 1 = 21
こちらもメトリックは21です。
各経路のメトリックを整理すると、次のようになります。
| 経路 | Costの計算 | メトリック |
|---|---|---|
| RT1 → RT4 | 10 + 1 | 11 |
| RT1 → RT4(変更後) | 21 + 1 | 22 |
| RT1 → RT2 → RT4 | 10 + 10 + 1 | 21 |
| RT1 → RT3 → RT4 | 10 + 10 + 1 | 21 |
このように、OSPFでは経路上のCostを合算し、最小のメトリックを持つ経路が優先されます。
ただし、実際のCostはインターフェースの設定や機器の仕様などによって異なります。
今回の計算値は、あくまで検証環境における値です。
まとめ
AD値とメトリックは、どちらもルーティングにおける経路選択に関係する値です。
しかし、比較する対象と役割は異なります。
AD値は、異なるルーティング情報源から同じ宛先への経路を学習した場合に、どの情報源を優先するか判断するための値です。
一方、メトリックは、同じルーティングプロトコル内で複数の経路が存在する場合に、どの経路を優先するか判断するための値です。
今回の検証では、StaticルートとOSPFルートを比較しました。
Staticルートを追加すると、デフォルトAD値が1であるStaticルートが、AD値110のOSPFルートよりも優先されました。
また、Staticルートを削除すると、OSPFで学習した経路が再びルーティングテーブルに登録されました。
さらに、OSPFのCostを変更したところ、メトリックの小さい経路へ切り替わることも確認できました。
今回の検証結果を整理すると、次のとおりです。
- AD値:異なるルーティング情報源のどれを優先するか判断する
- メトリック:同じルーティングプロトコル内で、どの経路を優先するか判断する
CCNP ENARSIの学習では、AD値やメトリックの数値を暗記するだけではなく、「どの経路同士を比較するときに、どの値が使用されるのか」を理解することが重要です。
AD値とメトリックを単純に同じ種類の優先順位として捉えるのではなく、それぞれが異なる場面で使用される値だと理解しておきましょう。
実際にCMLで値を変更し、ルーティングテーブルの変化を確認することで、問題演習だけでは曖昧だった違いを整理できました。
今回の内容が、AD値とメトリックの理解を深めるきっかけになれば幸いです。

