EIGRPのメトリック計算ってめんどくさそうで敬遠していたのだが、やっぱりちゃんと覚えないとだめだと思いあらためて確認したら、それほど複雑ではなかった。
基本的に、経路上の一番小さい帯域幅と、遅延の合計がわかれば計算できる。
インターフェースの帯域幅と遅延は、show interfaceで確認できる。
CMLのIOSvルータ
Bandwidth: 1000000 Kbit/sec(=1000Mbit/sec = 1Gbit/sec), Delay 10μsec
ASA5506
Bandwidth 1000 Mbps(=1Gbps), Delay 10μsec
Cisco892
Bandwidth: 100000 Kbit/sec(=100MKbit/sec), Delay 100μsec
あれ、GigabitEthernetなのに100M?
FastEthernetと同じ....
K値はメトリックを計算するときにかける係数、つまり重みだが、デフォルトでは帯域幅と遅延以外はゼロである。つまり、帯域幅と遅延以外の値はゼロになる。つまり、無視される。
そして、帯域幅と遅延にかけられる係数のデフォルト値は1、つまりそのままの値である。
だから、K値はとりあえず無視してよい。帯域幅は、大きいほど速い。つまり、目的の経路までに速く到達できる。帯域幅をそのまま足すと速いほど大きい値になってしまう。そこで、ある値を基準として、どれだけ小さいかを計算する。
複数のリンクを経る場合、たとえば1G→100M→1G→10G→10M→1G→1G という場合、一番遅いところを採用する。厳密にルータAからルータxへ到達する時間を測定するには経由するすべてのインターフェースの帯域幅を考慮しなければならないだろうが、eigrpのメトリック計算においてはそこまではしない。
1G→1G→1G→1G→1G→100M→1G→1G であっても、
100M→100M→100M→100M→100M→100M→100M→100Mであっても、
100Mが採用される。
ちなみにメトリックの正式な計算式はこうである。
うわぁ...という感じだが、先述のようにK1とK3以外はゼロなので、こうなる。
これでもまだちょっとメンドクサイが、よく見るとそんなに難しくない。
10^7 / Min Bandwidth というのは、
10^7 = 10000000 Kbit/sec で、= 10000Mbit/sec = 10Gbit/sec
「10Gを最小帯域幅で割った値」である。
割るといっても全部10^nなので、最小帯域幅が 1Gなら10で、100Mなら100。10Gなら1と、計算というほどの計算ではない。
ディレイも同様で1Gの場合10μsecだから1, 100Mの場合100μsecだから10。
この構成でR5のルーティングテーブルを見ると
192.168.3.0/24, 192.168.4.0/24 のメトリックは3072である。
1Gのインターフェースを二つ経由するから、最小帯域幅は1G, 遅延の合計は 20、
10G/1G + 20/10 = 12 で、
256 * 12 = 3072
である。
経由するルータが3つ4つと増えても、
帯域幅が同じなら遅延だけ増やせばよい。
上記は1ホップ先だが、3ホップ先で経由するインタフェースは全部1Gのデフォルト設定であれば、
256*14 = 3584