ネットワークスペシャリスト試験は、ネットワーク技術者としての高度な知識を問う国家資格です。
その中でもOSPF(Open Shortest Path First)は試験に頻出するトピックの一つであり、効率的なルーティングプロトコルとして多くの企業で採用されています。

特に午後試験での出題が多いため、深い理解が求められます。
この記事では、OSPFの概要と、「ネイバーの確立」「ルートの決定」までを学習します。



複数記事に跨がって、少しずつ学習していきますので、ゆっくりと確実についてきてください。



はい!頑張ります!
それではまずはOSPFの概要について見ていきましょう。
OSPF (Open Shortest Path First)とは
OSPF (Open Shortest Path First) は、ネットワーク内で効率的にデータをやり取りするためのリンクステート型ルーティングプロトコルです。
このプロトコルでは、各ルータが自分の接続状態を定期的に他のルータに伝え、それによってネットワーク全体の構造を共有します。



この仕組みによって、各ルータはネットワーク全体を把握し、最短経路を素早く計算できるようになるのです。
リンク状態の詳細な情報を全てのルータが共有することで、信頼性の高い通信と効率的なデータ転送が可能です。
また、OSPFはトラフィックの負荷分散にも対応しており、複数の等価な経路が存在する場合にデータを分散させることで、ネットワーク全体の効率を向上させます。



効率的に通信を行うことができるんですね。
さらに、RIPのようなディスタンスベクタ型プロトコルと比べ、OSPFは計算速度が速く、ネットワークの変化に迅速に対応できるという特徴があります。
これにより、OSPFは特に大規模かつ複雑なネットワーク環境で優れたパフォーマンスを発揮し、その信頼性と拡張性が多くの企業や組織で評価されています。
- リンクステートデータベース(LSDB)の構築:OSPFルータは、Helloパケットでネイバー関係を確立した後、LSA(リンクステート広告)を交換し、各ルータのリンク状態情報を収集します。これにより、すべてのルータがネットワーク全体の構造を把握するためのLSDBを構築します。
- SPF計算の実行:ルータは、LSDBに基づいてダイクストラアルゴリズムを使用し、最短経路を計算します。この計算では、リンクのコストが考慮され、最も低コストのパスが選ばれます。
- ルーティングテーブルの生成:SPF計算によって得られた最短経路の情報をもとに、OSPFルータは自身のルーティングテーブルを生成します。これにより、データが送信先に最適な経路で転送されるようになります。
ステップ1:ネイバーの確立
OSPFでは、ルータ同士が通信可能であることを確認し、隣接関係(ネイバー)を確立することで情報交換を開始します。


※LSA (Link State Advertisement): ネットワーク内のリンク状態を他のルータに伝えるためのメッセージ。
このように隣接しているルータ同士の中で、どのようなやりとりが行われているのか、順番に見ていきましょう。


ルータID「1.1.1.1」と「2.2.2.2」のルータがあります。ルータIDはIPアドレスと同じフォーマットで、ネットワーク管理者が設定します。
最初の状態では、まだ何の通信も行われていません。


どちらかのルータが「Helloパケット」を隣接するルータに送信します。Helloパケットには送信元のルータIDが付与されています。


隣接するルータからHelloパケットを受信すると、状態がInitに変わり、ネイバーを認識します。


Helloパケットを返送します。送信元ルータIDを同様に添付し、「自分は『1.1.1.1』のルータをネイバーとして認識しています」という返事になります。


Helloパケットを受け取りました。
ネイバーを認識したため、「1.1.1.1」のルータは状態が「2-Way」へと変わります。


またHelloパケットを送信します。
今度は「ネイバーとして『2.2.2.2』のルータを認識しています」という内容のパケットを送信します。


無事にパケットが届いたため、両方のルータの状態が「2-Way」になりました。


ネイバー関係が確立すると、両方のルータは「ExStart」状態に変わります。
この状態になると、今度はルータの主従関係(マスターとスレーブ)を決める必要があります。


左のルータから「自分がマスターになって良いですか」という確認のパケットが送信されました。
これはどちらのルータから先に送るということは特に決められていません。
※DBDパケット(Database Description Packet)は、OSPFで隣接するルータ同士が持つネットワーク情報(LSAの概要)を比較するために使われるパケットです。


右のルータがパケットを受け取りましたが……。


ルータIDが大きい方がマスターになるため、送信元ルータIDと自身のルータIDを見比べ、自身のルータIDの方が大きかったため、右のルータがマスターになりました。
右のルータはマスターとなり、状態は「Exchange」に変更されます。


右のルータから「自分がマスターです」というメッセージを再度送信します。


左のルータがパケットを受け取り、自分のルータIDの方が小さいため、スレーブになるということを認識しました。
これで無事、マスターとスレーブの主従関係が結ばれることになります。


主従関係が決まると、マスターから「LSDB要約」というパケットが送信されます。
※「LSDB要約(Link State Database Summary)」とは、OSPFルータがネットワークの全体像を把握するために保持するデータベースの概要情報を交換する仕組みです。
LSDBは、各ルータが受け取ったLSA(Link State Advertisement)をまとめたもので、ネットワーク内の全リンクの状態やコスト情報が含まれます。


スレーブ側がLSDB要約を受け取りました。


続いてスレーブ側からもLSDB要約を送信します。


今度はマスターがLSDB要約を受け取りました。
これでマスターとスレーブの役目(どちらが先にパケットを送るか)は終わりです。


続いて左のルータから、受信したLSDB要約の中に自分が知らない情報があった場合、「詳しく教えてください」という意味の「LSAの要求」パケットを送信します。


右のルータがLSAの要求を受け取りました。


要求に応えて、詳しいデータを送ります。
※LSU(Link State Update)は、OSPFにおいてリンクの状態情報(LSA)を交換するために使われるパケットです。


LSAを受け取りました。
LSAを受け取り、足りなかった情報が満たされると状態がFullに変わります。


続いて受け取った情報の確認パケットを送信します。
※LSAck(Link State Acknowledgment)は、OSPFにおいてLSAが正常に受信されたことを確認するために使われる応答パケットです。
LSAckは受信確認を行うだけのシンプルなパケットですが、OSPFにおける信頼性を維持する重要な要素です。
もしLSAckが返ってこない場合、送信元ルータはLSAを再送し、情報の確実な配信を試みます。


LSAckが届きました。
これでネイバー関係の確立が完了します。
その後は、接続が途切れていないかを一定間隔で確認します。


OSPFでは、ネイバー関係確立後に生存確認のためHelloパケットを定期的に送信します。
デフォルトの送信間隔は10秒です(Ethernetなどのブロードキャストネットワークの場合)。
もし、この間隔内にHelloパケットが受信されなければ、一定時間(デッドタイマ、デフォルト40秒)が経過した後にネイバー関係が失われたと判断されます。


ネットワークが途切れていないので、右のルータからもHelloパケットが返答されます。



これがOSPFにおける「ネイバーの確立」の流れです。
まとめると以下のような流れになります。
- Down状態:最初の状態です。この時点では、OSPFパケットがまだ送信・受信されていません。
- Init状態:ルータがHelloパケットを送信し、他のルータからHelloパケットを受信した状態です。この時点では、まだネイバー関係は確立していませんが、隣接するルータの存在を認識しています。
- 2-Way状態:両方のルータが互いのHelloパケットを受け取り、ネイバーであることを認識した状態です。この状態になると、OSPFルータはDR(Designated Router)とBDR(Backup Designated Router)を選出します。
- ExStart状態:ネイバー関係が確立し、LSAの交換を開始する準備段階です。マスターとスレーブが決定され、シーケンス番号の同期が行われます。
- Exchange状態:ルータ間でLSAヘッダが交換され、どのリンク状態情報が必要かを確認する段階です。
- Loading状態:必要なLSAの詳細情報が交換され、データベースが同期されます。この状態で不足しているLSAがリクエストされます。
- Full状態:すべてのLSAが交換され、データベースが完全に同期された状態です。この状態になると、ルータ間で完全なネイバー関係が確立され、最適な経路計算が行われます。
ステップ2:ルートの決定
OSPFでは、ネットワーク内の経路情報をもとに最適なルート(経路)を決定します。
下記のようなネットワークで考えてみましょう。


オレンジのネットワーク内のPCから、緑のネットワーク内のPCへパケットを送りたい場合を考えてみます。
リンクごとに回線速度が異なるため、コスト値が設定されます。(デフォルトで決定されますが、ネットワーク管理者が手動で変更することも可能です)
回線速度 | コスト値 |
10Mbps | 10 |
100Mbps | 1 |
1Gbps | 1 |


上図のルートを通る場合、コスト値は「3」となります。



1+1+1ですもんね。これはわかりやすいです。


このようなルートを通ってしまう場合、コスト値は14となってしまいます。



コスト10のルートを通るとすごく遅くなりそうですね。


この場合は、コスト3になります。


このルートの場合はコスト12となります。



これで、考えられるルート全てのコストを計算することができました。
どのルートが選択されるのかは、コスト値の比較で決まります。
最もコストが低いルートが選ばれますが(ダイクストラアルゴリズム)、コスト3のルートは二種類あります。



その場合はどうなるのですか?
OSPFでは、複数の経路が「等コスト」である場合、データのトラフィックを複数の経路に分散させることができます。
これを等コストバランシングまたはイコールコストマルチパス(ECMP:Equal Cost Multi-Path)と呼びます。



わ、「最も低いコストのルートを選ぶ」というだけでも専門用語があるんですね……。
等コストバランシングでは同じコストの経路が2つ以上存在するとき、それらの経路を並行して使用することでネットワークの負荷を分散し、帯域を有効活用します。



等コストバランシングが採用されることによって、特定の経路にトラフィックが集中するのを防ぎ、ネットワークのパフォーマンスと信頼性が向上するのですよ。
等コストバランシングはデフォルトで有効になっているため、特別な設定を行わなくても、OSPFは自動的に等価な経路を判断してデータ転送を分散します。
まとめ
OSPFは、ネットワーク全体のトポロジを正確に把握し、最適なルーティングを実現するための高機能なリンクステート型プロトコルです。
ネイバーの確立、LSA交換、SPF計算、そして等コストバランシングといった仕組みが連携し、効率的で信頼性の高いネットワーク運用を可能にします。



難しかったけど、頑張って覚えます!
試験対策ではOSPFの基本概念や各ステップの理解がポイントとなります。
しっかりと学習し、ネットワークスペシャリスト試験合格への一歩を進めましょう。
また、OSPFの知識は実務でも役立つため、試験勉強を通して将来のスキルアップにもつなげてもらえると嬉しいです。