OSPF – エリアとは
OSPFにおける「エリア」とは、LSAをやり取りする範囲を限定するための論理的なグループを指します。言い換えると、「同じLSDBを共有するルータのまとまり」と考えると分かりやすいです。
エリアを使わずにすべてのルータが同じLSAを持ってしまうと、ルータは大量の情報を保持する必要があり、メモリやCPUに大きな負荷がかかります。そこでエリアを分割し、異なるエリアには必要最小限の集約情報だけを通知することで、LSAのフラッディングを局所化できる仕組みになっています。エリアの定義はネットワーク管理者が手動で行います。
エリア分割によるメリット
エリア分割は大規模なOSPFネットワークにおいて非常に有効です。主な利点は次の通りです。
| メリット | 説明 |
|---|---|
| LSDBサイズの縮小 | 同じエリア内のルータは同じLSDBを持ちますが、エリアを分割すると他のエリアの詳細情報を保持しなくてよくなります。その結果、各ルータのメモリ負荷が軽減されます。 |
| SPF計算頻度の減少 | トポロジの変化は同じエリア内に限定されるため、SPFアルゴリズムの再計算が抑えられ、CPU使用率が減少します。 |
| ルーティングテーブルの縮小 | 異なるエリアへは経路を集約して通知できるため、ルーティングテーブルのサイズを小さく保つことができます。 |
OSPF – シングルエリアとマルチエリア
OSPFは「自律システム(AS)」と「エリア」で構成されます。ここでのASとは、同じルーティングプロトコルを使って経路情報をやり取りするルータの集合を意味します。
OSPFのエリア設計では、必ず中心に「エリア0(バックボーンエリア)」が存在し、すべての他のエリアはエリア0に接続しなければなりません。つまり、エリア0を軸にした2階層構造になるのがOSPFの特徴です。
小規模なネットワークであればエリア0だけを使う「シングルエリア」構成でも問題はありません。しかし、大規模ネットワークではルータの負荷を軽減するために複数のエリアを利用する「マルチエリア」構成が推奨されます。
なお、エリアの境界はルータによって定義されます。ルータの各インターフェースごとにどのエリアに属するかを設定します。
OSPF – OSPFルータのタイプ
マルチエリア構成を組むと、OSPFルータには役割に応じて次の4種類のタイプがあります。1台のルータが複数の役割を持つ場合もあります。
| ルータのタイプ | 説明 |
|---|---|
| 内部ルータ | すべてのインターフェースが同じエリアに接続されているルータ。 |
| バックボーンルータ | 少なくとも1つのインターフェースがエリア0に接続されているルータ。 |
| ABR(エリア境界ルータ) | 複数のエリアに属するルータで、エリア間の経路集約や情報交換を担当。ABRはエリアごとのLSDBを保持します。 |
| ASBR(AS境界ルータ) | 外部のAS(例:RIPやEIGRPなどの他プロトコル)と接続するルータ。外部ネットワークの経路をOSPFへ再配布し、異なるプロトコル間の通信を可能にします。 |
実際のエリア設計例
実際の企業ネットワーク設計では、WAN部分をエリア0(バックボーンエリア)に設定し、各拠点をエリア1、エリア2といった形で割り当てることが一般的です。これにより、すべての拠点は必ずエリア0を経由して相互に通信できるようになります。
さらに、各拠点のネットワークセグメントを/24で設計し、ABR上で/16に経路集約して他のエリアに通知する方法がよく使われます。これにより、他のエリアのルーティングテーブルをシンプルに保ち、ネットワーク全体の効率を高められます。
OSPF – パケットフォーマット
OSPFのパケットは、IPパケットの中でプロトコル番号89を使って直接カプセル化されます。TCPやUDPといったトランスポート層プロトコルを利用しませんが、確認応答(Ack)を取り入れることで信頼性を確保しています。
OSPFパケットのヘッダには以下の情報が含まれます。
| OSPFヘッダ | 説明 |
|---|---|
| バージョン | 使用しているOSPFのバージョン番号。IPv4なら「2」、IPv6なら「3」。 |
| タイプ | OSPFパケットの種類(1~5)。たとえばHelloパケットは「1」。 |
| パケット長 | ヘッダを含めたパケット全体の長さ。 |
| ルータID | ルータを一意に識別する32ビットの値。デフォルトでは有効なインターフェースの中で最も大きなIPが選ばれる。 |
| エリアID | パケットを送出するインターフェースが属しているエリアを示す。32ビットの値。 |
| チェックサム | データの破損を検出するためのチェックサム。 |
| 認証タイプ | 0なら認証なし、1なら平文認証、2ならMD5認証。 |
| 認証 | 認証タイプに応じた情報が格納される。MD5認証ではKey IDも含まれる。 |
OSPF – 5種類のパケット
OSPFでは、隣接ルータと以下の5種類のパケットをやり取りして、ネイバー関係を確立し、ネイバーテーブルやLSDBを最新の状態に保ちます。
| タイプ | パケット名 | 説明 |
|---|---|---|
| 1 | Hello | ネイバーを検出するためのパケット。確立後はキープアライブとしても使用される。マルチキャスト224.0.0.5宛に送信される。 |
| 2 | DBD | Database Descriptionパケット。自身のLSDBに含まれるLSA一覧を送信する。これにより不足している情報を確認できる。 |
| 3 | LSR | Link State Requestパケット。不足している特定のLSAをネイバーに要求する。 |
| 4 | LSU | Link State Updateパケット。LSRに対する応答として、要求されたLSAを送信する。 |
| 5 | LSAck | Link State Acknowledgementパケット。LSUを正しく受信したことを通知する。 |
OSPF – Helloパケットの詳細
OSPFのHelloパケットは、ネイバーの検出と維持に利用されます。そのフォーマットには以下の項目が含まれます。
| OSPFデータ | 説明 |
|---|---|
| ネットワークマスク | 送信インターフェースのネットマスク。 |
| Helloインターバル | Helloパケットを送信する間隔。デフォルトは10秒または30秒。 |
| オプション | 8ビットのフラグ値を持ち、スタブエリアの識別などに使われる。 |
| ルータプライオリティ | DR/BDR選出の際に使用。最大値は255、0は選出対象外。 |
| Deadインターバル | ネイバーがダウンしたとみなす時間。常にHello間隔の4倍。 |
| DR | 指定ルータ(DR)のIPアドレス。未選出なら0.0.0.0。 |
| BDR | バックアップ指定ルータ(BDR)のIPアドレス。未選出なら0.0.0.0。 |
| ネイバー | すでにネイバー関係を確立しているルータIDの一覧。 |
OSPFネイバー確立に必要な一致条件
OSPFルータ同士がネイバー関係を確立するには、次の7項目が完全に一致していなければなりません。
- エリアID
- 認証情報(有効な場合)
- ネットワークマスク
- Helloインターバル
- Deadインターバル
- スタブエリアフラグ(オプション値)
- 隣接インターフェースのMTUサイズ
この条件のうち1つでも不一致があれば、Helloパケットをやり取りしてもネイバー関係は確立できません。試験では特に「ネイバー確立に必要な7条件」がよく出題されるので必ず暗記しておきましょう。
OSPFネイバー関係(Neighbor)の確立 – 2Way State
OSPFルータが起動してからネイバー関係を結ぶまでには、いくつかの状態遷移があります。ここではリンクアップ直後からの流れを見ていきましょう。
| Step | State | 説明 |
|---|---|---|
| ① | Down State | OSPFが未稼働の初期状態。ルータを起動するとHelloパケットの送信を開始する。このHelloはマルチキャストアドレス224.0.0.5宛に送信される。 |
| ② | Init State | ネイバーから初めてHelloパケットを受信した状態。この時点で相手を「候補」として認識する。 |
| ③ | 2Way State | お互いのHelloパケットを受信し、双方向にネイバーを認識できた状態。この段階でネイバーテーブルに相手が登録される。 |
この2Way Stateまで到達すると、OSPFルータは互いを正しく隣接ルータとして認識できたことになります。
ルータIDの決定方法
OSPFルータには一意に識別するための「ルータID」が必ず必要です。ルータIDは32ビット値で、IPv4アドレスと同じ表記形式を取ります。重複すると正しく動作しないため注意が必要です。
ルータIDは次の優先順位で決定されます。
router-idコマンドで明示的に設定された値- ループバックインターフェースに設定された中で最も大きいIPアドレス
- アクティブな物理インターフェースに設定された中で最も大きいIPアドレス
OSPFアジャセンシー関係(Adjacency)の確立 – Full State
2Way Stateに到達し、さらにDR/BDRの選出が完了したルータ間では、詳細な情報交換が始まり「アジャセンシー(Adjacency)」と呼ばれる強い関係が結ばれます。この関係になるとLSAが交換され、LSDBの完全な同期が行われます。流れは次のようになります。
| Step | State | 説明 |
|---|---|---|
| ④ | Exstart State | LSA交換の準備段階。どちらのルータが最初にデータを送るかを決める。ルータIDの大きい方がマスター、小さい方がスレーブとなる。 |
| ⑤ | Exchange State | DBD(Database Description)パケットの交換を行う。これはLSDBに登録されているLSAの一覧である。 |
| ⑥ | Loading State | 受信したDBDと自身のLSDBを比較し、不足しているLSAをLSRで要求する。 |
| ⑦ | Full State | LSUで不足分のLSAが送られ、すべての情報が揃った状態。これにより隣接ルータと完全にLSDBを同期できる。 |
Full Stateに到達すると、ルータ間で「完全に同じネットワークの地図(LSDB)」を共有できていることになり、ルーティングが安定します。
LSAの種類
LSUパケットに含まれるLSAには複数の種類があります。LSAのタイプごとに役割やフラッディング範囲が異なります。OSPF仕様上は1〜11まで定義されていますが、Ciscoで実装されているのはタイプ1〜5とタイプ7です。
OSPF – DRとBDR
OSPFでは、イーサネットのようなマルチアクセスネットワークで効率よくLSAをやり取りするために「DR(Designated Router:指定ルータ)」と「BDR(Backup Designated Router:バックアップ指定ルータ)」が選出されます。
すべてのルータ同士で直接LSAを交換すると、通信量が急増して無駄が多くなります。そのため、DRとBDRが代表となり、他のルータ(DROTHERと呼ばれる)はDR・BDRとだけLSAをやり取りします。これにより、ネイバー関係は全ルータ間で確立されつつも、実際のLSA交換は必要最小限に抑えられます。
OSPF – DRとBDRの選出
DRとBDRはHelloパケットに含まれる「OSPFプライオリティ値」を基準に選出されます。ネイバー関係が2Way Stateに到達した後、以下のルールで選出が行われます。
- 最も大きいプライオリティ値を持つルータがDRになる
- 2番目に大きいプライオリティ値を持つルータがBDRになる
- プライオリティ値が同じ場合はルータIDを比較し、大きい方がDR、次点がBDRになる
なお、プライオリティ値はデフォルトで「1」に設定されています。もし値を「0」にすると、そのインターフェースは必ずDROTHERとなり、DRやBDRに選ばれることはありません。
重要な点として、DRとBDRは「ネットワークセグメントごとに」選出されます。そのため、同じルータでもセグメント1ではDR、セグメント2ではDROTHERというように役割が変わる場合があります。
OSPF – DRとBDRの動作
DRとBDRが選出されると、LSAのフラッディングは次の流れで行われます。
| 項番 | 説明 |
|---|---|
| ① | R1のインターフェースで192.168.1.0/24がダウンしたことを検出する。 |
| ② | R1は更新されたLSAをLSUに載せて、セグメント1のDR・BDRへマルチキャスト(224.0.0.6)で送信する。 |
| ③ | DR(R3)は受信したLSUを、セグメント1の全ルータにマルチキャスト(224.0.0.5)で再配布する。 |
| ④ | R3はさらに別のセグメント(例:セグメント2)のDR・BDRに対して、224.0.0.6宛に同じLSUを送信し、エリア全体に伝播させる。 |
この流れが繰り返され、最終的に同一エリア内のすべてのルータに更新が伝わります。
また、BDRはDRのバックアップとして待機しています。例えば、R4がBDRである場合、R3(DR)がダウンして一定時間内に応答がなければ、R4が自動的にDRへ昇格し、通信を途切れさせないようにします。
OSPF – ネイバー関係とアジャセンシー関係(用語の整理)
OSPFでは「ネイバー」や「アジャセンシー」といった用語が登場し、混乱しやすい部分です。整理すると次の通りです。
| OSPFルータ間の関係 | ステータス | 説明 |
|---|---|---|
| Neighbor(ネイバー) | 2Way | 互いにHelloパケットを交換して存在を確認できている関係。 |
| Adjacency(アジャセンシー) | Full | LSAを交換し、LSDBを完全に同期している関係。 |
つまり、すべてのルータ同士がネイバー関係になりますが、実際にアジャセンシーを結んでLSAを交換するのは、DR・BDRとその他ルータの間に限られます。
OSPF – ネットワークタイプ
OSPFでは、利用するレイヤ2ネットワークの種類に応じて「ネットワークタイプ」が定義されています。これは、ルータ同士がどのようにネイバーを確立し、DR/BDRを選出するかに関わる重要な要素です。EIGRPのようにレイヤ2に依存せずシームレスに動作するプロトコルと異なり、OSPFではネットワークタイプを理解しておくことが必須となります。ここでは代表的な3種類を見ていきましょう。
① ブロードキャストマルチアクセス
イーサネットLANのように、1つのセグメントに複数のルータが接続できる環境です。この場合、DRとBDRが選出され、DROTHERルータはDR/BDRとだけアジャセンシーを確立します。
ルータ間の関係は次のようになります。
- DR/BDRと他のルータ:アジャセンシー(Full)
- DROTHER同士:ネイバー関係(2Way)
そのため、大規模なLAN環境でも効率よくLSAをやり取りできます。
② ポイントツーポイント
PPPやHDLCといったWANリンクで、2台のルータが直接接続される環境です。この場合、ネットワーク上にルータは2台しか存在しないため、DRやBDRを選出する必要がありません。
結果として、2台のルータ間では必ずアジャセンシー(Full)が確立されます。シンプルかつ効率的な接続方法といえます。
③ NBMA(Non-Broadcast Multi-Access)
フレームリレーやATMのように、複数のルータが1つのセグメントに接続されるものの、ブロードキャスト機能がない環境です。この場合もDR/BDRは選出されますが、ネイバー検出が自動では行えないため、基本的には管理者がネイバーを手動で設定する必要があります。
ただし、NBMAには5つのモードがあり、モードによっては自動的にネイバーが検出されるケースもあります。試験では「NBMAではブロードキャストが使えないためネイバー設定が必要」という基本を押さえておきましょう。
OSPF – 3種類のトポロジー比較
それぞれのネットワークタイプにおける動作を整理すると次の通りです。
| トポロジー | ネイバー検出 | DR/BDRの選出 | Hello間隔(デフォルト) |
|---|---|---|---|
| ブロードキャストマルチアクセス | 自動 | 有 | 10秒 |
| ポイントツーポイント | 自動 | 無 | 10秒 |
| NBMA(5つのモードあり) | モードによる | モードによる | モードによる |