|
OSPF
OSPFとは、ディスタンスベクタ型とは異なる、クラスレスのリンクステートプロトコルです。(
RFC2328にて定義 )
OSPFでは、クラスレスルーティング、VLSMのサポート、手動集約、OSPFネイバー認証、マルチキャストによる
差分アップデート、Dijkstraアルゴリズム(SPF)による高速収束、ホップ数の無制限、大規模ネットワークに対応
できる 「エリア」 の概念、Helloによるネイバー検出と隣接維持、ルーティングのループフリーなどが実現されて
RIPv2のようなディスタンスベクタ型プロトコルの問題点を解決した、大規模ネットワークに適したIGPと言えます。
※ OSPFのバージョンには v1、v2、v3 の3つがありますが、一般的にOSPFと言えばRFC2328で定義された
「OSPFv2」 を意味します。
リンクステートプロトコル
OSPFはリンクステートプロトコルです。リンクステートプロトコルは、最適な経路の選択にコストを使用します。
コストは回線の帯域幅から算出されます。このコスト値が低いものが最適な経路になります。例えば下図では
R1から 「172.16.5.0」 への経路は、コスト
( 回線の帯域幅 ) の計算結果から R3 経由で見えることになります。

OSPF - コスト計算方法 -
OSPFのコストは、コスト値の公式 ( 100÷帯域幅Mbps ) により算出されます。つまり、100Mbpsの帯域幅は
[ 1 ] となりますが、100Mbpsを超える1Gbpsの帯域幅の場合においても、[
0.1 ] ではなくて [ 1 ] となります。
宛先経路に辿り着くまでのこのコスト値の合計がOSPFのメトリックです。EIGRP同様に発信I/Fで加算します。
下図のR1から、「172.16.5.0/24」 へのコスト値はFastEthernet経由の場合、丸印のI/F値をもとに算出します。
R1、R2、R3の印のどのI/Fも100Mbpsであることから、R1から「172.16.5.0/24」へのコスト値は[
3 ]になります。

OSPFの用語説明
| OSPFの用語 |
各用語の説明 |
| ネイバーテーブル |
隣接するルータが記載されているテーブル。ネイバーを失えばその経由のパスを無効にしパスを再計算。
OSPFネイバー確立の条件 ( @ 同じnetmask A
同じエリア B 同じHello/Dead Cスタブフラグの有無
)
|
| リンクステートデータベース |
LSAにより、全てのOSPFルータ、リンク等に関する情報を持つ。EIGRPのトポロジーテーブルより詳細な
ネットワークの全体図を持つのでCPUやメモリの使用率が高くなるが、エリア内の全てのOSPFルータが
同じLSDBを保持していることから、クエリーを送信することなく、独立して最適ルートの再計算を行える。
|
| ルーティングテーブル |
宛先への最適なルートが記載されているテーブル。ある宛先への最適ルートはLSDBから選択されて
ルーティングテーブルに注入される。EIGRPはDUALを使用するのに対してOSPFはDijsktraを使用する。 |
| Dijkstra |
最適なパスの選択ためにLSDBに適用されるOSPFのアルゴリズム。SPFアルゴリズムとも呼ばれる。 |
| LSA |
LSA ( Link-state update ) には、ルータID、リンク ( インターフェースのコスト、IPアドレス、タイプ等 )
そしてLSAのタイプなどが含まれる。LSAは独自のエージングタイマー(
デフォルト30分 )を持っている。
つまり、30分に一度ルータ全体の同期が行われる。このLSAはOSPFパケットのLSUに含まれている。
|
| エリア |
全てのOSPFルータは同一のLSDB ( 全てのルータとリンクに関する情報 ) を持つ必要があり、大規模な
ネットワークになってくるとCPUやメモリの使用率が激しくなる。この「エリア」という概念を導入することで
同一エリア内の全OSPFルータだけが同一のLSDBの詳細な情報を持つだけでよくなり、異なるエリアの
ためのLSDBは、同じエリアのLSDBよりも大まかな情報
( サマリ情報 ) だけを維持すればよい形となる。
|
OSPF - 5種類のパケット -
OSPFは5種類のパケットをやり取りすることにより、動的にネイバー関係を確立した上で、ネイバーテーブル
LSDB、ルーティングテーブルを最新に保ちます。EIGRPと同様に、OSPFを有効にしたいインターフェースで
passive-interfaceを設定すると、これらの5種類のパケットのやり取りが出来ないので隣接関係を築けません。
※ 経路情報をそのまま or 差分アップデートするRIPv2やEIGRPとは異なり、LSA
を交換することでルーティングテーブルを作成します。
| タイプ |
パケット名 |
各パケットの説明 |
| 1 |
Hello |
ネイバーの検出するためのパケット。ネイバーを検出してリレーションシップを確立した後のキープアライブ
としても使用される。マルチキャスト( 224.0.0.5
)として送信される。( Hello間隔はレイヤー2により異なる
) |
| 2 |
DBD |
DBD ( database description ) は、ルータ間のデータベースの同期をチェックします。 |
| 3 |
LSR |
LSR ( link-state request ) は、他のルータの特定のリンクステートレコード
(LSA) を要求します。 |
| 4 |
LSU |
LSU ( link-state update ) は要求された特定のリンクステートレコード(LSA)を送信します。LSAはここにある。 |
| 5 |
LSAck |
LSAck ( link-state acknowledegment ) は、上記のパケットに対して確認応答を行います。 |
|