OSPFはRIPに変わるルーティングプロトコルとして活用されています。もちろんCisco社製のルータでもOSPFは使用可能です。実際,CCNA試験や上位のCCNP試験のBSCIではOSPFの問題がよく出題されます。今回はCCNA試験の範囲であるシングルエリアOSPFの設定と,動作の確認方法を覚えましょう。

OSPFの基本設定

 Cisco社製ルータでOSPFを動作させるには,他のルーティングプロトコルを動作させる場合と同様に,routerコマンドを使用します。

  • (config)# router ospf [プロセスID] ・・・ OSPF設定モードに入る
    • [プロセスID]
      • OSPFプロセスの識別番号。1~65,535の任意の値

 プロセスIDはそのルータで動作しているOSPFルーティングプロセスを識別する番号です。1つのルータでOSPFルーティングプロセスを複数動作させる場合の識別番号になります。この値は設定しているルータ内で一意であればよく,他のルータと一致させる必要はありません(EIGRPの場合は,router igrp(eigrp)の後ろの値はAS番号ですので,他のルータも同じ値を使わなければいけません)。

 さらに,ルーティングプロトコルを有効にするネットワークを指定する必要もあります。RIPやIGRPと同様のnetworkコマンドを使用しますが,オプションが増えています。

  • (config-router)# network [ネットワークアドレス] [ワイルドカードマスク] area [エリアID]
    • [ネットワークアドレス]
      • ルーティングプロトコルを有効にするネットワークのネットワークアドレス
    • [ワイルドカードマスク]
      • アドレスのワイルドカードマスク
    • [エリアID]
      • そのネットワークが所属するエリアのID。シングルエリアOSPFでは0にする

 ワイルドカードマスクはIPアドレス編の第4回のACLで登場した「ネットワークの範囲を決める」ために使われる値です。もう一度説明をしますと,ワイルドカードマスクはIPアドレスと同じ32ビットの値で同じ表記法で書きます。IPアドレスとワイルドカードマスクのビットを比較し,ワイルドカードマスクのビットが0のところはそのIPアドレスのビットを,1のところはIPアドレスのビットは0もしくは1どちらの値でもよい,という意味になります(図1)。

図1●ワイルドカードマスク
図1●ワイルドカードマスク

 例えば,IPアドレスが192.168.1.136,ワイルドカードマスクが0.0.0.3の場合は,192.168.1.136,192.168.1.137,192.168.1.138,192.168.1.139の4つのアドレスを指すことになります。OSPFの設定の場合は,基本的にサブネットマスクのビットを反転させている,と考えればよいでしょう。

 エリアIDはそのネットワークが所属するエリアの番号を指定します。エリア0は必ずバックボーンエリアを示します。シングルエリアOSPFの場合はエリアを使いませんので,すべてバックボーンエリアにあることにします。よって,必ずエリア0を指定します(図2)。

図1●ワイルドカードマスク
図1●ワイルドカードマスク

OSPFの詳細設定

 OSPFはルータIDを使用してルータを識別します。ルータIDは前回(第6回)でも説明したように,router-idコマンド,ループバックインタフェースのIPアドレスの中で最も高い値,インタフェースのIPアドレスの中で最も高い値,の順で決定されます(図3)。

  • (config-router)# router-id [ルータID]
    • [ルータID]
      • OSPFのルータID。IPアドレスと同じ形式で指定

図3●router-idコマンド
図3●router-idコマンド

 ルータIDは,OSPFが起動された時点で決定され,変更されません。このため途中でrouter-idコマンドを実行したり,新たにIPアドレスを設定したり,IPアドレスを変更したりしてもルータIDは変わりません。したがってルータIDを変更するには,clear ip ospf processコマンドを使うか,ルータを再起動する必要があります。

 また,ブロードキャストネットワークの場合,OSPFはBRとBDRを選出します。その時使用するのがプライオリティです。プライオリティは手動で設定することができます。DR/BDRはネットワークごとに選出されるため,設定は設定したいネットワークに所属するインタフェース設定モードで行います。

  • (config-if)# ip ospf priority [プライオリティ]
    • [プライオリティ]
      • デフォルトは1。0~255の範囲で指定できる。0にしたルータはDR/BDRに選出されなくなる

 OSPFのメトリックは帯域幅から算出するコストです。コストは10の8乗(100,000,000:100メガ)を帯域幅で割った値になります。一般的なコストは,次のようになります。

インタフェース・帯域OSPFコスト
Serialインタフェース デフォルト(1544Kbps)64
DS0(64Kbps)1562
Ethernetインタフェース(10Mbps)10
FastEthernetインタフェース(100Mbps)1

 シリアルインタフェースで実際の帯域幅にコストを合わせたい場合は,Bandwidthコマンドを使う必要があります。また,このコストではファストイーサネットもギガビットイーサネットもコストが1になってしまいますが,手動でコストを変更することはできます。

  • (config-if)# ip ospf cost [コスト]
    • [コスト]
      • そのインタフェースに設定するコスト

 また,OSPFのHelloパケットの間隔も変更できます。Hello間隔はブロードキャストネットワークが10秒,NBMAが30秒,Deadタイマはそれぞれ40秒,120秒がデフォルトです。設定はHelloパケットを送るインタフェースの設定モードで行います。

  • (config-if)# ip ospf hello-interval [Hello間隔]
  • (config-if)# ip ospf dead-interval [Deadタイマ]

 Hello間隔とDeadタイマの両方,もしくは片方のみ変更できます。ただし,Hello間隔だけを変更した場合,DeadタイマはHello * 4の値に自動的に変更されます。また,Hello間隔はネイバーと同じでなければいけません。もし,双方のHello間隔が異なる場合,その2台のルータは隣接関係を結べません。

OSPFの設定の確認

 OSPFの動作を確認するには,showもしくはdebugコマンドを使用します。showコマンドでOPSFの動作を確認するためには,show ip route,show ip protcolsなど,ルーティングプロトコルの動作を確認する汎用的なコマンドを使います(図4)。

図4●show ip protocols
図4●show ip protocols

 さらに,show ip ospfで始まるコマンドを使ってOSPFの動作を確認できます。

  • # show ip ospf ・・・ OSPFトラフィックの状況やSPFツリーの作成回数などを調べる
  • # show ip ospf neighbor {detail} ・・・ ネイバーと隣接関係の状態。detailオプションを付けるとプライオリティなども確認できる
  • # show ip ospf interface {インタフェース} ・・・ OSPFでのインタフェースの状態の確認
  • # show ip ospf database ・・・ リンクステートデータベースの状態の確認

 show ip ospfでは,OSPF全体の状況を確認することができます。特にSPFツリーの計算回数を確認する時などに使用します(図5)。

図5●show ip ospf
図5●show ip ospf

 show ip ospf neighborはOSPFのネイバーの状態を確認します。detailオプションを付けない場合は,一覧表示になります。一方,detailオプションを付けた場合は,プライオリティやDR/BDRのアドレスなどを確認できるようになります(図6図7)。

図6●show ip ospf neighbor
図6●show ip ospf neighbor

図7 show ip ospf neighbor detail
図7 show ip ospf neighbor detail

 show ip ospf interfaceでは,そのインタフェースのIPアドレス,所属エリア,ネットワークタイプ,ネットワークでのDR/BDR,タイマなどを確認できます(図8)。

図7 show ip ospf neighbor detail
図7 show ip ospf neighbor detail

 show ip ospf databaseはリンクステートデータベースの中身を確認することができます(図9)。

図9 show ip ospf database
図9 show ip ospf database

 トラブルシューティングでは,これらのshowコマンドの結果から原因を探っていくことになります。よくあるトラブルの原因としては次のようなものが挙げられます。

  • ネイバーとのHello間隔,Deadタイマが異なるためネイバーと隣接関係になっていない
  • ワイルドカードマスクが間違っている
  • エリア番号が間違っている
  • ネットワークの種類(ブロードキャスト,NBMAなど)が違う
  • ルータIDが重複している

 また,OSPFのやりとりを確認したい場合は,debugコマンドを使用します。

  • # debug ip ospf event ・・・ OSPFでのイベントを報告する
  • # debug ip ospf adj ・・・ OSPFでのネイバーとのイベントを報告する

 debug ip ospf eventではHelloのやりとり,隣接関係の確立,DR/BDRの選出,SPFツリーの生成など,OSPFで行われたことに関する情報が確認できます(図10)。

図9 show ip ospf database
図9 show ip ospf database

●OSPFについてより詳しく知りたい人や,上位資格のCCNPを目指す人は,以下も参考になります
CCNPへの道(BSCI編)--「OSPF編」