OSPFとは

 OSPFの設定では、専門的な用語が数多く出てきます。YAMAHAルータにおけるOSPFの設定を紹介する前に、まずOSPFの用語や概念について説明していきます。

OSPFの特徴

 OSPFは、IETFによって標準化されているリンクステート型のルーティングプロトコルです。マルチベンダのルータ間でルーティングが可能で、広く使われているルーティングプロトコルです。す。OSPFの大きな特徴の一つに、エリアの概念があります。

エリアの概念

 OSPFネットワークでは、小さなネットワークを1つのエリアとして設定し、複数のエリアをエリア0(バックボーン)に接続することで、ネットワークを階層構造に構築するようになっています。

 エリアを単位とし、グループ管理する設計アプローチによって、ネットワークの変化をエリア内に留め、パフォーマンスを向上させています。その結果、コンバージェンスの時間が短縮されます。

 各エリアは、必ずエリア0(バックボーン)に接続しなければなりません。複数のエリアを接続するOSPFネットワークのことをマルチエリアOSPFと呼び、エリア0(バックボーン)のみで構成されるOSPFネットワークをシングルエリアOSPFと呼んでいます。


※正確には、各エリアはABRによって接続されます。

 OSPFは、RIPやIGRPなどのディスタンスベクタールーティングプロトコルと比べ、大規模なネットワークを構築することができます。

しかし、ネットワークの規模が大きくなってくると、問題が浮かび上がってきます。

 OSPFは、最短パスを求めるのに計算にダイクストラのアルゴリズムを使用しています。このアルゴリズムは、ルータへの負荷がとても高いので、ルータのCPUやメモリ資源をかなり消費します。ネットワークの規模が大きくなればなるほど、ルータへの負荷が高くなってしまいます。

 また、ネットワークの規模が大きくなるということは、障害やネットワークの変更が発生する可能性が高くなるので、頻繁にSPF(最短経路優先)の再計算が必要になってきます。

 さらに、ルータの数も増えることになりますから、トポロジーデータベース(ルーティングテーブルを作るために使用するデータベース)を構築するためにルータ同士が交換しているLSAの数も増えてしまします。

 そこで、OSPFでは、ネットワークの規模が大きくなる場合には、上の図のように、ネットワークを複数のエリアに分割してマルチエリアでネットワークを構築します。

 OSPFネットワークでは、小さなネットワークを1つのエリアとして設定し、複数のエリアをエリア0(バックボーン)に接続することで、ネットワークを階層構造に構築することができます。

 このように、1つのネットワークを複数のエリアに分割し、各エリア内とエリア間のルーティングとに分けてゆく方式を「階層型ルーティング」と呼んでいます。

 このエリアを定義する設計アプローチによって、LSAが届く範囲を分割することができ、ネットワークの変化をエリア内に留め、パフォーマンスを向上させています。

 上でも説明しましたが、OSPFでは、各エリアを必ずエリア0(バックボーンエリア)に接続しなければならないというルールがあります。エリア0以外は、必ず、このバックボーンエリアに接続しなければなりません。シングルエリアOSPFについては、必ずエリア0だけで構成するというルールがあります。

ルータタイプ

 OSPFルータは、役割に応じて、ルータを3つのタイプの名称で呼んでいます。その役割によって、送受信するアドバタイズの種類や、SPFツリー情報が異なっています。

●Internal : 内部ルータ(Internal Router)

ルータの全てのインターフェイスが同一エリア内のルータしか接続していないルータ。他エリアには、接していません。

●ABR : エリア境界ルータ(Area Border Router)

他のエリアへ接続されたインターフェイスを持つルータ。

ASBR : AS境界ルータ(AS Boundary Router)

 他のASや、OSPF以外のルーティングプロトコルを使用しているネットワークへ接続しているインターフェイスを持つルータ。

OSPF(経路学習プロセス)

ここでは、OSPFの経路学習のプロセスとOSPFルータの負荷を軽減させる仕組みであるDR・BDRについて説明します。

 OSPFがルータに設定されると、OSPFプロセスに参加している全てのインターフェイスからHelloパケットが送信し、隣接ルータを検出し、ネイバーテーブルに登録します。

 隣接関係を形成したら、LSA(Link State Advertisement)というIPアドレスやサブネットマスク、メトリックなど、リンクの情報を隣接ルータにマルチキャストで送信します。

 OSPFルータは、このLSAを収集して自分のリンクステートデータベースに登録します。全てのLSAを学習し終わったら、ダイクストラ(Dijkstra)のSPF(Shortest Path First algorithm)を実行して各宛先ネットワークの最短パスを計算します。

 このSPFの計算の際には、コストという、「108/帯域幅」で求められる値が使われます。求めた最短パスは、ルーティングテーブルに登録されます。

帯域幅コスト
56kbps1785
T1(1.544Mbps)64
10Mbps10
100Mbps1

 OSPFの学習プロセスが実行され、ルーティングテーブルが完成すると隣接関係を維持するために、マルチキャストアドレス「224.0.0.5」を使ってHelloパケットを送信するようになります。

このHelloパケットを送信する間隔は、ネットワークの種類によって違ってきます。

●ブロードキャストネットワーク

・デフォルトのHello間隔 ・・・ 10秒
・デフォルトのDead間隔 ・・・ 40秒

●NBMAネットワーク

・デフォルトのハロー間隔 ・・・ 30秒
・デフォルトのデッド間隔 ・・・ 120秒

 デフォルトでは、Dead間隔は、Hello間隔の値の4倍の値に設定されています。Dead間隔とは、OSPFFルータが停止していると見なす時間です。Helloパケットが4回受信されないと無効であると判断します。

 Hello間隔、Dead間隔の設定は、管理者が任意に設定することができますが、隣接ルータ間で一致していなければなりません。

OSPF(DR・BDRの選出)

 OSPFでは、ルーティング情報を共有するために、近接関係を結びます。この近接関係は、adjacency(アジャセンシ)と呼ばれます。自分が接続されているOSPFネットワーク上で、隣接関係が確立されると、リンクステート情報を交換します。

例えば、下の図のように5台のルータがある場合、10の隣接関係が必要になります。

n 台のルータがあれば、n×(n-1)÷2 の隣接関係が必要となります。

 と言うことは、10台ルータがあれば、10×(10-1)÷2=45の隣接関係が必要になることになります。これだと、ルータの数が増えれば増えるほど、よりたくさんの隣接関係が必要になってきます。

 隣接関係を確立して、全ての隣接ルータとリンクステート情報を交換すると、オーバーヘッドがすごいことになってしまいます。

DR、BDRの選出

そこで、OSPFでは、次の3種類のネットワークを自動的に認識し、DR、BDRを選出するようになっています。

※DR(designated router): 「代表ルータ」と呼ばれています。
※BDR(backup designated router: 「バックアップ代表ルータ」と呼ばれています。
※DROTHER : DR、BDRに選出されなかったルータです。

  • ブロードキャストマルチアクセス: イーサネットなど
  • ポイントツーポイントネットワーク: PPP、HDLC
  • 非ブロードキャスト マルチアクセス(NBMA): フレームリレーなど

 ブロードキャストマルチアクセス、非ブロードキャスト マルチアクセスでは、DR、BDRの選出を行い、ポイントツーポイントネットワークでは、DR、BDRの選出は、行われません。

 DRは、ブロードキャストセグメント内の全ての他のルータと隣接関係を結び、セグメント内の他のルータは、自分のリンクステート情報をDRに送信します。もし、DRに障害が起こったとしてもBDRがDRの役割を引き継ぐようになっています。

 DR、BDRを選出することによって、リンクステート情報の交換でのオーバーヘッドを減らし、帯域幅を節約するようになっています。

 ちなみにDR、BDRを選出することによって、5台のルータ環境では、DR、BDRは、下の図のように、LSAを受信するようになります

 イーサネットでは、DR、BDRが1つずつ選出されます。DR、BDRの選出される基準ですが、優先度(PRIORITY)とルータIDで決まるようになっています。

DRの選出ルール

選出ルールは、①→②の順で決定されます。

①優先度が一番大きいルータから、DR、BDRの順に選出される。

PRIORITY=0~255で、数値が大きいほど優先度が高くなります。値が0の場合はDRに選出されません。

②優先度が同じときは、ルータIDが大きいルータから、DR、BDRの順に選出される。

※YAMAHA RTルータでは、ループバックに振られているIPアドレスをルータIDとして使用する概念がありません。
※自信はありませんが、管理人は、そのように理解しています。