OSPFのコスト
OSPFはメトリックとして、帯域幅から自動的に計算されるコストを採用しています。通常は、自動的に計算されるOSPFコストをそのまま利用して、経路を選択することが多いのですが、コストを明示的に変更して、OSPFによる経路選択を変更することができます。ここでは、OSPFのコストの変更のためのコマンドとその変更を確認する方法について解説します。
OSPFコストを変更するには、次の3つのコマンドがあります。
- bandwidthコマンド
- ip ospf costコマンド
- auto-cost referenece-bandwidthコマンド
これらのコマンドで変更したOSPFコストは、show ip ospf interfaceコマンドで確認することができます。各コマンドについて見ていきましょう。
※「CiscoルータでのOSPF基本設定」を基にしています。
bandwidthコマンド
bandwidthコマンドは、OSPF固有のコマンドでなく、インタフェースの帯域幅を明示的に設定するためのコマンドです。インタフェースの帯域幅を変更することによって、帯域幅から自動的に計算されるOSPFコストを変更することにつながります。
インタフェースの帯域幅を変更するには、インタフェースコンフィグレーションモードで次のコマンドを入力します。
(config-if)#bandwidth [kbp]
bandwidthコマンドで変更したインタフェースの帯域幅は、show interfaceコマンドで確認できます。 具体的にR1で確認してみましょう。現在のR1のSerial1インタフェースの帯域幅は、show interfaceコマンドより、1544kbpsです。
R1#show interfaces serial 1
Serial1 is up, line protocol is up
Hardware is HD64570
Internet address is 192.168.12.1/30
MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation HDLC, loopback not set
Keepalive set (10 sec)
~以下、略~
※R1とR2のSerialリンクのクロックレートは64kbpsです。Serialインタフェースの帯域幅のデフォルトはクロックレートを反映したものではないことに注意してください。
そして、R1のSerial1インタフェースのOSPFコストは、show ip ospf interface serial1より64です。
R1#show ip ospf interface serial 1
Serial1 is up, line protocol is up
Internet Address 192.168.12.1/30, Area 0
Process ID 1, Router ID 192.168.0.1, Network Type POINT_TO_POINT, Cost: 64
Transmit Delay is 1 sec, State POINT_TO_POINT,
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
~以下、略~
この状態から、R1のSerial1インタフェースの帯域幅をbandwidthコマンドで次のように変更します。
R1(config)#interface serial 1 R1(config-if)#bandwidth 64
bandwidthが64kbpsとなったので、OSPFコストは
100[Mbps]/64[kbps]=1562
になります。もう一度、show ip ospf interface serial 1を確認すると、OSPF コストが1562になっていることがわかります。
R1#show ip ospf interface serial 1
Serial1 is up, line protocol is up
Internet Address 192.168.12.1/30, Area 0
Process ID 1, Router ID 192.168.0.1, Network Type POINT_TO_POINT, Cost: 1562
Transmit Delay is 1 sec, State POINT_TO_POINT,
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
~以下、略~
ip ospf costコマンド
インタフェースの帯域幅を変更するのではなく、明示的にOSPFコストをip ospf costコマンドで指定することもできます。たとえば、R1で次のようにip ospf costコマンドを入力すると、Serial1のOSPFコストを100に変更するこ とができます。
R1(config)#interface serial 1
R1(config-if)#ip ospf cost 100
R1(config-if)#end
R1#show ip ospf interface serial 1
R1#sh ip ospf interface serial 1
Serial1 is up, line protocol is up
Internet Address 192.168.12.1/30, Area 0
Process ID 1, Router ID 192.168.0.1, Network Type POINT_TO_POINT, Cost: 100
Transmit Delay is 1 sec, State POINT_TO_POINT,
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
~以下、略~
ip ospf costコマンドで設定したOSPFコストはインタフェースの帯域幅から計算したコストを上書きします。
auto-cost reference-bandwidthコマンド
100Mbps以上の帯域幅のインタフェースを利用している場合は、デフォルトのOSPFコストの計算式では対応できません。100Mbps以上の帯域幅のインタフェースに応じたOSPFの経路選択を行うために、インタフェース1つ1つにip ospf costコマンドでOSPFコストを明示的に設定するのは、とても大変な作業になります。
100Mbps以上のインタフェースの帯域幅をOSPFコストに反映させるために、OSPFコストを計算する計算式の分子を変更することができます。分子を変更するには、OSPFのコンフィグレーションモードで次のコマンドを入力します。
(config-router)#auto-cost reference-bandwidth [Mbps]
R1でOSPFコストの計算式の分子を500に変更してみましょう。ip ospf costコマンドが入っていると、帯域幅から計算したOSPFコストを上書きしてしまうので、ip ospf costコマンドを削除した上で、次のように設定します。
R1(config)#interface serial 1
R1(config-if)#no ip ospf cost
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#auto-cost refference-bandwidth 500
% OSPF: Reference bandwidth is changed.
Please ensure reference bandwidth is consistent across all routers.
R1(config-router)#end
R1#show ip ospf interface ser 1
Serial1 is up, line protocol is up
Internet Address 192.168.12.1/30, Area 0
Process ID 1, Router ID 192.168.0.1, Network Type POINT_TO_POINT, Cost: 7812
Transmit Delay is 1 sec, State POINT_TO_POINT,
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
~以下、略~
上記の出力より、R1のSerial1インタフェースのOSPFコストが
500[Mbps]/64[kbps]=7812
に変更されたことがわかります。
auto-cost reference-bandwidthコマンドを設定した直後に、「Please ensure reference bandwidth is consistent across all routers.」と注意を促すメッセージが出ています。計算式の分子を変更する際は、すべてのルータで変更するように気をつけてください。
更にOSPFを究めるなら!Gene作成の『究めるOSPF』がお勧め!詳細はこちら↓
http://www.n-study.com/library/2005/11/ccnaccnpccieosp.html







