【OSPFの機能について】


このHPはOSPFの機能についてまとめたもので す。


1-1 OSPFの特徴

■リンクステート型アルゴリズム

OSPFはRIP、IGRPと同じくAS内部のルーティングを対象としたIGPsの一種。但し、RIPやIGRPよりも大規模なネットワークを対象としている。ルーティングアルゴリズムはリンクステート型。リンクステート型では、、ルーティングテーブルではなく、 各ルーターのインターフェイスの情報(リンクステート情報)を交換する。

リンクステート情報はLSAとも呼ばれ

●ルーターが持つインターフェースの種類

●そのインターフェイスのIPアドレス

●インターフェイスのコスト

●接続されているネットワークのタイプ

等が含まれる。






■SPFアルゴリズムとコスト

SPFアルゴリズムとは、送信先までの経路をツリー構造として考え、一番近い経路を見つけ出す方法。メトリックにはリンクコストを使用する。リンクコストとは各ルーターのインターフェイス速度を数値化した値。Ciscoルーターの実装では、 インターフェースの帯域幅から自動的に計算される。

送信先ネットワークまでに通過するリンクコストの値が小さいほど距離が近いと判断する。帯域幅が大きいほどコストの値が小さくなる。OSPFが選択する経路は標準では、帯域幅が最も大きい経路となる。



リンクコストは、以下の計算式から求められる。



※但し、100Mbps以上の帯域幅に対しては、正しくネットワークの帯域幅を反映できない可能性もある。その為、管理者が手動でコスト値を設定することもできる。

以下の表は、Ciscoルータの代表的なインターフェースごとのコスト値



ルーターの新規追加や障害などによるトポロジの変更があった場合には、すぐにリンクステートをアップデートする。そのためルーティングテーブルのコンバージェンス時間が非常に短くなる。但し、トポロジマップの作成や経路選択の処理が複雑なため、ルーターのCPUやメモリなどのハードウェアはより高い要件となる。また、リンクステートデータベースは全てのルーターで共通。

■クラスレスルーティングプロトコル

OSPFはクラスレスルーティングプロトコルでLSAの中にはサブネットマスク情報が含まれている。そのためVLSMや不連続サブネットをサポートすることが可能。柔軟性のあるネットワーク環境を構築するには、サブネットマスクのアドバタイズが 必要となる。



1-2 OSPFのエリア

OSFPでは、動作させるネットワークを「エリア」に分割して考える。エリアとは、リンクステート情報のアップデートを規制するための範囲 。エリア内のルータ同士だけが、LSAを交換して同一のリンクステートデータベースを保持し、エリア内のネットワークの情報を持つ。





トポロジーに変更があった場合、変更を知らせるリンクステート情報はエリア内でフラッディングされる。



■エリアの種類

OSPFのエリアはその性質によって、いくつかに分類される。 以下にその種類を示す。

★バックボーンエリア

★標準エリア

★スタブエリア

★トータリースタブエリア

★NSSA

◆【バックボーンエリア】

複数のエリアを相互接続するエリア。単一のエリアで構成されている以外は、エリア間の通信は必ずバックボーンエリアを通過しなければなら ない。エリア番号は必ず0。

◆【標準エリア】

標準のOSPFエリア。

◆【スタブエリア】

エリア内を流れるLSAを削減するために考えられているエリア。外部ルー トをデフォルトルートで受け取るエリア 。タイプ5のLSAを受信しないエリア。

◆【トータリースタブエリア】

自エリア以外のルート情報は受け取らないエリア。Cisco社独自の仕様。スタブエリアよりもさらにエリア内を流れるLSAを削減するために考えられている。タイプ3、タイプ5のLSAを受信しないエリア。

◆【NSSA】

NSSAはスタブエリアの特殊のもの。一部の外部ルートを通知するエリア。ASBRをエリア内に持つスタブエリアがこれにあたる。NSSAではNSSA内だけを流れる特殊なLSAタイプ7がある。NSSAの設定は、NSSA内の全てのルータに対し該当のエリアがNSSAであることを設定する。


1-3 OSPFルータの種類

OSPFマルチエリアで動作するルータには、次の種類がある。

★内部ルータ

★バックボールルータ

★ABR(エリア境界ルータ)

★ASBR(自立システム境界ルータ)

◆【内部ルータ】

全てのインターフェイスが同じエリアに属しているルータ。

◆【バックボーンルータ】

インターフェイスが1つ以上、バックボーンエリアに接続されているルーター。

◆【ABR(エリア境界ルータ)】

複数の異なるエリアに接続したインターフェイスをもつルータ。エリアごとにリンクステートデータベースを持ち、エリアごとにリンクステート情報をやり取りしている。





◆【ASBR(自立システム境界ルータ)】

1つ以上のインターフェイスがOSPFネットワークの外部自立システムに接続しているルータ。





1-4 OSPFのパケット

OSPFでは5種類のパケットが使用される。この5種類のパケットは、OSPFネットワークの維持や構築を行うために、OSPFルータがやりとりするパケット。5種類のパケットの役割は、以下のとおり。



◆【タイプ1:HELLOパケット】

Helloパケットの役割は、

●ネイバー関係の検出と維持
●DR/BDRの決定 

の2点がある。HelloパケットがDeadの時間内に受信されなかった場合、ダウンしたとみなされ、ネイバー関係が解除される。

◆【タイプ2:DDパケット】

DDパケットは、アジャセンシーの確立の際、最初に交換されるパケット。これは、DDパケットの中のLSAヘッダを比較して、データベースの内容を交換し、内容が古くないかどうかを比較する。もし自分の持っているデータが古いと判断した場は、LSRパケットを送って、新しいLSAを要求する。

◆【タイプ3:LSRパケット】

LSRパケットは、自分の所有しているデータベースが最新ではない場合に相手ルータに最新のLSAの送信を要求する際に使用するパケット。

◆【タイプ4:LSUパケット】

LSUパケットは、LSRパケットにより要求されたデータを、相手ルータに通知するために使用される。

◆【タイプ5:LSAck】

LSAckパケットはLSUパケットを正常に受信した時、相手ルータに正常に受信したということを伝えるための受信確認用のパケットとして使用される。


1-5 ルータID

ルータIDとはOSPFルータを識別するために使用する情報。ルータIDは32ビットで、IPアドレスと同じ様に10進数で表現する。
OSPFルータは、ルータIDによって他のOSPFルータを認識して、ネイバーやアジャセンシー関係を確立し、LSAの交換を行うことができるようになる。

ルータIDは次の順序で決定される。


@router-idコマンドで指定されたアドレスがあれば、それを使用。

【ルータIDの指定】
(config-router)#router-id【IPアドレス】

AルータIDが明示的に指定されていなければ、ループバックインターフェイスの一番大きな値のIPアドレスが、ルータIDになる。ループバックインターフェイスとは、ルータの中で1つでもアクティブなインターフェイスがある限り、必ずダウンしない論理的なインターフェイス。

B有効状態になっているインターフェイスの、一番大きな値のIPアドレスがルータIDになる。

下図のネットワークの場合、ループバック0インターフェイスのIPアドレス10.10.10.10がルータIDになる。




ルータIDはOSPFプロセスを有効にした時点で決まる。いったん、ルータIDが決定されると、インターフェースがダウンしたり後からrouter-idコマンドで指定しても変更されない。ルータIDを再選択させるには、次のいずれかを実行する。

●ルータを再起動する

●OSPFを無効(no router ospf)から再度有効にする


■ネイバーとアジャセンシー

OSPFネットワークでは、ルータはネイバーやアジャセンシーという関係を確立する。

【ネイバー】

同じネットワーク内に接続されているOSPFルータ同士の関係。Helloパケットを定期的に交換している。

【アジャセンシー】

実際にLSAを交換しあうルータの関係。



1-6 OSPFのテーブルとツリー

OSPFが動作するルータでは、複数のテーブルやツリーを構成する。

【ネイバーテーブル】

ネイバー関係を結んだOSPFルータの一覧表。ネイバー関係はHelloパケットによって確立して維持する。

【リンクステートデータベース(LSDB)/トポロジーテーブル(トポロジカルデータベース)】

ネイバーから収集したLSAで作成したデータベース。エリア内で同じ情報を持つ。

【SPFツリー】

トポロジテーブルの情報から生成されるツリー。このツリーを基にルーティングテーブルが作成される。

【ルーティングテーブル】

パケットの転送に使用される経路情報。SPFツリーから生成される。


■ルーティングテーブル作成までの手順

OSPFルータが、ルーティングテーブルを作成するまでの手順は以下の通り。

@Hellパケットをやり取りし、ネイバー関係を確立後、リンクステート情報を交換する。

Aリンクステート情報を交換後、リンクステートデータベース(トポロジカルデータベース)に格納する。

Bリンクステートデータベース(トポロジカルデータベース)の情報に基づいてネットワーク全体の地図を作成し、SPFアルゴリズム(ダイクストラアルゴリズム)によって、自分をrootとした最短パスツリーを作成する。

Cルーティングテーブルの作成





2-1 DRとBDR

LAN等のマルチアクセス環境では、リンクステートデータベースの不一致を防ぐためにリンクステートデータベースを管理する必 要がある。OSPFのリンクステートデータベースを一元管理するルータをDRという。またバックアップ用のDRもある。これをBDRという。 また、DRとBDR以外のルータはDROTHERという。

【DRとBDRの選出】

DRとBDRの自動選出はHelloパケットの交換により行われる。Helloパケットとは、キープアライブの一種で、ルータが自分の存在を通知するために定期的に送信するマルチキャストのパケット。OSPFルータはこのHelloパケットの交換によって、隣接しているOSPFルータを認識する。DRとBDRの選出は次の2つのステップがある。


@OSPFプライオリティ値による選定

Helloパケットの交換によりお互いのOSPFプライオリティ値を調べることにより決定する。OSPFプライオリティ値が最も大きいルータがDRに選出され、2番目に大きいルータがBDRに選出される。OSPFプライオリティ値はデフォルトで1。

また、プライオリティ値はルータのインターフェイスごとに設定でき、プライオリティが0に設定されているルータは、DR、BDRになることはできない。 このプライオリティ値を変更することにより、DR、BDRを操作することができる。




AルータIDによる選出

プライオリティが同じ場合はルータIDの大きい方からDR、BDRの順に選定される。ループバックインターフェイスを設定したルータでは物理インターフェイスのIPアドレスよりループバックインターフェイスのIPアドレスが優先され、ルータIDとして使用される。





2-2 リンクステート情報の更新

リンクステート型ルーティングプロトコルは、全てのルータで共通のリンクステートデータベースを保持しなければならない。その為OSPFルータでは、常に最新のトポロジーデータベースを維持し、各ルータでトポロジーデータベースの不一致が生じないように監視する必要がある。

ネットワーク(リンクステート情報)に変更があった場合は、速やかにその変更を他のルータに通知して、リンクステートデーターベースの同期をとる必要ある。LSAのアップデートは、マルチキャストパケットを使用する。

●DRとBDR宛てのマルチキャストアドレス
224.0.0.6
●DRからのLSAアップデートは
224.0.0.5となり、Helloパケットと同じOSPFルータ宛てのマルチキャストアドレスになる。











2-3 Helloプロトコルによるルータ起動時のプロセス

OSPFは、OSPFルータの発見、動作確認をHelloプロトコルによって行う。Helloパケットには次のような情報が含まれる。

●ルータID

●HelloとDeadの間隔(一致しないとネイバーになることができない)

●ネイバーリスト

●OSPFプライオリティ

●エリアID(一致しないとネイバーになることができない)

●DRのとBDRのIPアドレス

●認証パスワード(一致しないとネイバーになれない)

●スタブエリアフラグ(一致しないとネイバーになれない)


ルータが起動すると、【DOWN】⇒【INIT】⇒【2WAY】⇒【EXSTART】⇒【EXCHANGE】⇒【LOADING】⇒【FULL】という状態を経由してネイバーのOSPFルータを発見し、リンクステートデーターベースの同期を行う。

@【DOWN状態】

Helloパケットを全く受信していない状態。まだ他のOSPFルータの存在はわからない。

A【INIT状態】

相手からのHelloパケットを受信した状態。下の図でいうとルータAからルータBがパケットを受信した状態。ルータBはネイバーテーブルにルータAの情報を格納する。 その後、ルータBはネイバーフィールドに自分のルータIDを追加 してHelloパケットを送信する。

B【2WAY状態】

ルータAがルータBからのHelloパケットを受信し、ネイバーテーブルにお互いの情報が追加された状態が、2WAY状態。ネイバーとの双方向の関係が確立されたことを表す。


※この段階でネイバーの確立がなされたことになる。アジャセンシーの確立が必要ないルータ同士は、この段階の最終状態(2Way)を維持することになる。




CBの後マルチアクセスネットワークであれば、ルータIDによるDR/BDRを選出後、 DR/BDRとのアジャセンシーを確立する。 ポイントツーポイントネットワークであれば、ネイバーとアジャセンシー関係確立後、リンクステート情報を交換できるようにする。

D【EXSTART状態】

ネイバーを確立した2つのルータが、さらにアジャセンシーを確立するための最初のステップ。DDパケット交換時のマスタとスレーブとなるルータを決定する。ルータIDが高い方がマスタールータとなる。また、最初のDD パケットのシーケンス番号もここで決定される。

E【EXCHANGE状態】

この段階では、マスタールータがまずDDパケットを送信する。ルータIDが高い方がマスタールータとなる。このDDパケットは、自分が知っているLSDBの情報を、互いに伝え合うために用いられる。DDパケットを受信するとLSAckパケットを返す。



F【LOADING状態】

Exchange状態において交換した情報に基づき、自身が保持していない、または、保持しているLSAよりも新しい情報を受信していた場合、相手に対してLSRを送信して足りない情報を要求する。LSRで要求された情報は、LSUパケットで知らせる。LSUの中に該当のLSAが含まれている。この様にLSAの同期をとっている状態がLOADING状態。

G【FULL状態】

リンクステートデータベースの完全な同期を取れてアジャセンシーが完全に確立されると、FULL状態になる。




FULL状態後、ルータはリンクステートデータベースにSPFアルゴ リズムを適用し、自分のルーティングテーブルを構築する。その後もHelloパケットは定期的に送信され、他のルータが正常かどうかを判断している。この間隔をHello間隔と呼ぶ。



3-1 OSPFがサポートするネットワーク

OSPFは以下の3種類のネットワークをサポートしている。

●ブロードキャストマルチアクセス

●ポイントツーポイント

●NBMA


【ブロードキャストマルチアクセス】

ブロードキャストマルチアクセスは複数のルータを接続してい るネットワークで、ブロードキャストやマルチキャストのパケッ トを送信した時、全てのルータが受信する。イーサネット、トークンリング、FDDI等のLANが該当する。ブロードキャストマルチアクセスネットワークでは、DRとBDRが1台ずつ選出され、 DRとBDRだけにLSAを送信する。




【ポイントツーポイントネットワーク】

ポイントツーポイントネットワークは、ルータ同士が1対1で接続されているネットワーク。ネイバーと共にアジャセンシーも結ぶ。DR/BDRの選出は不要。 2台のOSPFルータは、224.0.0.5のマルチキャストアドレスを使用してLSAを交換しあう。




【NBMA】

マルチアクセスをサポートしているインターフェイスで、複数のサイトを相互接続しているネットワーク。例はフレームリレーや ATM。NBMAネットワークでは、DRとBDRの選出を行うが、ブロードキャストとマルチキャストをサポートしていないので、ユニキャストパケットの複製を各ルータへ送信する。そのため、OSPFルータ同士がお互いのアドレスを認識しなければいけないので、そのための設定が追加で必要。

【隣接関係の設定コマンド】
(config-router)#neighbor【ネイバールータのIPアドレス】【ネイバールータのOSPFプライオリティ値(オプション)】






3-2 NBMAネットワークでのOSPF動作モード

NBMAネットワークには、次の3種類がある。

●ハブアンドスポーク
中央拠点が全ての拠点と接続する構成




●バーシャルメッシュ
部分的な拠点間を相互接続する構成




●フルメッシュ
全ての拠点間を直接に相互接続する構成