RIPのようなディスタンスベクタ型ルーティングプロトコルはコンバージェンスが遅いことや,ルーティングループのような「弱点」があるため,ある程度以上の規模のネットワークでは使われなくなっています。そのためRIPの後継として作られたルーティングプロトコルがOSPFです。中規模以上のネットワークにも対応できるのが利点です。現在の主流である技術を盛り込んだ,高性能ルーティングプロトコルであるOSFPのしくみを覚えましょう。

リンクステート型ルーティングプロトコル

 ルーティング編 第2回で説明したルーティングプロトコルの種別のうち,OSPFはリンクステート型に当てはまります。リンクステート型はディスタンスベクタ型のように「自分のルーティングテーブルに,隣のルータのルーティングテーブルを追加していく」方式と違い,「すべてのルータから情報を集め,現在のネットワークの構成を知る」方式です。

 リンクステート型は,「現在のネットワーク構成」を知るために,「すべてのルータから情報を集め」ます。その情報はルータにデータベースとして保管され,そこからSPF(Shortest Path First)アルゴリズムを使ってSPFツリーと呼ばれる構成図を作成します。この構成図からルーティングテーブルを作成します(図1)。

図1●リンクステート型ルーティングプロトコル

 このように,構成図を作成してからルーティングテーブルを作るため,リンクステート型ではルーティングループが発生しにくくなっています。

 OSPFではリンクステート型ルーティングを実行するため,複数のテーブルやツリーを構成します。作成されるテーブルは以下の呼び方をします。

  • トポロジテーブル ・・・ トポロジデータベース,リンクステートデータベースとも呼ぶ。ルータから集めた情報が記載されている
  • ネイバーテーブル ・・・ 隣接関係を結んだOSPFルータの一覧表。この表にあるルータと情報を交換する
  • SPFツリー ・・・ トポロジテーブルの情報から生成されるツリー。このツリーを基にルーティングテーブルが作成される
  • ルーティングテーブル ・・・ SPFツリーから生成される

 OSPFの特徴は次の通りです。

  • SPFツリーによりルーティングループが起こりにくい
  • イベントトリガアップデートによる高速なコンバージェンス
  • メトリックとして帯域幅を基本としたコストを使う
  • Helloを使ったネイバーの生存確認による障害の高速な検出
  • 認証機能を持つ
  • エリアを使った階層ルーティングによる効率化

ネイバー

 OSPFではRIPのディスタンスベクタ型と違い,情報を交換するルータを特定してから情報を交換します。また,定期的にパケットをやりとりし,相手ルータの生存を確認してネットワーク構成の変化を監視します。この相手ルータのことをネイバー(Neighbor)と呼びます。ネイバーとはそのルータが持つインタフェースの情報(リンクステート)を交換します。この情報をやりとりすることをアドバタイズと呼び,交換する情報をリンクステートアドバタイズメント(LSA:Link State Advertisement)と呼びます。

 OSPFを動作させたルータは,マルチキャスト(224.0.0.5:全OSPFルータあて)でOSPFパケットを送信します。これをHello(ハロー)パケットと呼びます。受け取ったOSPFルータはHelloを送り返した後,双方の持つリンク情報を交換します。双方が同一の情報を持った状態のことを隣接関係(アジェイセンシ:adjacency)と呼びます(図2)。

図2●ネイバーとのやりとり

 図2でも出てきましたが,OSPFで使われるパケットにはそれぞれ呼び名と役割があります。

  • Hello ・・・ ネイバーと隣接関係を結ぶために使う。また生存確認にも使う
  • DBD(Database Description) ・・・ データベースのやり取りに使う
  • LSR(LinkState Request) ・・・ アドバタイズの送信要求に使う
  • LSU(LinkState Update) ・・・ LSAをまとめたもの。リンクステート情報を渡す
  • LSAck(LinkState Acknowledgement) ・・・ LSUやDBDを受け取ったことを示す

 OSPFではルータを識別するために,ルータIDと呼ばれる番号を使用します。ルータIDは32ビットでIPアドレスと同様の表記をします。ルータIDは次の方法で決定されます。

  1. router-idコマンドで入力された値
  2. ループバックインタフェースの中で最も大きなIPアドレス
  3. 起動しているインタフェースの中で最も大きなIPアドレス

 例えば,FastEthernet0/0が192.168.1.1,Serial0が200.100.10.1のIPアドレスをもつルータで,router-idコマンドを使わず,ループバックインタフェースがない場合,200.100.10.1がルータIDになります。

 ループバックインタフェースは論理インタフェースの1つで,自分あてのインタフェースになります。ループバックインタフェースは1つでもインタフェースが稼働していれば,決してダウンしないインタフェースです。router-idコマンドがなく,ループバックインタフェースがない場合,ルータIDは「起動している」インタフェースの中から選ばれてしまいます。したがって障害時などでインタフェースがダウンすると,ルータIDが変更されてしまいます。ルータIDはOSPFで重要な値なので,変更が起こらないようにループバックインタフェースを使うことが多いです(図3図4)。

図3●ループバックインタフェースの作成
図3●ループバックインタフェースの作成

図4●show interface loopback0
図4●show interface loopback0

OSPFネットワークタイプ

 OSPFではネットワークを以下の3種類に分けて認識します(図5)。

  • ブロードキャストマルチアクセス ・・・ イーサネット
  • 非ブロードキャストマルチアクセス(NBMA) ・・・ フレームリレーやX.25のようなブロードキャストの使えないマルチアクセスネットワーク
  • ポイントツーポイント ・・・ PPPやHDLCのような,専用線やダイヤルアップ
    • ポイントツーマルチポイント ・・・ 論理インタフェースを使うポイントツーポイントの集合体

図5●OSPFネットワークタイプ
図5●OSPFネットワークタイプ

 OSPFではこれらのネットワークタイプの違いにより,動作が多少異なります。まず,Helloを定期的に送受信し,ネイバーの生存を確認するタイミングが異なります。また,Helloを受信しなかったら相手がダウンしたとみなす時間(Deadタイマ)も異なります。

ネットワークタイプHello間隔Deadタイマ
マルチアクセスネットワーク10秒40秒
NBMA30秒120秒
ポイントツーポイント10秒40秒

 ネイバーの検出方法も異なります。ブロードキャストマルチアクセスネットワークではマルチキャストを使いますが,NBMAではマルチキャストが使えないので手動でネイバーを設定しなければなりません。またポイントツーポイントの場合もマルチキャストでネイバーを検出します。

 最大の違いは,指定ルータ(Designated Router:DR)の存在です。ブロードキャストマルチアクセスネットワークやNBMAのようなマルチアクセス環境の場合,多くのルータと隣接し,隣接関係を結ぶことになります。ですが,ルータの数が多い場合,この隣接関係が多くなりすぎてアドバタイズに大きな処理と時間がかかってしまいます。ルータの数をn台とした場合,n ×(n−1)÷ 2の隣接関係が必要となります。

 このため,マルチアクセスネットワークに1台指定ルータを指定し,それぞれのルータは指定ルータとだけ隣接関係を結びます。ただし,指定ルータがダウンしてしまうと機能しないというデメリットが存在しますので,予備の指定ルータ(Backup Designated Router:BDR)も1台選び,DRとBDRの2台と隣接関係を結ぶことになります(図6)。

図6●隣接関係の数
図6●隣接関係の数

 ルータは隣接関係を結んでいるルータとLSAをアドバタイズします。DRがある場合は,DRのみと隣接関係を結ぶので,DRにだけLSAをアドバタイズすることになります(図7)。

図7●DRを使ったアドバタイズ

 指定ルータはHelloをアドバタイズする際に決定されます。マルチアクセスネットワークの中で,プライオリティが最も高く設定されているルータが指定ルータになります。プライオリティが同じ値の場合は,ルータIDが最も大きな値のルータが指定ルータになります。

 これらのネットワークタイプの違いを表にまとめると次のようになります。

ネットワークタイプHello間隔DeadタイマDRネイバー
マルチアクセスネットワーク10秒40秒あり自動検出
NBMA30秒120秒あり手動設定
ポイントツーポイント10秒40秒なし自動検出

シングルエリアOSPFとマルチエリアOSPF

 OSPFはRIPのようにホップ数の制限がなく,またコンバージェンスも高速なため,大きなネットワークで使用できます。ですが,あまりルータやネットワーク数が多くなりすぎると,トポロジデータベースが増大し,SPFツリーの計算時間がかかるようになってしまいます。そのため,OSPFではネットワークを分割する「エリア」という概念を使用します。ここまでで説明してきたのは,エリアが1つのため「シングルエリアOSPF」と呼ばれます。複数のエリアを使う場合は「マルチエリアOSPF」と呼ばれます。

 マルチエリアOSPFでは,ネットワークを複数のエリアに分割します。エリア内はそれぞれシングルエリアOSPFで動作し,ネットワークの情報をアドバタイズします。ただし,エリアをまたぐ情報のアドバタイズは,エリアの境界にあるルータ(Area Border Router:ABR)が集約してアドバタイズします(図8)。

図8●マルチエリアOSPF
図8●マルチエリアOSPF

 このようにエリアを分割することにより,LSAがアドバタイズされる相手が限定され,さらにエリア外の情報は集約されるため,トポロジデータベースのサイズが増大しなくなり,処理量を減少させることができます。

 マルチエリアOSPFの場合,ルータに役割があります。また,エリアにも種類が存在します(図9)。

  • ルータの種類
    • 内部ルータ ・・・ 他のエリアと接しないルータ
    • エリア境界ルータ(Area Border Router:ABR) ・・・ 複数のエリアを接続させるルータ。複数のエリアの情報を持ち,ルートの集約などを行う
    • AS境界ルータ(AS Boundary Router:ASBR) ・・・ OSPF以外のルーティングプロトコルのネットワークとの境界にあるルータ
    • バックボーンルータ ・・・ バックボーンエリアに存在するルータ
  • エリアの種類
    • 標準エリア ・・・ 標準的なエリア
    • バックボーンエリア ・・・ すべてのエリアと接するエリア。エリア間の通信は必ずバックボーンエリアを通過しなければならない。エリア番号は必ずゼロ
    • スタブエリア ・・・ 外部ルートをデフォルトルートで受け取るエリア
    • トータリースタブエリア(TSA) ・・・ Cisco社独自設定のエリア。エリア内ルート以外はすべてデフォルトルートで受け取るエリア
    • NSSA(Not So Stubby Area) ・・・ スタブエリアだが,ASBRを配置できるルータ

図9●エリアとルータの種類
図9●エリアとルータの種類

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