OSPF とは|仕組みを図解で理解する LSA・エリア・コストの基礎

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

はじめに

企業内ネットワークの経路制御で広く採用されているルーティングプロトコルが OSPF(Open Shortest Path First)です。Cisco などの機器に触れたことがあれば、router ospf というコマンドを目にした方も多いと思います。

OSPF は特定のメーカーに依存しないオープン標準(RFC 準拠)のプロトコルで、小規模オフィスから数千台規模のエンタープライズ環境まで、規模を問わず安定して動作します。一方で、学習を始めると「LSA」「エリア」「コスト計算」といった用語が連続し、全体像をつかみにくいのも事実です。

この記事でわかること
  • なぜ RIP ではなく OSPF が選ばれるのか(技術的な根拠)
  • LSA・LSDB・コスト・エリア・DR/BDR の仕組み(図解)
  • ネットワークタイプやエリア設計で押さえておきたい制約
  • 機種別(Cisco / FortiGate / YAMAHA / NEC)の設定手順記事への入口

OSPF は、各ルーターがネットワーク全体の地図(トポロジ)を共有し、その地図をもとに帯域幅から算出した「コスト」で最短経路を選びます。RIP のようにホップ数だけで判断しないため、回線速度を反映した経路選択ができる点が最大の違いです。本記事ではこの仕組みを順を追って整理し、機種別の具体的なコンフィグは関連記事へ案内します。

OSPF とは — ネットワークの地図を共有するリンクステート型プロトコル

OSPF は、ネットワーク全体のトポロジ情報を全ルーターで共有し、各自が最短経路を計算するリンクステート型(Link-State)のルーティングプロトコルです。IETF によって標準化されており、IPv4 向けの OSPFv2 は RFC 2328、IPv6 向けの OSPFv3 は RFC 5340 で規定されています。

動作の起点となるのが、各ルーターが自分の周囲の接続状況を記述した LSA(Link State Advertisement)です。ルーター同士が LSA を交換(フラッディング)し、集めた情報を LSDB(Link State Database)という共通のデータベースに蓄積します。同一エリア内の全ルーターが同じ LSDB を持つ状態(同期)を目指すことで、どのルーターからでも一貫した最短経路を導き出せます。

OSPF が支持される 5 つの特徴

OSPF が広く使われる理由は、次の 5 点に集約できます。各項目の詳細は後続のセクションで掘り下げます。

帯域幅ベースの最短経路選択:
ホップ数ではなくコスト(回線速度から算出した値)で経路を選ぶため、低速回線を誤って優先しにくい。

高速な収束:
障害を検知すると差分情報を即座に拡散し、新しい経路を再計算する。

エリアによるスケーラビリティ:
ネットワークをエリア単位で分割し、詳細計算を局所化することで大規模環境でも負荷を抑える。

差分更新による帯域効率:
平常時は小さな Hello パケットのみで、変化があったときだけ差分 LSA を送信する。マルチキャスト(224.0.0.5 / 224.0.0.6)を用いて関係のない端末に負荷をかけない。

マルチベンダー対応:
オープン標準のため、Cisco・Juniper・YAMAHA・Arista など異なるメーカーが混在する環境でも相互接続できる。

RIP・EIGRP との違い

同じ IGP(Interior Gateway Protocol)に分類される RIP・EIGRP と比較すると、OSPF の位置づけが整理しやすくなります。

項目RIPOSPFEIGRP
種別ディスタンスベクターリンクステートハイブリッド(拡張ディスタンスベクター)
メトリックホップ数コスト(帯域ベース)複合メトリック(帯域・遅延など)
最大ホップ数15実質制限なし255(既定 100)
更新方式定期(30 秒)に全経路変化時に差分 LSA変化時に差分
管理距離(AD)12011090(内部)/ 170(外部)
標準化オープン標準(RFC 2453)オープン標準(RFC 2328)RFC 7868(情報提供目的)※実装は限定的
適用規模小規模小〜大規模中〜大規模(主に Cisco 環境)

RIP はホップ数だけで判断するため、低速でも経由ルーターが少ない経路を選んでしまう弱点があります。EIGRP は高機能ですが、もともと Cisco 独自プロトコルとして開発された経緯があり、RFC 7868 として公開されたものの標準化トラックの仕様ではなく、マルチベンダーでの実装は限られています。将来的に他社製品が混在する可能性があるなら、世界標準の OSPF を選ぶ判断が無難です。

参考: Cisco Secure Firewall 設定ガイド(EIGRP)
“it is now an open standard defined in RFC 7868”
(EIGRP は現在、RFC 7868 で定義されたオープン標準となっています。)
https://www.cisco.com/c/en/us/td/docs/security/firepower/720/fdm/fptd-fdm-config-guide-720/fptd-fdm-eigrp.html

最短経路を選ぶ「コスト」の仕組み

OSPF は、完成した LSDB(地図)をもとに、コスト(Cost)という値で経路を選びます。コストは基本的に回線の帯域幅から算出され、帯域が大きい(速い)リンクほどコストが小さくなります。複数経路がある場合は、合計コストが最小となる経路が最短経路として選ばれます。

コストの計算式と既定の参照帯域

コストは、参照帯域(リファレンスバンド幅)をインターフェース帯域で割って求めます。Cisco 機器の既定の参照帯域は 100 Mbps(10^8 bps)です。

参考: Cisco「Review OSPF Frequently Asked Questions」
“The formula to calculate the cost is reference bandwidth divided by interface bandwidth.”
(コストの計算式は、参照帯域をインターフェース帯域で割ったものです。)
https://www.cisco.com/c/en/us/support/docs/ip/open-shortest-path-first-ospf/9237-9.html

既定値(参照帯域 100 Mbps)での計算結果は次のとおりです。算出値が 1 未満になる場合は最小値の 1 に丸められます。

インターフェース帯域既定コスト(参照帯域 100 Mbps)
Ethernet10 Mbps10
FastEthernet100 Mbps1
GigabitEthernet1 Gbps1(100 / 1000 = 0.1 → 1 に丸め)
10GbE10 Gbps1
シリアル(T1)1.544 Mbps64

この表からわかるとおり、既定のままでは 100 Mbps 以上の高速インターフェースがすべてコスト 1 となり、1 Gbps と 10 Gbps を区別できません。

参照帯域の見直し(auto-cost reference-bandwidth)

高速回線を正しく区別するには、auto-cost reference-bandwidth で参照帯域を引き上げます。たとえば 10 Gbps 環境なら 10000、100 Gbps 環境なら 100000(Mbps 単位)を指定します。参照帯域はルーターごとに独立して計算されるため、同一 OSPF ドメイン内のすべてのルーターで同じ値に統一することが推奨されます。値が混在すると、ルーターごとにコスト計算が食い違い、意図しない経路選択につながります。具体的な設定コマンドは Cisco 設定記事で扱います。

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

計算した結果、複数の経路がまったく同じコストになった場合、OSPF は自動的に両方の経路へ通信を分散させます。これを ECMP(Equal Cost Multi Path)と呼びます。特別な設定なしで帯域を有効活用できる点が OSPF の利点の一つです。なお Cisco 機器では既定で最大 4 経路まで負荷分散し、maximum-paths コマンドで最大 32 経路まで拡張できます。

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

OSPF が大規模ネットワークで信頼される理由は、障害発生時の復旧の速さと、平常時のネットワーク負荷の少なさを両立している点にあります。これを支えるのが、差分のみを伝える更新方式と、隣接ルーターの死活監視の仕組みです。

変化があったときだけ送る差分更新

RIP は変化の有無にかかわらず、30 秒ごとに全経路情報を送信します。これは帯域を消費するうえ、障害時も次の周期を待つため復旧が遅れがちです。

一方 OSPF は、LSDB の同期が完了したあとは Hello パケットによる死活確認のみを行い、リンクダウンなどの変化を検知した瞬間に、差分の LSA だけを即座に拡散します。この差分更新により、平常時の帯域消費を抑えつつ、障害時には新しい経路へ素早く切り替えられます。

Hello / Dead タイマーと障害検知

OSPF は隣接ルーターとの間で Hello パケットを定期的に交換し、一定時間(Dead Interval)応答がなければ、その隣接が失われたと判断します。ケーブルが物理的に抜けた場合を除き、基本的にはこの Dead Interval の満了を待ってから障害と判断します。

参考: Cisco「What Does the show ip ospf interface Command Reveal」
“On broadcast and point-to-point links, the default is 10 seconds.”
(broadcast および point-to-point リンクでは、既定値は 10 秒です。)
https://www.cisco.com/c/en/us/support/docs/ip/open-shortest-path-first-ospf/13689-17.html

Dead Interval は既定で Hello Interval の 4 倍です。broadcast / point-to-point では Hello 10 秒・Dead 40 秒、NBMA では Hello 30 秒・Dead 120 秒が既定値となります。より速い検知が必要な場合は、Hello タイマーを短くするか、BFD(Bidirectional Forwarding Detection)を併用することでサブセカンド級の検知も可能です。タイマー値は隣接するルーター間で一致している必要があります。

DR / BDR — マルチアクセスでの情報集約

イーサネット LAN のように、同一セグメントに複数のルーターが接続するマルチアクセス環境では、全ルーターが互いに LSA を交換すると情報が重複し、隣接関係の数が増えすぎます。これを整理するために、OSPF はセグメント内の代表ルーターを選出します。

DR(Designated Router):
セグメント内の代表。各ルーターは DR に情報を集約し、DR が責任を持って全体へ再配布する。

BDR(Backup Designated Router):
DR の障害に備える副代表。常に DR と同じ情報を保持し、DR がダウンした際に昇格する。

DR / BDR 以外のルーター(DROther)は、DR / BDR とのみ FULL(完全な隣接)を確立し、DROther 同士は 2WAY のままにとどまります。これは正常な動作で、隣接関係の数を抑える狙いがあります。情報のやり取りには、DROther から DR / BDR への送信に 224.0.0.6(AllDRouters)、DR から全ルーターへの配布に 224.0.0.5(AllSPFRouters)のマルチキャストアドレスを使用します。

DR の選出は、OSPF プライオリティ(既定値 1)が最も高いルーターが DR、次点が BDR となり、同値の場合はルーター ID(RID)が大きいルーターが優先されます。プライオリティ 0 のルーターは選出対象から除外されます。なお選出は非プリエンプティブで、あとから高プライオリティのルーターが現れても、既存の DR は維持されます。

OSPF のネットワークタイプ

OSPF は、インターフェースが接続する媒体の性質に応じて「ネットワークタイプ」を切り替えます。ネットワークタイプによって、DR / BDR を選出するかどうか、既定の Hello / Dead タイマー、ネクストホップの扱いが変わります。両端のインターフェースでタイプが一致していないと、隣接が確立できない、または不安定になる原因となります。

ネットワークタイプ代表的な媒体DR / BDR 選出既定 Hello / Dead
broadcastイーサネット LANあり10 / 40 秒
non-broadcast(NBMA)フレームリレー、X.25あり30 / 120 秒
point-to-pointシリアル、PPP、GRE トンネルなし10 / 40 秒
point-to-multipoint部分メッシュなし30 / 120 秒

イーサネットの既定は broadcast で、DR / BDR を選出します。2 台のみを接続する point-to-point では代表選出が不要なため、より早く FULL に到達します。NBMA はマルチキャストが使えない媒体向けで、隣接先を手動指定する必要があります。インターフェースの現在のタイプは show ip ospf interface で確認できます(出力例は機種別の設定記事で扱います)。

エリア設計 — スケーラビリティとバックボーン

全ルーターを単一のグループに収容すると、リンクが 1 本増えるたびに全員が LSDB を再計算することになり、CPU やメモリの負荷が増大します。OSPF はネットワークを「エリア(Area)」に分割し、詳細な計算をエリア内に局所化することで、この問題を抑えます。エリアを分けることで、LSDB のサイズを小さく保ち、あるエリアの障害が他エリアの再計算に波及しにくくなります。

エリアを接続する際には階層型の設計ルールがあります。中心となるのがバックボーンエリア(Area 0)で、他のすべてのエリアは Area 0 に隣接する必要があります。エリア間の通信は必ず Area 0 を経由するため、ネットワークがハブ&スポーク状の構造となり、経路のループを防げます。

LSA の主なタイプ

LSA は役割ごとに種類が分かれています。OSPFv2 で実務上よく扱うのは次のタイプです。

タイプ名称主な生成元伝搬範囲
Type 1Router LSA各ルーターエリア内
Type 2Network LSADRエリア内(マルチアクセス)
Type 3Summary LSAABRエリア間
Type 4ASBR Summary LSAABRエリア間(ASBR への経路)
Type 5AS External LSAASBRAS 全体(スタブを除く)
Type 7NSSA External LSANSSA 内の ASBRNSSA 内(ABR で Type 5 へ変換)

エリアをまたぐ Type 3 / Type 4 は ABR(Area Border Router)が、外部から再配布された経路を表す Type 5 は ASBR(AS Boundary Router)が生成します。

エリアの種類(スタブ・NSSA など)

エリアは、通過させる LSA を制限することで、エリア内のルーターが保持する情報量を減らせます。代表的な種別は次のとおりです。

エリア種別通過する主な LSA外部経路の扱い
標準(Normal)Type 1〜5通常どおり通過
バックボーン(Area 0)Type 1〜5全エリアの中継点
スタブ(Stub)Type 1〜3Type 5 を遮断し、既定経路で代替
完全スタブ(Totally Stubby)※Cisco 独自Type 1〜2Type 3〜5 を遮断し、既定経路のみ
NSSAType 1〜3、7Type 7 で外部再配布を許可
完全 NSSA(Totally NSSA)※Cisco 独自Type 1〜2、7Type 3 も遮断

スタブエリアは外部経路(Type 5)を遮断して LSDB を小さく保つ設計です。一方で、エリア内に ASBR を置いて外部経路を再配布したい場合は、NSSA(Not-So-Stubby Area)を用います。

参考: Cisco「Configure the OSPF Not-So-Stubby Area (NSSA)」
“Type 5 LSAs are not allowed in NSSA areas”
(NSSA エリアでは Type 5 LSA は許可されません。)
https://www.cisco.com/c/en/us/support/docs/ip/open-shortest-path-first-ospf/6208-nssa.html

NSSA では外部経路を Type 7 として生成し、ABR がこれを Type 5 に変換して他エリアへ伝搬します。完全スタブ・完全 NSSA は Cisco 独自の拡張で、エリア間経路(Type 3)も遮断してさらに情報量を絞り込みます。

OSPF の基本設定 — Cisco ルーターでの有効化

ここでは OSPF を動かすための最小限の設定を確認します。マルチエリア構成や参照帯域の調整、認証など、踏み込んだコンフィグは Cisco 設定記事で扱います。具体的な手順は関連記事『Cisco ルーターでの OSPF 設定手順とマルチエリア構成のコンフィグ例』を参照してください。

OSPF の有効化とエリアへの参加

OSPF はプロセス ID を指定して有効化し、参加させるインターフェースとエリアを network コマンドで指定します。

Router(config)# router ospf 1
Router(config-router)# network 192.168.1.0 0.0.0.255 area 0

プロセス ID は 1〜65535 の範囲で、ルーター内で OSPF を識別する局所的な番号です。隣接するルーターと一致している必要はありません。network コマンドのワイルドカードマスクはサブネットマスクのビット反転で、/24(255.255.255.0)なら 0.0.0.255 となります。

参考: Cisco IOS IP Routing: OSPF Command Reference(network area)
“The wildcard-mask argument is logically ORed with the ip-address argument in the network command.”
(ワイルドカードマスク引数は、network コマンドの IP アドレス引数と論理 OR されます。)
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/command/iro-cr-book/ospf-i1.html

状態確認の基本コマンド

設定後は、隣接の確立と経路の学習を確認します。

show ip ospf neighbor:
隣接状態を確認する。FULL であれば LSDB の交換が完了している。マルチアクセスでは DROther 同士が 2WAY で止まるのは正常な動作

show ip route ospf:
学習した OSPF 経路を確認する。先頭の O が OSPF 由来の経路を表す。

show ip ospf interface:
インターフェースのネットワークタイプやタイマー、コストを確認する。

各コマンドの詳細な出力例や、マルチエリア・ルート要約・認証の設定は、機種別の設定記事で扱います。

OSPF を導入する際の注意点・制約

OSPF は柔軟で高機能なプロトコルですが、導入・運用にあたって押さえておきたい制約もあります。メリットだけでなく、これらの前提を理解しておくことで、設計時の手戻りやトラブルを抑えられます。

隣接確立には複数の条件一致が必要

OSPF の隣接(ネイバー)は、いくつかの値が一致しないと確立できません。代表的な確認項目は次のとおりです。

  • Hello / Dead タイマーの一致
  • エリア ID の一致
  • ネットワークタイプの整合(broadcast と point-to-point の混在など)
  • サブネットマスク・サブネットの一致
  • 認証設定(鍵・方式)の一致
  • インターフェース MTU の一致。MTU が食い違うと、隣接が ExStartExchange の状態で停止することがあります。

これらの切り分け手順は、関連記事『OSPF のネイバー確立トラブル|下位レイヤから切り分ける原因特定手順』で詳しく扱っています。

設計とリソースに関する制約

エリア設計の制約:
すべてのエリアは Area 0 に隣接する必要があり、エリアをまたぐ通信は Area 0 を経由します。Area 0 から分離したエリアを作る場合は、仮想リンク(virtual-link)などの追加設計が必要になります。

CPU・メモリ負荷:
大規模な単一エリアでは LSDB が肥大化し、SPF 計算の負荷が増えます。リンクが頻繁に上下動(フラッピング)する環境では、再計算が繰り返され負荷が高まります。エリア分割やスタブ化、ルート要約で LSDB を抑える設計が有効です。

設計難易度:
コスト設計、エリア境界での経路要約、再配布など、適切に運用するには相応の設計知識が求められます。小規模で経路数が少ない環境では、スタティックルートのほうが運用がシンプルな場合もあります。

機種別の設定手順(対応機種の一覧)

OSPF はマルチベンダーで相互接続できますが、設定コマンドや GUI 操作は機種ごとに異なります。本ブログでは機種別に設定手順を用意しています。利用機器に合わせて参照してください。

機種・シリーズ設定インターフェース記事
Cisco IOS / IOS XE ルーターCLI(router ospfOSPF 設定手順とマルチエリア構成(公開済み)
FortiGateGUI / CLI準備中
YAMAHA RTX シリーズCLI(ospf コマンド)準備中
NEC IX シリーズCLI準備中

Cisco 環境で Multi-VRF(VRF-Lite)と OSPF を組み合わせる場合は、capability vrf-lite や DN ビットの扱いに固有の注意点があります。詳細は関連記事『capability vrf-lite と DN Bit の役割|OSPF Multi-VRF の落とし穴』を参照してください。

まとめ

OSPF はリンクステート型の IGP として、ネットワーク全体のトポロジ情報を共有し、帯域から算出したコストで最短経路を選びます。RIP のホップ数方式と異なり回線速度を反映でき、エリア分割によって大規模環境にも対応します。仕組みを押さえておけば、機種を問わず設計・運用に応用できます。

  • LSA を交換し LSDB(共通の地図)を同期する動作原理
  • 参照帯域を基準に算出する帯域ベースのコスト計算
  • 既定参照帯域 100 Mbps による高速回線の区別不可と対処
  • マルチアクセスでの DR / BDR による情報集約
  • 媒体に応じて変わるネットワークタイプとタイマー
  • Area 0 を中心とする階層型のエリア設計
  • スタブ・NSSA による LSA 制限と LSDB の最適化

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

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

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次