「OSPFが全然分からない。何がやりたいプロトコルなの?」
CCNAの学習でOSPFにぶつかると、突然難易度が跳ね上がった気がしますよね。エリア、DR/BDR、LSA、コスト計算……。情報量が多すぎて、「結局OSPFって何なの?」という根本的な疑問が置き去りになりがちです。
OSPFとは、ルーターが自動的に最短経路を見つけて、お互いに教え合うための仕組みです。ここを押さえれば、あとはその応用でしかありません。
私は業務でOSPFのマルチエリア設計を日常的にやっていますが、新人にOSPFを教えるとき、いつも「地図を共有して、一番近い道を計算する仕組みだよ」と説明しています。この記事でもその感覚を大事にしながら解説します。
OSPFが解決する問題
スタティックルートの限界
小さなネットワーク(ルーター2〜3台)なら、管理者が手動でルートを設定する「スタティックルート」で十分です。
でも、ルーターが10台、50台、100台と増えていったら? すべてのルーターに手動でルートを設定するのは現実的じゃない。しかも、どこかの回線が切れたとき、スタティックルートだと管理者が手動で経路を切り替えないと通信が復旧しません。夜中の3時に障害が起きたら……?
OSPFは、この問題を自動的に解決してくれます。ルーター同士が「自分の周りの接続状況」を交換し合って、各自がネットワーク全体の地図を持ち、最短経路を自動計算する。回線が切れたら、自動的に別の経路に切り替わる。
これがOSPF(というかダイナミックルーティング全般)のありがたみです。
OSPFの仕組みを5分で理解する
ステップ1:隣のルーターと挨拶する(Helloパケット)
OSPFを有効にしたルーターは、定期的に「Hello」パケットを送って、「自分はここにいるよ」と隣のルーターに伝えます。デフォルトは10秒ごと。
この挨拶が成功して、お互いを認識した状態を「ネイバー関係」と呼びます。
ネイバーが確立する条件: Helloインターバル、デッドインターバル、エリアID、認証設定が一致していること。1つでもズレるとネイバーになれません。実務でもOSPFのトラブルの大半は「ネイバーが上がらない」で、原因のほとんどがこの設定の不一致です。
ステップ2:地図情報を交換する(LSA)
ネイバーになったルーター同士は、「自分はどのネットワークに繋がっているか」「回線の速度はどのくらいか」という情報(LSA=Link State Advertisement)を交換します。
この情報が集まると、各ルーターの手元に**ネットワーク全体の地図(LSデータベース)**が完成します。全員が同じ地図を持っている状態です。
ステップ3:最短経路を計算する(SPFアルゴリズム)
地図が完成したら、各ルーターがSPF(Shortest Path First)アルゴリズムを使って、自分から各ネットワークへの最短経路を計算します。
「最短」の基準になるのがコストです。コストは回線の速度で決まります。速い回線ほどコストが低く、OSPFは合計コストが最小になる経路を選びます。
ステップ4:ルーティングテーブルに載せる
計算した最短経路をルーティングテーブルに登録して、実際のパケット転送に使います。回線障害が起きると、LSAが更新されて地図が書き換わり、新しい最短経路が自動的に計算されます。
コスト計算を具体例で理解する
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を設計するとき、最初にこのコマンドを入れるのが癖になっています。
エリアって何?なぜ分けるの?
小さなネットワークならエリアは1つでOK
ルーターが数台〜十数台の規模なら、全部「エリア0」に入れておけば問題ありません。
大きくなると、地図が重くなる
ルーターが100台を超えてくると、LSAの量が膨大になって、SPFの計算に時間がかかるようになります。しかもどこかで変更があるたびに全ルーターが再計算するので、ネットワーク全体のパフォーマンスが落ちる。
そこで「エリア」を分けます。エリアを分けると、エリア内のLSAはエリア内だけで完結し、エリア間はABR(エリア境界ルーター)が要約情報だけを伝達します。地図のサイズが小さくなるので、計算が速くなる。
エリア0(バックボーン)が必須
OSPFのルールとして、すべてのエリアはエリア0に接続しなければならない。エリア1とエリア2が直接やり取りすることはなく、必ずエリア0を経由します。
なぜかというと、ループを防ぐためです。エリア間のルートは必ずエリア0を通るので、経路がぐるぐる回ることがない。
DR/BDRって結局何のためにいるの?
ルーターが5台同じネットワーク(マルチアクセスネットワーク)に繋がっているとします。全員が全員にLSAを送り合うと、通信量が爆発します。
そこで代表者(DR=Designated Router)を1台選んで、LSAのやり取りはDRを経由して行う。BDR(Backup DR)はDRが死んだときの予備。
DR選出のルール:
① プライオリティが一番高いルーターがDR(デフォルトは1。0にすると候補から外れる)
② プライオリティが同じなら、ルーターIDが一番高いルーター
③ 一度選ばれたDRは、後からプライオリティが高いルーターが来ても交代しない(プリエンプトなし)
③が引っかけポイントとしてよく出ます。
Packet Tracerで試してみよう
ここまでの内容は、Packet Tracerでルーター3台を繋いでOSPFを設定するだけで体感できます。
- ルーター3台を三角形に接続
- 各インターフェースにIPアドレスを設定
router ospf 1→network [ネットワーク] [ワイルドカード] area 0を各ルーターで設定show ip ospf neighborでネイバーがFULLになることを確認show ip routeでOSPFルート(Oマーク)が載ることを確認- 1本のリンクをshutdownして、経路が自動的に迂回することを確認
6番目の「迂回を確認する」が一番楽しいです。OSPFが何のために存在するのかを、自分の目で見られます。
OSPF問題で腕試し
理解できたら、当サイトのOSPF想定問題で力試ししてみてください。
まとめ
OSPFは「ルーター同士が地図を共有して、最短経路を自動計算する仕組み」。これが根っこです。
エリアもDR/BDRもコスト計算も、この大前提の上に乗っかっています。土台が固まれば、細かい仕様は後から自然と理解できるようになります。
CCNA合格に向けた全体の学習戦略はこちら。