OSPFの特徴

 OSPFは、IETFによって標準化されているリンクステート型のルーティングプロトコルです。Ciscoが独自に開発したEIGRPと違い、Cisco社製のルータ以外のマルチベンダのルータ間でルーティングが可能です。OSPFの大きな特徴の一つに、エリアの概念があります。

エリアの概念

 OSPFネットワークでは、小さなネットワークを1つのエリアとして設定し、複数のエリアをエリア0(バックボーン)に接続することで、ネットワークを階層構造に構築することができます。エリアを単位とし、グループ管理する設計アプローチによって、ネットワークの変化をエリア内に留め、パフォーマンスを向上させています。その結果、コンバージェンスの時間が短縮されます。

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

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

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

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

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

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

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

 OSPFネットワークでは、小さなネットワークを1つのエリアとして設定し、複数のエリアをエリア0(バックボーン)に接続することで、ネットワークを階層構造に構築することができます。このように、1つのネットワークを複数のエリアに分割し、各エリア内とエリア間のルーティングとに分けてゆく方式を「階層型ルーティング」と呼んでいます。

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

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

ルータタイプ

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

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

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

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

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

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

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

◆LSA

 シングルエリアOSPFでは、特にLSAの種類に関して、あまり意識する必要はありませんが、マルチエリアOSPFでは、非常にたくさんの種類のLSAを交換します。どんなタイプのLSAがあるのかを把握しておく必要があります。

 下にどんなタイプのLSAがあるのか、いくつかを紹介しておきます。LSAタイプの種類が多く、解説書、各ベンダーのマニュアルで名称の呼び名が違う場合があります。マルチエリアOSPFでは、LSAタイプの理解が必要になってきます。

タイプ 名称 生成ルータ 範囲 説明
1 ルーターLSA 全OSPFルータ エリア内 エリア内にあるリンクの情報。全てのルータが生成し、通知範囲はエリア内に限定される。
2 ネットワークLSA DR エリア内 マルチアクセスネットワーク上の代表ルータ(DR)が生成します。DRのIPアドレス、ルータID、同じマルチアクセス型ネットワーク上のルータIDのリスト、サブネットマスクを通知します。通知範囲は同じエリア内に限定されます。
3 ネットワーク
サマリーLSA
ABR エリア内 エリア間のネットワークへの経路情報を通知する。エリア境界ルータ(ABR)が生成し、通知範囲はエリア内に限定されます。デフォルトルート、集約ルートを通知することができる。
4 ASBRサマリーLSA ABR エリア内 非OSPFネットワークへ接続するASBR(AS境界ルータ)のルータIDとASBRへのメトリック情報を通知します。ABRが生成し、通知範囲はエリア内に限定されます。
5 AS外部LSA ASBR スタブエリアを除くOSPFドメイン全体 非OSPFネットワークへの経路情報を通知する。ASBRが生成し、スタブエリアを除く、OSPFドメイン全体に通知されます。AS外部ルートのメトリックは、固定で通知することも、増加させて通知させることもできます。
7 NSSA外部LSA NSSA内の
ASBR
NSSA NSSAエリア内のASBRによって生成されます。タイプ7LSAは、NSSAエリア内だけにフラッディングされます。そのためNSSA内のABRがLSAタイプ7をLSAタイプ5に変換してOSPFドメイン内に通知します。

※LSAタイプ6も存在しますが、これは、マルティキャストOSPFルータによってフラッディングされるものです。ここでは、省略します。

OSPF(経路学習プロセス)

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

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

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

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

帯域幅コスト
56kbps1785
T1 1.544Mbps64
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間隔の設定は、管理者が自由に設定することができますが、隣接ルータ間で一致していなければなりません。EIGRPでは、異なる値でも問題ありませんでしたが、OSPFでは、合わせておく必要があるので注意して下さい。

●Hello間隔・Dead間隔の設定

Hello間隔、Dead間隔を設定するには、インタフェースコンフィグレーションモードで下のコマンドを実行します。

Router(config-if)#ip ospf hello-interval {秒数}

Router(config-if)#ip ospf dead-interval {秒数}

 OSPFは、リンクステートルーティングプロトコルですから、RIPやIGRPなどのディスタンスベクタルーティングプロトコルと違い、頻繁にルーティングアップデートは行いませんが、情報を維持するために30分間隔でLSAパケットを送信しています。コンバージェンス後も定期的にLSAが交換されることを覚えておいて下さい。

OSPF(DR・BDRの選出)

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

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

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

 と言うことは、10台ルータがあれば、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)とROUTERIDで決まるようになっています。

 DRの選出は次のルールで決まります。ただし、必ず、期待通りにDR、BDRが選出されるわけでは、ありません。ルータの電源を入れるタイミングも影響してきます。OSPFのプロセスが起動するまでの間に、既に他のルータがDRに選出されている場合、後から起動(追加)したルータは、いくら、ROUTERID、優先度が高くとも、既に選ばれているDRがダウンするまでDRになれません。

DRの選出ルール

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

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

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

 ループバックインタフェースにIPアドレスが設定されていれば、ループバックインタフェースに振られたIPアドレスがROUTERIDになります。ループバックインタフェースは物理インタフェースより優先されます。

 ループバックインタフェースは、ルータ自身がダウンしない限りダウンすることがない仮想的なインタフェースです。OSPFネットワークでは、安定性を確保するにアクティブなインタフェースが常に存在しているように見せかけたい場合に設定します。

 アクティブな物理インタフェースで最も大きい番号のIPアドレス、ROUTERIDとなります。例えば、ルータの物理インタフェースに、「192.168.1.1」と「192.168.1.2」が設定されている場合、「192.168.1.2」の方が番号が大きいので、ROUTERIDは「192.168.1.2」になります。

 アクティブなインタフェースが複数存在する場合、ROUTERIDは、自身の装置のインタフェースに振られたIPアドレスの中で最も大きなものが選択されます。

つまり、DR、BDRの選出については、

  1. 優先度(PRIORITY)
  2. ループバックインタフェースのIPアドレス
  3. 物理インタフェースのIPアドレス

の順に注目してゆけばどのルータがDR、BDRに選出されるのか分かります。

 こうして、DR、BDRが決まると、DRは、LSAアップデートをマルチキャストアドレス「224.0.0.5」を使って送信します。DR、BDR以外のルータは、DR、BDRに対して、マルチキャストアドレス「224.0.0.6」を使ってLSAアップデートを送信するようになります。