EIGRPのクラシック メトリックおよびワイド メトリック

クラシックメトリックトワイドメトリック

EIGRPのクラシックメトリックとワイドメトリックは、EIGRPルーティングプロトコルで使用されるメトリック計算方式の2つの異なる形式を指します。これらは、メトリック計算の際に考慮されるパラメータの範囲や精度の違いに関連しています。

クラシックメトリック(Classic Metric)

クラシックメトリックは、従来のEIGRPで使用されるメトリック計算方式です。この方式は、IPv4環境や、より古いネットワークインフラでよく使われます。メトリックは、次のパラメータに基づいて計算されます。

  • 帯域幅(Bandwidth): 最も遅いリンクの帯域幅を基に計算。
  • 遅延(Delay): 経路上の遅延の合計。
  • 信頼性(Reliability): 接続の安定性を表す数値(0〜255)。
  • 負荷(Load): リンクの使用率(0〜255)。
  • MTU(Maximum Transmission Unit): 最大転送単位(MTU)は計算に含まれないが、ルート選定の要素となる。

クラシックメトリックの計算式は以下の通りです。

メトリック = 256 * (K1 * スケール帯域幅) + (K2 * スケール帯域幅)/(256 – 負荷) + (K3 * スケール遅延) * (K5/(信頼性 + K4))

デフォルトの K 値は次のとおりなので実質的な計算式は 256 * (スケール帯域幅 + スケール遅延)となります。

  • K1 = K3 = 1
  • K2 = K4 = K5 = 0
メトリック計算式
スケール帯域幅107/最小帯域幅(Kbit/秒)
スケール遅延遅延/10

計算式で256を掛ける理由

EIGRP の式で 256 を掛けるのは、24 ビット メトリックを持つ IGRP との下位互換性を確保するためです。EIGRPの前身であるIGTPでは24ビットのメトリックを使用しており、256 を掛けることで、24 ビット メトリックを 32 ビット メトリックに変換します。この掛け算は、メトリックのバイナリ値を 8 桁左にシフトするものです。たとえば、IGRP で 5876966 というメトリックがある場合、24 ビット バイナリでは次のようになります。

010110011010110011100110

これを 256 倍すると、すべてのビットが 8 ビット左にシフトされ、末尾に次のようにゼロが追加されます。

01011001101011001110011000000000

ワイドメトリック(Wide Metric)

ワイドメトリックは、次世代の高速ネットワークやIPv6に対応するために拡張されたEIGRPメトリックです。従来のクラシックメトリックでは高速なリンク(ギガビットやテラビット単位)に対して正確な計算が困難になるため、メトリックの計算方式を改良し、より大きな値を扱えるようにしたものです。特に、IPv6のEIGRP環境ではワイドメトリックが標準的に使用されます。

ワイドメトリックの計算は、クラシックメトリックと同じパラメータを使用しますが、より精細な値を使うため、非常に高速なリンクでも正確にメトリックを反映できます。ワイドメトリックはEIGRPを名前付きモードで動作させれば有効になります。

ワイドメトリックの計算式は以下の通りです。

メトリック = [(K1 * 最小スループット + {K2 * 最小スループット}/256 – 負荷) + (K3 * 合計遅延) + (K6 * 拡張属性)] * [K5/(K4 + 信頼性)]

デフォルトの K 値は次のとおりなので実質的な計算式は (K1 * 最小スループット) + (K3 * 総遅延)となります。

  • K1 = K3 = 1
  • K2 = K4 = K5 = 0
  • K6 = 0

メトリック計算式
最小スループット(107* 65536)/帯域幅(Kbit/秒)
総遅延 遅延 * 65536 /10^6

総遅延で使用される遅延は以下の計算式で算出されます。

遅延=DLY*10^6

帯域が1Gbpsを超えていて、遅延が明示的に指定されておらずIOSが計算ができないインターフェイス(ループバック等)の場合は以下の計算式が使用されます。

遅延=(10^7 *10^6)/帯域幅(Kbit/秒)

metric rib-scaleコマンド

EIGRPでは、より大きな帯域幅を計算すると、メトリックがCisco RIBに適合しなくなることがあります。その場合、metric rib-scaleコマンドを使用して、RIBスケーリング係数を設定します。このコマンドを実行すると、RIB内のEIGRPルートがすべてリセットされ、新しいメトリック値に置き換えられます。

K値の変更

変更コマンド

EIGRPのメトリック計算に使用されるK値はデフォルトでは上記の通りの設定となっているのですが、この設定を変更することが出来ます。
Router(config-router)#metric weight

確認コマンド

K値の設定はshow ip protocolsコマンドで確認することが出来ます。

クラシックメトリックの動作確認

帯域幅と遅延についてはshow interfacesコマンドで確認します。

Router1からRouter2のLoopback IF2の2.2.2.2までの最低帯域幅は1000000Kbit/sec、合計遅延は5010なのでこれを計算式に当てはめると 、

256 * ((10^7÷1000000) + (5010÷10) = 130816

となります。

show ip eigrp topologyコマンドでメトリック(FD)を確認することが出来ます。計算結果通り130816と表示されています。

ここで表示されているRD(128256)はRouter2がLoopback IPに到達するまでのメトリックでRouter2から報告されているルートになります。

ワイドメトリックの動作確認(最低帯域幅が100Mbpsの場合)

帯域幅と遅延についてはshow interfacesコマンドで確認します。

これを計算式に当てはめると
最小スループット=(10^7*65536)/1000000 = 655360
Router2からLoopback2までの遅延=5000 * 10^6 = 5000000000
Router1からRouter2までの遅延=10 * 10^6 = 10000000
遅延=5000000000 + 10000000 = 5010000000
総遅延=5010000000*65536/10^6 = 328335360

655360+328335360= 328990720
となります。show ip eigrp topologyコマンドで確認することが出来ます。

なお、show ip routeで表示されるメトリック値はRIBスケーリング係数で割られた値が表示されます。
RIBスケーリング係数は128です。

ワイドメトリックの動作確認(最低帯域幅が8Gbpsで遅延を明示的に指定する場合)

帯域幅と遅延についてはshow interfacesコマンドで確認します。

遅延を明示的に指定しています。

Router1からRouter2のLoopback IF2の2.2.2.2までの最低帯域幅は8000000Kbit/秒です。

これを計算式に当てはめると
最小スループット=(10^7*65536)/8000000 = 81920
Router2からLoopback2までの遅延=5000 * 10^6 = 5000000000
Router1からRouter2までの遅延=10*10^6 = 10000000
遅延=5000000000 + 10000000 = 5010000000
総遅延=5010000000*65536/10^6 = 328335360

81920+328335360 = 328417280
となります。show ip eigrp topologyコマンドで確認することが出来ます。

ワイドメトリックの動作確認(最低帯域幅が8Gbpsで遅延を明示的に指定しない場合)

帯域幅と遅延についてはshow interfacesコマンドで確認します。

遅延を明示的に指定はしていません。(デフォルトで5000マイクロ秒なので、delay 500で指定した場合と数値は同じです)

Router1からRouter2のLoopback IF2の2.2.2.2までの最低帯域幅は8000000Kbit/秒です。

これを計算式に当てはめると
最小スループット=(10^7*65536)/8000000 = 81920
Router2からLoopback2までの遅延=(10^7*10^6)/8000000 = 1250000
Router1からRouter2までの遅延=10*10^6 = 10000000
遅延=1250000 + 10000000 = 11250000
総遅延=11250000*65536/10^6 = 737280

81920+737280 = 819200
となります。show ip eigrp topologyコマンドで確認することが出来ます。

遅延を明示的に指定した場合と比較をして、計算式が変わり算出されるメトリックや総遅延に差があることがわかります。

参考文献

EIGRP ワイドメトリックの設定