OSPFとは?仕組みを現役エンジニアが5分でわかりやすく解説

「OSPFが全然分からない。何がやりたいプロトコルなの?」

CCNAの学習でOSPFにぶつかると、突然難易度が跳ね上がった気がしますよね。エリア、DR/BDR、LSA、コスト計算……。情報量が多すぎて、「結局OSPFって何なの?」という根本的な疑問が置き去りになりがちです。

OSPFとは、ルーターが自動的に最短経路を見つけて、お互いに教え合うための仕組みです。ここを押さえれば、あとはその応用でしかありません。

私は業務でOSPFのマルチエリア設計を日常的にやっていますが、新人にOSPFを教えるとき、いつも「地図を共有して、一番近い道を計算する仕組みだよ」と説明しています。この記事でもその感覚を大事にしながら解説します。

OSPFが解決する問題

OSPFの経路選択の仕組み
遠回りに見えても「コストの合計が最も小さい経路」を自動的に選びます
コスト 50 合計コスト 50 (不採用) コスト 10 コスト 10 合計コスト 20 (こちらを自動選択) 10 + 10 = 20 ルーターA 送信元 ルーターB ルーターC 宛先
※ コストとは: 回線の帯域幅(通信速度)などを基準に計算される値です。一般的に、通信速度が速い回線ほどコストは小さくなり、OSPFは合計コストが最も小さい経路を優先します。

スタティックルートの限界

小さなネットワーク(ルーター2〜3台)なら、管理者が手動でルートを設定する「スタティックルート」で十分です。

でも、ルーターが10台、50台、100台と増えていったら? すべてのルーターに手動でルートを設定するのは現実的じゃない。しかも、どこかの回線が切れたとき、スタティックルートだと管理者が手動で経路を切り替えないと通信が復旧しません。夜中の3時に障害が起きたら……?

OSPFは、この問題を自動的に解決してくれます。ルーター同士が「自分の周りの接続状況」を交換し合って、各自がネットワーク全体の地図を持ち、最短経路を自動計算する。回線が切れたら、自動的に別の経路に切り替わる。

これがOSPF(というかダイナミックルーティング全般)のありがたみです。

OSPFの仕組みを5分で理解する

ステップ1:隣のルーターと挨拶する(Helloパケット)

OSPFを有効にしたルーターは、定期的に「Hello」パケットを送って、「自分はここにいるよ」と隣のルーターに伝えます。デフォルトは10秒ごと。

この挨拶が成功して、お互いを認識した状態を「ネイバー関係」と呼びます。

ネイバーが確立する条件: Helloインターバル、デッドインターバル、エリアID、認証設定が一致していること。1つでもズレるとネイバーになれません。実務でもOSPFのトラブルの大半は「ネイバーが上がらない」で、原因のほとんどがこの設定の不一致です。

ネイバー確立の流れ
Helloパケットを交換し、条件が一致すると隣接関係(ネイバー)を結びます
Hello(10秒ごと) Hello(10秒ごと) エリアID、Helloインターバル、 デッドインターバルが一致 ネイバー確立 ルーターA ルーターB
※ 補足: 一般的なLAN環境(イーサネットなど)の場合、Helloインターバル(送信間隔)は10秒、デッドインターバル(ダウンと見なすまでの待機時間)は40秒に設定されています。これらのパラメータが両方のルーターで完全に一致していないと、ネイバー関係は結ばれません。

ステップ2:地図情報を交換する(LSA)

ネイバーになったルーター同士は、「自分はどのネットワークに繋がっているか」「回線の速度はどのくらいか」という情報(LSA=Link State Advertisement)を交換します。

この情報が集まると、各ルーターの手元に**ネットワーク全体の地図(LSデータベース)**が完成します。全員が同じ地図を持っている状態です。

ステップ3:最短経路を計算する(SPFアルゴリズム)

地図が完成したら、各ルーターがSPF(Shortest Path First)アルゴリズムを使って、自分から各ネットワークへの最短経路を計算します。

「最短」の基準になるのがコストです。コストは回線の速度で決まります。速い回線ほどコストが低く、OSPFは合計コストが最小になる経路を選びます。

ステップ4:ルーティングテーブルに載せる

計算した最短経路をルーティングテーブルに登録して、実際のパケット転送に使います。回線障害が起きると、LSAが更新されて地図が書き換わり、新しい最短経路が自動的に計算されます。

コスト計算を具体例で理解する

コスト計算の具体例
帯域幅(通信速度)が速いほどコストは小さくなり、優先して選択されます
100Mbps(コスト 1) ✅ 自動選択(最短経路) 10Mbps(コスト 10) ❌ 不採用(遠回り) ルーターA ルーターB
※ Ciscoルーターの場合の基準帯域幅: デフォルトでは100Mbpsを基準とし、「100Mbps ÷ インターフェイスの帯域幅」でコストを算出します。そのため、100Mbpsのコストは1、10Mbpsのコストは10となります。

OSPFのコストは参照帯域幅 ÷ インターフェース帯域幅で計算します。

デフォルトの参照帯域幅は100Mbps。なので、

・100Mbps(FastEthernet)のコスト = 100 ÷ 100 = 1 ・10Mbps のコスト = 100 ÷ 10 = 10 ・1Gbps のコスト = 100 ÷ 1000 = 1(小数点以下切り捨て)

……あれ、100Mbpsも1Gbpsもコスト1になっちゃいますね。これだとOSPFは「100Mbpsの回線も1Gbpsの回線も同じ速さ」と判断してしまいます。

だから実務では参照帯域幅を変更します。 auto-cost reference-bandwidth 10000(10Gbps)に設定すると、

・1Gbps のコスト = 10000 ÷ 1000 = 10 ・100Mbps のコスト = 10000 ÷ 100 = 100

これなら速度の違いがちゃんとコストに反映される。私もOSPFを設計するとき、最初にこのコマンドを入れるのが癖になっています。

エリアって何?なぜ分けるの?

エリアの概念
大規模ネットワークを分割管理。他のエリアと通信するには「エリア0」の経由が必須です
エリア 0 (バックボーン) エリア 1 エリア 2 ルーター ABR ルーター ABR ルーター ! すべてのエリアはエリア0に接続が必須
※ ABR(Area Border Router): 複数のエリアの境界に配置されるルーターのことです。OSPFでは、エリア間でルーティング情報をやり取りする際、必ずエリア0(バックボーン)を通過するルール(ハブ&スポーク構造)になっています。

小さなネットワークならエリアは1つでOK

ルーターが数台〜十数台の規模なら、全部「エリア0」に入れておけば問題ありません。

大きくなると、地図が重くなる

ルーターが100台を超えてくると、LSAの量が膨大になって、SPFの計算に時間がかかるようになります。しかもどこかで変更があるたびに全ルーターが再計算するので、ネットワーク全体のパフォーマンスが落ちる。

そこで「エリア」を分けます。エリアを分けると、エリア内のLSAはエリア内だけで完結し、エリア間はABR(エリア境界ルーター)が要約情報だけを伝達します。地図のサイズが小さくなるので、計算が速くなる。

エリア0(バックボーン)が必須

OSPFのルールとして、すべてのエリアはエリア0に接続しなければならない。エリア1とエリア2が直接やり取りすることはなく、必ずエリア0を経由します。

なぜかというと、ループを防ぐためです。エリア間のルートは必ずエリア0を通るので、経路がぐるぐる回ることがない。

DR/BDRって結局何のためにいるの?

DR/BDRの役割
LSA(リンクステート情報)の交換を「代表ルーター」に集約し、通信量を削減します
L2スイッチ DR (代表ルーター) LSAはDR経由で交換 ルーター BDR (バックアップ) ルーター DROther DROther DROther
※ DRとDROther: ルーター同士がフルメッシュ(全台同士)で情報を交換するとネットワークがパンクするため、代表者(DR)を1台決め、DROther(その他のルーター)はDRとのみ情報を交換する仕組みになっています。BDRはDRがダウンした時のための待機役です。

ルーターが5台同じネットワーク(マルチアクセスネットワーク)に繋がっているとします。全員が全員にLSAを送り合うと、通信量が爆発します。

そこで代表者(DR=Designated Router)を1台選んで、LSAのやり取りはDRを経由して行う。BDR(Backup DR)はDRが死んだときの予備。

DR選出のルール:

① プライオリティが一番高いルーターがDR(デフォルトは1。0にすると候補から外れる)

② プライオリティが同じなら、ルーターIDが一番高いルーター

③ 一度選ばれたDRは、後からプライオリティが高いルーターが来ても交代しない(プリエンプトなし)

③が引っかけポイントとしてよく出ます。

Packet Tracerで試してみよう

ここまでの内容は、Packet Tracerでルーター3台を繋いでOSPFを設定するだけで体感できます。

  1. ルーター3台を三角形に接続
  2. 各インターフェースにIPアドレスを設定
  3. router ospf 1network [ネットワーク] [ワイルドカード] area 0 を各ルーターで設定
  4. show ip ospf neighbor でネイバーがFULLになることを確認
  5. show ip route でOSPFルート(Oマーク)が載ることを確認
  6. 1本のリンクをshutdownして、経路が自動的に迂回することを確認

6番目の「迂回を確認する」が一番楽しいです。OSPFが何のために存在するのかを、自分の目で見られます。

OSPF問題で腕試し

理解できたら、当サイトのOSPF想定問題で力試ししてみてください。

まとめ

OSPFは「ルーター同士が地図を共有して、最短経路を自動計算する仕組み」。これが根っこです。

エリアもDR/BDRもコスト計算も、この大前提の上に乗っかっています。土台が固まれば、細かい仕様は後から自然と理解できるようになります。

CCNA合格に向けた全体の学習戦略はこちら。

PR