【OSPF 入門】なぜ大規模 NW で選ばれるのか?「地図」を持つ仕組みと5つのメリット

  • URLをコピーしました!
目次

はじめに

企業内ネットワークの構築において、最も広く採用されているルーティングプロトコル、それが OSPF(Open Shortest Path First)です。

Cisco などのネットワーク機器を触ったことがある方なら、一度は router ospf というコマンドを目にしたことがあると思います。 OSPF は、特定のメーカーに依存しない オープン標準(RFC 準拠) のプロトコルであり、数台規模の小規模オフィスから、数千台規模の巨大なエンタープライズ環境まで、あらゆる規模で安定して動作するのが特徴です。

しかし、その高機能さゆえに、学習を始めると「LSA? エリア? コスト計算?」といった専門用語の壁にぶつかりがちです。

本記事では、OSPF がなぜこれほど支持されているのか、その 「5つの技術的なメリット」 を軸に、仕組みを分かりやすく図解します。

この記事でわかること
  • なぜ RIP ではなく OSPF が選ばれるのか(技術的根拠)
  • 「コスト」や「エリア」が必要な理由(設計思想)
  • Cisco ルーターでの基本的な設定手順

OSPF の目的と特徴

OSPF は リンクステート型(Link-State)と呼ばれるルーティングプロトコルです。 これは、ネットワーク全体の「地図(トポロジ)」を全てのルーターが共有するという設計思想に基づいています。

なぜ、これほど複雑な仕組みが必要だったのでしょうか? その理由は、OSPF が以下の 「5つの強み」 を実現するために設計されたプロトコルだからです。

最短経路の自動計算(ベストパスの選定)

OSPF 最大の特徴は、ルートを選ぶ基準に 「帯域幅(回線速度)」 を使用することです。

RIP の場合

単純に経由するルーターの数(ホップ数)だけで判断します。そのため、低速な回線でも「近い」と判断して選んでしまう欠点があります。

OSPF の場合

リンクの 帯域幅を「コスト」として計算 します。たとえ遠回りでも、10Mbps の細い道より 1Gbps の高速道路(コストが低い道)を優先して選択します。

また、コストが全く同じ経路が複数ある場合は、通信を分散させる 「等コストロードバランシング(ECMP)」 も自動で行います。

Cisco などのデフォルト設定では、コスト計算の基準(参照帯域幅)が 「100Mbps」 になっています。このままだと、1Gbps も 10Gbps も計算結果が同じ「1(最低コスト)」になってしまいます。そのため、auto-cost reference-bandwidth コマンドを使って、基準を 10Gbps や 100Gbps に引き上げるのが「お作法」になっています。

高速なネットワーク収束(Convergence)

ネットワークに障害(ケーブル断線など)が発生した際、通信が復旧するまでの時間を「収束(コンバージェンス)時間」と呼びます。

OSPF は、ネットワークの変化を検知すると、即座にその情報を拡散し、瞬時に新しいルートを再計算します。これにより、障害発生時でも数秒〜数十秒程度(設定によっては1秒未満)で通信を迂回・回復させることができます。

「瞬時に切り替わる」と言っても、ケーブルが物理的に抜けた場合を除き、基本的には「ネイバーからの定期連絡(Hello パケット)」が途切れるのを待ってから障害と判断します(デフォルトだと約40秒) もっと速くしたい場合は、Hello タイマーを短くしたり、BFD という高速検知機能を組み合わせたりします。

大規模ネットワークへの対応(スケーラビリティ)

数百台、数千台のルーターが存在する大規模ネットワークでは、すべての情報を全員が計算していると、ルーターの CPU やメモリがパンクしてしまいます。

OSPF はネットワークを 「エリア(Area)」 という単位で分割管理する機能を備えています。 詳細な計算をエリア内に限定することで、ルーターの負荷を抑え、巨大なネットワークでも安定して稼働させることができます。

OSPF のエリア設計には絶対的なルールがあります。それは「すべてのエリアは、必ずバックボーンエリア(Area 0)に隣接していなければならない」 ということです。 「Area 1」の隣に「Area 2」を作る……といった数珠つなぎは禁止されています。すべての地方情報は、必ず一度「中央(Area 0)」を経由するルールになっています。

効率的なルーティング情報の更新

古いプロトコル(RIP など)は、30秒ごとに「全ての経路情報」を垂れ流しにするため、帯域を無駄に消費していました。

対して OSPF は、最初に地図を交換した後は、「変化があった時だけ」 その差分情報(LSA: Link State Advertisement)を送信します。 平常時は「生きてるよ(Hello パケット)」という小さな挨拶しかしないため、ネットワーク帯域を圧迫しません。

RIP はネットワーク内の全員に向かって大声で叫ぶ(ブロードキャスト)ので、関係ない PC まで処理をしてしまいます。 対して OSPF は、OSPF を喋るルーターだけに届く 「マルチキャスト(224.0.0.5 / 224.0.0.6)」 を使います。関係ない端末に迷惑をかけない、行儀の良いプロトコルです。

オープンな標準規格

OSPF は IETF によって標準化(RFC)されたオープンなプロトコルです。 Cisco、Juniper、Yamaha、Arista など、異なるメーカーの機器が混在する環境(マルチベンダー環境)でも問題なく相互接続が可能です。 これが、特定のベンダーに依存しない柔軟なネットワーク設計を可能にしています。

よく比較されるのが、Cisco 独自の EIGRP です。設定が簡単で非常に高性能ですが、「Cisco 製品でしか使えない(※一部公開されましたが実装は少ない)」という縛りがあります。 将来的にヤマハや FortiGate など、他社製品を混ぜる可能性があるなら、世界標準である OSPF を選んでおくのが無難な選択です。

最短経路の自動計算(ベストパス)

OSPF が「賢い」と言われる最大の理由は、ネットワーク全体の詳細な地図を持ち、その中から最も効率的なルートを自分で計算できる点にあります。 そのプロセスを分解して見ていきましょう。

地図を作る「LSA」と「LSDB」

OSPF の動作は、まず「世界地図」を作ることから始まります。しかし、最初から完成した地図を持っているルーターはいません。 そこで、「LSA」「LSDB」 という仕組みを使います。

LSA(Link State Advertisement)

「私はルーター A です。隣にはルーター B がいて、回線速度は 1Gbps です」 という、自分の周囲の状況だけを書いた「情報のパズルピース(断片)」です。これを全ルーターが互いに投げ合います(フラッディング)

LSDB(Link State Database)

集まってきた大量のパズルピース(LSA)を組み合わせて完成させた「世界地図(データベース)」です。

OSPF では、同じエリア内の全てのルーターが、完全に同じ LSDB(地図) を持つ状態を目指します(これを「同期」と呼びます) 全員が同じ地図を持っているからこそ、どのルーターも「ここからゴールへの最適解」を正しく導き出せます。

帯域幅を基準にした「コスト計算」

地図(LSDB)が完成したら、次はルート計算です。 ここで OSPF は 「コスト(Cost)」 という値を使って、道を選びます。

OSPF のコストは、基本的に 「帯域幅(回線速度)」 から計算されます。 考え方は非常にシンプルで、「回線が太い(速い)ほど、コスト(労力)は小さくなる」 というルールです。

  • 10Gbps(高速道路): コストが非常に小さい。= 優先される
  • 10Mbps(未舗装路): コストが大きい。= 避けられる

例えば、目的地へ行くのに以下の2つのルートがあったとします。

  1. 距離は近いが、遅い道(ルーター1台経由、10Mbps)
  2. 遠回りだが、爆速の道(ルーター3台経由、10Gbps)

RIP(ホップ数重視)なら「1」を選んでしまいますが、OSPF は迷わず 「2」 を選びます。これが「最短経路」の意味するところです。

等コストロードバランシング(ECMP)

もし、計算した結果「ルート A」と「ルート B」のコストが ピッタリ同じ だった場合はどうなるでしょうか?

OSPF は 「どちらか片方だけ使うのはもったいない」 と判断し、自動的に両方のルートを使って通信を分散させます。これを ECMP(Equal Cost Multi Path)と呼びます。 特別な設定なしで、帯域を有効活用できるのも OSPF の大きなメリットです。

高速な収束と効率的な更新

OSPF が大規模ネットワークで信頼される大きな理由は、障害発生時の「復旧の速さ」と、普段の「ネットワークへの負荷の少なさ」を両立している点にあります。 これを実現するために、主に2つの仕組を使います。

変化があった時だけ叫ぶ「トリガーアップデート」

ネットワークの状態は常に変化します。ケーブルが抜けたり、新しいルーターが追加されたりした際、その情報をいかに早く全員に伝えるかが重要です。

RIP(古いやり方)

変化があろうとなかろうと、30秒ごとに持っている全ての経路情報を隣のルーターに送りつけます。これは帯域の無駄遣いですし、障害が起きても次の30秒のタイマーを待つ必要があるため、復旧が遅れます。

OSPF

地図が完成した後は、基本的には静かです(小さな生存確認パケットのみ)。 しかし、リンクダウンなどの「変化」を検知した瞬間に、その変わった部分(差分 LSA)だけを即座に発信します。これを 「トリガーアップデート」 と呼びます。

この仕組みにより、平時の帯域消費を最小限に抑えつつ、障害発生時には瞬時に情報を拡散し、新しいルートへ切り替える(コンバージェンス)ことができます。

情報の交通整理「DR / BDR」

イーサネット(LAN ケーブルでハブに繋がっているような環境)では、複数のルーターが同一セグメントに存在することがあります。 ここで全員が互いに LSA を投げ合うと、情報が重複してネットワークが混乱してしまいます(会議で全員が同時に喋り出すような状態です)

そこで OSPF は、そのネットワーク内の「代表者」を選出し、情報のやり取りを整理します。

DR(Designated Router / 代表ルーター

セグメント内の「リーダー」です。他のルーターは、まず DR にだけ情報を報告します。DR はそれをまとめ、責任を持って全員に再配布します。

BDR(Backup Designated Router / バックアップ代表ルーター

DR がダウンした時に備える「副リーダー」です。常に DR と同じ情報を持ち、いざという時に瞬時に DR に昇格します。

この仕組みによって、LSA のやり取りが「対 DR/BDR」に集約され、ネットワークトラフィックが効率化されます。

大規模環境を支える「エリア設計」

OSPF は数千台規模のネットワークでも動作しますが、もし全ルーターをたった一つのグループに入れてしまうと、大変なことが起きます。 これを防ぐのが 「エリア(Area)」 という概念です。

なぜエリアを分けるのか?(スケーラビリティ)

もし、世界中のすべての道や建物を記した「一枚の巨大な地図」を、全員が持ち歩いていたらどうなるでしょうか? 道が一本増えるたびに全員が巨大な地図を書き直さなければならず、ルーターの頭脳(CPU)も記憶容量(メモリ)もパンクしてしまいます。

そこで OSPF では、ネットワークを「エリア」というグループに分割します。

シングルエリア(分割なし)

全員が詳細な「全世界の地図」を持つ。負荷が高い。

マルチエリア(分割あり)

自分の住んでいる地域の詳細地図だけを持つ。 隣の地域については「北に行けば『氷の国』がある」程度のざっくりした情報(要約されたルート)だけを持つ。

エリアを分けることで、LSDB(地図)のサイズを小さくし、ネットワークの一部で障害が起きても、他のエリアには影響(再計算)が及ばないようにできます。

バックボーンエリア(Area 0)の役割

エリアを分ける際、適当に繋げていいわけではありません。OSPF には「階層型ネットワークデザイン」という厳格なルールがあります。

その中心となるのが 「バックボーンエリア(エリア 0)」 です。

エリア 0(中央政府)

すべてのエリアの中心。他のエリア同士が通信する場合、必ずここを通らなければならない。

その他のエリア(地方自治体)

必ずエリア 0 に接続する。

これにより、ネットワークが「ハブ&スポーク」のような綺麗な形になり、情報のループ(無限ループ)を防ぐことができます。

実践 Cisco ルーターでの基本設定例

仕組みがわかったところで、実際の Cisco ルーター(IOS)での設定手順を見てみます。 コマンドは非常にシンプルですが、いくつか独特なルールがあります。

OSPF の有効化とエリア設定

OSPF を設定するには、「プロセスID」 を決めて有効化し、「どのインターフェースをどのエリアに参加させるか」 を指定します。

基本コマンド構文

(config)# router ospf [プロセスID]
(config-router)# network [ネットワークアドレス] [ワイルドカードマスク] area [エリアID]

設定例:Router-A(192.168.1.1/24)を エリア 0 に参加させる

Router-A(config)# router ospf 1
Router-A(config-router)# network 192.168.1.0 0.0.0.255 area 0
💡ここがポイント
プロセス ID(例: 1)

ルーター内で OSPF を識別する番号です。隣のルーターと一致している必要はありません(1でも100でもOK)

ワイルドカードマスク(例: 0.0.0.255

サブネットマスクの「反転(0と1が逆)」です。 /24 (255.255.255.0) なら 0.0.0.255 になります。「どの範囲の IP を持つインターフェースを OSPF に参加させるか」を指定しています。

ステータス確認コマンド(show)

設定が終わったら、正しく動いているか確認しましょう。使うのは主にこの2つです。

  1. ネイバー(隣人)になれたか確認: まず、隣のルーターと挨拶(Hello)ができているかチェックします。
Router-A# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.2       1   FULL/DR         00:00:35    192.168.1.2     GigabitEthernet0/0
  • FULL: 地図(LSDB)の交換が完了している状態。これが出ていれば成功です。
  • 2WAY: ネイバー関係は確立しているが、情報の交換はしていない状態(DROther 同士など)
  1. OSPF で学習したルートを確認: ルーティングテーブルを見て、OSPF で学習した経路が入っているか確認します。
Router-A# show ip route ospf

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
O        10.1.1.0/24 [110/2] via 192.168.1.2, 00:05:12, GigabitEthernet0/0
  • O (OSPF): 先頭に O が付いているのが、OSPF によって自動計算された「最短ルート」です。
  • [110/2]: 110 は管理距離(アドミニストレーティブディスタンス)、2 は計算された「コスト」を表します。

まとめ

本記事では、大規模ネットワークのデファクトスタンダードである OSPF について解説しました。

OSPF とは

バラバラのパズルピース(LSA)を集めて「地図(LSDB)」を共有する仕組み

選ばれる理由

単純な距離ではなく「回線速度(コスト)」でルートを選ぶ賢さと、変化があった時だけ更新する効率性

重要な概念

大規模環境をパンクさせないための「エリア設計(階層構造)」と、情報の交通整理をする「DR/BDR」

以上、最後までお読みいただきありがとうございました。


よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次