初心者向けOSPFを分かり易く詳しく解説

OSPFって、用語が多くて急に難しく感じますよね。LSA、LSDB、SPF、エリア、DR/BDR…単語は見たことあるのに「結局なにが起きてるの?」が腹落ちしない。

この記事は、初心者が一番つまずく“流れ”を軸に、OSPFを「詳しく」でも迷子にならない形で整理します。

 

 




OSPFとは:初心者が最初に押さえる全体像

ルーティングプロトコルの中でのOSPF

OSPFが「リンク状態型」である意味

OSPF(Open Shortest Path First)は、ルータ同士で「どの道がつながっているか」を共有して、一番良い道順(最短の道)を自分で計算する仕組みです。

OSPFの特徴は、“経路そのもの”をやり取りするというより、「地図」をみんなで揃える”ところにあります。

この「地図」のことを LSDB(リンク状態データベース) と呼びます。

LSDBは、ネットワーク全体のつながり方をまとめたメモ帳みたいなものです。

OSPFでは、ルータはまずこのLSDBを集めて、そこから「自分を出発点」にして最短の道順を計算し、ルーティングテーブル(どこへどう送るかの表)を作ります。

これはRFC(公式の仕様書)にも「LSDBから最短経路木を作ってルーティングテーブルを作る」と説明されています。

初心者が混乱しやすいのは、「LSA」「SPF」などの言葉が急に沢山出てくる事です。

でも、覚え方はシンプルでOKです。

  • LSA:地図に貼る“ふせん”(「ここにつながる道があるよ」という情報)
  • LSDB:ふせんが集まった“地図帳”
  • SPF:地図帳を使って「一番近い道」を計算する作業
    つまりOSPFは、みんなで地図を同じにしてから、各自で計算して決めるプロトコルです。だからこそ、後で説明する「ネイバー(お隣)作り」や「地図の同期」がとても大事になります。

OSPFのコア概念:LSDBとSPF

同じ地図(LSDB)を共有する理由

LSDB→SPF→経路表の流れ

OSPFの流れは、大体次の3段階です。

  1. 地図(LSDB)を揃える
  2. 最短ルート(SPF)を計算する
  3. 結果をルーティングテーブルに入れる

最初にやる「地図を揃える」が、OSPFらしさの中心です。

ルータは、道の情報を LSA という形で配って、周りのルータも同じ情報を持てるようにします。

情報が増えるとLSDB(地図帳)が更新されます。

すると、ルータはSPF計算をして「このあて先へはこの道が一番いい」と決め直します。

RFCでも、LSDBから最短経路木を作り、それがルーティングテーブルにつながる、と説明されています。

ここで大事なポイントが1つあります。

LSAは“経路表”ではないという事です。

LSAはあくまで「地図の材料」です。

材料(LSA)が集まって地図(LSDB)になり、地図を見て計算(SPF)して、ようやく経路表になります。

だから、もし障害が起きたときは「経路表がおかしい」の前に、次の順で考えると原因に近づき易いです。

  • そもそもLSAが正しく届いている?(地図の材料)
  • ルータ同士のLSDBは同じ?(地図が一致してる?)
  • SPF計算の結果はどうなってる?(計算ミスではなく“材料違い”かも)

OSPFが分かってくると、「いま問題なのは地図が違うのか、計算結果なのか」を切り分け出来るようになります。

これが“詳しく理解する”って事の大きな一歩です。

Helloから始まるネイバー形成

Hello/Deadと成立条件

一致しないと上がらない項目

OSPFは、まず Helloパケット で「近くにOSPFを話せる相手がいるか」を探します。

Helloは、簡単に言うと「定期的に送る挨拶」です。

挨拶が届くと、相手が生きている事が分かります。

でも初心者がよくハマるのが、Helloは届いているのに、ネイバー(隣の相手)が成立しないケースです。

これは大体「条件が一致していない」せいです。

よくあるチェックポイントは、まずこの4つです。

  • Hello間隔/Dead時間:挨拶の頻度と、相手が消えたと判断する時間。ここがズレると仲良くなれません。
  • エリア番号(Area ID):同じエリアにいないと、そもそも別チーム扱いです。
  • 認証(パスワード):片方だけ鍵をかけていると会話出来ません。
  • ネットワークタイプ:その回線が「みんなで話す場所」なのか「1対1」なのかで動きが変わります。

特に「エリア違い」「タイマー違い」は、実務でも本当に多いです。

ネイバーが上がらないときは、まずこの条件の一致を確認すると早いです。

そして、Helloで見つけた相手と必ず“全部の情報交換”をする訳ではありません。

OSPFは、場面によって「この相手とは深く情報交換する(隣接)」を選びます。

次の章で説明する状態(2-Way、Fullなど)が、そのヒントになります。

Ciscoの解説でも、隣接が出来るまでに状態が変わっていく事が説明されています。

ネイバー状態遷移とDB同期パケット

2-WayからFullまでの会話

DBD/LSR/LSU/LSAckの役割

Helloで相手を見つけたら、次は「地図(LSDB)を同じにする作業」に入ります。

この時、OSPFは“会話の手順”をちゃんと持っています。

代表的な流れはこうです。

  • DBD:お互いの地図帳の「目次」を見せ合う
  • LSR:足りないページを「それちょうだい」とお願いする
  • LSU:お願いされたページ(LSA)を送る
  • LSAck:受け取ったよ、と返事する

この流れを覚えると、「なぜFullにならないのか」が見えます。

OSPFは、ネイバーができても、すぐFull(完全に同期)になるとは限りません。

途中で ExStart / Exchange / Loading といった状態を通ります。

Ciscoの資料でも、隣接が出来るまでにこうした状態がある事が説明されています。

特に有名な詰まりポイントが、ExStartやExchangeで止まるケースです。

ここは「DBDのやり取り(地図の目次交換)」がうまくいっていない可能性が高いです。

原因として多いのが MTU不一致(送れるデータの最大サイズが左右で違う)です。

Ciscoのトラブルシュート資料でも、Exstart/Exchangeで止まる問題の調査がまとめられています。

ざっくり言うと、片方が「この大きさで送るよ」と思って送ったものを、もう片方が「その大きさは受け取れない」と判断して会話が進まない、という感じです。

だから、ネイバーが「2-Wayで止まる」「ExStartで止まる」「Fullにならない」と出たら、Hello条件だけじゃなく、DB同期の会話が進んでいるかを見るのがコツです。

OSPFは“地図合わせプロトコル”なので、地図が合わない限り先へ進めません。

LSAを最低限で整理する

Type1/2/3/5/7だけ先に覚える

「届く範囲」で覚えるLSA

LSAは種類が多くて、最初はしんどいです。だから初心者は、まず Type1 / 2 / 3 / 5 / 7 だけに絞ってOKです。

コツは「番号を丸暗記」ではなく、“どこまで届く情報か”で覚える事です。

  • Type1(Router LSA):そのエリアの中だけに届く「自分の情報」
  • Type2(Network LSA):同じネットワークにいるメンバー情報(まとめ役が出す)
  • Type3(Summary LSA):別エリアの情報を「要約して」エリアに持ち込む
  • Type5(External LSA):OSPFの外から入ってきた道(再配布)
  • Type7(NSSA External LSA):NSSAという特別エリアの中だけで使う外部情報

特に覚えておくと強いのが Type7 です。

NSSAではType5が使えないので、代わりにType7を流し、NSSAの境界にいるABRがType5に変換して外へ出します。

CiscoのNSSA解説にも「Type7はABRでType5に変換される」と書かれています。

これはRFCでも考え方が説明されています。

この「どこまで届くか」で見ると、エリア設計が理解し易くなります。

  • エリアの中だけに広がる情報
  • エリアをまたぐときに要約される情報
  • 外部から来る情報(増えやすい)

OSPFは地図(LSDB)を持つ分、情報が増えすぎると重くなります。

だから「外部情報は入れない」「要約だけにする」みたいに、情報を増やしすぎない工夫が必要になります。

次のコストやエリア設計は、その延長線上です。




コスト設計とルート選択

Costとreference-bandwidth

ref-bwを直さないと事故る理由

OSPFが「どの道を使うか」を決めるときは、コスト(Cost)の合計が小さい道を選びます。

コストは、基本的に「回線が速いほど小さくなる」ように計算されます。

多くの機器では、次の式がベースです。

コスト = 参照帯域(reference bandwidth) ÷ 回線の帯域

これはCiscoのFAQでも説明されていて、参照帯域として100Mbpsを使う例が出ています。

ここでの落とし穴が、参照帯域の初期値が小さいままな事です。

例えば参照帯域が100Mbpsだと、1Gbpsや10Gbpsの高速回線は計算上どれもコスト1になりやすく、「速さの差」を表現出来ません。

すると、設計者は「こっちをメインにしたい」と思っていても、機械の計算では差がつかず、想定と違う流れになる事があります。

こうした問題は「高速リンクが全部コスト1になって困る」という形で解説される事もあります。

だから実務では、ネットワーク全体で参照帯域を大きくして、ちゃんと差が出るようにします。

ただし大事なのは、一部だけ変えない事。

OSPFは「みんなが同じ地図と同じルールで計算する」前提です。

地図(LSDB)が同じでも、計算の尺度(参照帯域)がバラバラだと、ルータごとに“正しいと思う道”がズレてしまい、トラブルの元になります。

OSPFがLSDBからSPF計算をして経路を作る、という基本から考えると、ここがズレる危険性は想像し易いです。

まとめると、コスト設計は「後から直せばいい」ではなく、最初に決めておくべき土台です。

初心者ほど、ここを押さえると一気に強くなります。

エリア設計:Area0・Stub・NSSA

エリアを分ける目的は“増殖防止”

Stub/NSSAでLSAを減らす考え

OSPFでエリアを分ける一番の理由は、ざっくり言うと 「情報(LSA)が増えすぎないようにするため」です。

OSPFは地図(LSDB)を持つので、情報が増えるほど、配る量も増えて、計算もしんどくなります。

だから、必要に応じてエリアで区切ります。

中心になるのが Area0(バックボーン)です。

複数のエリアをつなぐときは、基本的にArea0が背骨になります。

ここは「OSPFの道路の中心みたいなもの」と思うとOKです。

そして、情報を減らす代表が StubNSSA です。

  • Stubエリア:外部の細かい経路(Type5)を入れない。代わりに「外へ出るならこの道(デフォルトルート)」を入れて、最低限で済ませる考え方。スタブ系でデフォルトルートを入れる話はCiscoの資料でも説明があります。
  • NSSA:Stubっぽいけど、エリア内で外部経路(再配布)も少し扱いたいときの折衷案。Type5は入れず、Type7で持ち、ABRがType5に変換して外へ出す。これはCiscoのNSSA解説で明確に書かれています。

考え方は難しくなくて、「このエリアの人たちは、外の細かい道まで知らなくていいよね?」という発想です。

例えば支店ネットワークで、支店は“本社やインターネットに出られれば十分”なら、外部の経路を全部持つより、デフォルトだけの方がシンプルで安全です。

逆に、支店でも外部経路を細かく使い分けたいなら、NSSAなどを検討します。

つまりエリア設計は、地理の話というより 「どこまで情報を持たせるか」の話です。

ここが分かると、OSPFの設計が一気に現実的になります。

トラブルシュート&安全運用

失敗あるあるの原因切り分け

MTU不一致・認証・再配布事故

最後に、初心者が現場で詰まりやすいポイントを「症状→よくある原因」でまとめます。

ここを知っているだけで、OSPFはかなり扱い易くなります。

(1) Helloは見えるのにFullにならない
状態がExStartやExchangeで止まるときは、DBD(目次交換)の会話がうまくいっていない可能性が高いです。

ここで本当に多いのが MTU不一致です。

Ciscoは「Exstart/Exchangeで止まるときの調査方法」をまとめた資料を出しています。

対策の考え方は単純で、両側の設定やインターフェースの条件(MTUなど)を揃える事です。

(2) ネイバーがそもそも上がらない
Hello/Deadの値、エリア番号、認証の一致をまず疑います。

OSPFは条件が揃わないと「会話しない」ので、ここは基本チェックです。

ネイバー状態の流れ自体はCiscoの説明が分かり易いです。

(3) 経路が入らない/変な経路が優先される
原因として多いのが 再配布(外部経路の入れ方)の設計ミスです。

外部はType5、NSSA内はType7など、LSAの扱いが変わります。

NSSAでType7をType5に変換する話はCiscoの解説にあります。

フィルタやメトリック(コスト)の付け方が甘いと、想定と違う経路が選ばれたり、遠回りになったりします。

(4) 安全運用(認証)で詰む
認証を入れると安全になりますが、片側だけ設定してしまうとネイバーが出来ません。

OSPFv3(IPv6用)については、仕組みの基本は同じで、仕様書でもOSPFの基本の動きは変わらないと説明されています。

結局、OSPFのトラブルは「どの段階で止まっているか」を当てるゲームです。

  • Helloで止まる → 条件不一致
  • DBDで止まる → MTUなど同期の問題
  • LSAで混乱 → エリアや再配布の設計
  • コストが変 → 参照帯域やコスト設計
    この順番で見れば、だんだん“勘”ではなく“理由”で直せるようになります。

まとめ

OSPFは「経路を配る」より “地図をそろえて計算する”仕組みです。

まずHelloで相手を見つけ、次にDBD/LSR/LSU/LSAckで地図(LSDB)を同期してから、SPFで最短の道を計算します。

LSAは全部覚えなくてよくて、最初はType1/2/3/5/7を「届く範囲」で理解すると楽です。

NSSAのType7がABRでType5に変換されるのは超重要ポイントです。

そして実務では、コスト設計(参照帯域)と、Fullにならないときの原因(MTU不一致など)を知っているだけで、OSPFは一気に扱いやすくなります。

 

まずはこのミニ構成(3台)で進める

(外の世界はまだ無視)
R1 —— R2 —— R3
  • R1–R2:10.0.12.0/24(R1=10.0.12.1, R2=10.0.12.2)
  • R2–R3:10.0.23.0/24(R2=10.0.23.2, R3=10.0.23.3)
  • ルータID用にLoopbackも作る(任意だけど分かりやすい)
    • R1 Lo0=1.1.1.1/32, R2 Lo0=2.2.2.2/32, R3 Lo0=3.3.3.3/32

段階1:単一エリア(ぜんぶ Area 0)=いちばん基本

狙い

3台とも「同じエリア(0)」に入れて、OSPFが動くところを見る。

Ciscoのサンプルでも router ospf 1network ... area 0 で単一エリアを作っています。

R1(単一エリア)

conf t
!
interface lo0
 ip address 1.1.1.1 255.255.255.255
!
interface g0/0
 ip address 10.0.12.1 255.255.255.0
 no shut
!
router ospf 1
 network 1.1.1.1 0.0.0.0 area 0
 network 10.0.12.0 0.0.0.255 area 0
end

R2(単一エリア)

conf t
interface lo0
 ip address 2.2.2.2 255.255.255.255
!
interface g0/0
 ip address 10.0.12.2 255.255.255.0
 no shut
!
interface g0/1
 ip address 10.0.23.2 255.255.255.0
 no shut
!
router ospf 1
 network 2.2.2.2 0.0.0.0 area 0
 network 10.0.12.0 0.0.0.255 area 0
 network 10.0.23.0 0.0.0.255 area 0
end

R3(単一エリア)

conf t
interface lo0
 ip address 3.3.3.3 255.255.255.255
!
interface g0/0
 ip address 10.0.23.3 255.255.255.0
 no shut
!
router ospf 1
 network 3.3.3.3 0.0.0.0 area 0
 network 10.0.23.0 0.0.0.255 area 0
end

動いたか確認(3つだけでOK)

show ip ospf neighbor
show ip route ospf
show ip ospf interface brief

段階2:スタブ(Stub)=「外の細かい道は知らなくていい」エリア

狙い

支店(Area 1)に「外の道の細かい情報」を入れないで、とりあえず外へ出る道(デフォルト)だけ渡す感じ。

Ciscoの説明でも、スタブエリアには外部経路情報を送らず、代わりにABRがデフォルト経路を入れると書かれています。
そして「スタブにするには、そのエリア内の全ルータで area X stub を入れる」と明記されています。

変更する構成(R2–R3側をArea 1にする)

R1 —— R2 —— R3
Area0   ABR   Area1(Stub)
  • R1–R2:Area 0のまま
  • R2–R3:Area 1に変更
  • Area 1 にいるルータ(R2とR3)に stub設定 を入れる

R2(ABR)でArea 1を作って stub にする

R2は「Area0とArea1の境界」=ABRです。

conf t
router ospf 1
 !
 ! R2-R3のネットワークを Area 1 にする(ここがポイント)
 no network 10.0.23.0 0.0.0.255 area 0
 network 10.0.23.0 0.0.0.255 area 1
 !
 ! Area 1 をスタブにする
 area 1 stub
end

R3(Area 1側)にも stub を入れる(超重要)

conf t
router ospf 1
 !
 ! Area 0 → Area 1に変える
 no network 10.0.23.0 0.0.0.255 area 0
 network 10.0.23.0 0.0.0.255 area 1
 !
 ! Area 1 をスタブにする(R3にも必要)
 area 1 stub
end

確認ポイント

show ip ospf neighbor
show ip route
  • R3側で、外へ出るための“それっぽい”デフォルトルートが見えたりします(環境により表示は少し違います)。
  • もし経路が変で困ったら、まず「R2もR3も area 1 stub を入れた?」を疑うのが早いです(片方だけだと成立しません)。

「完全スタブ」にしたいなら

ABR(R2)だけ、こうできます:area 1 stub no-summary
Ciscoのガイドでも no-summary はABR側で使う説明があります。


段階3:NSSA=「スタブっぽいけど、支店から外部経路を少し入れたい」

狙い

Area 1 を「基本スタブ」にしつつ、支店(R3)から「外の道(外部経路)」をちょっとだけOSPFに持ち込みたいときに使うのがNSSA。

Ciscoの説明では、NSSAではType5(外部LSA)が許可されないので、代わりにASBRがType7を作り、ABRがType5へ変換すると書かれています。
そしてNSSA化は area 1 nssa をエリア内の全ルータへ入れる、とあります。

さらに大事:NSSAのABRはデフォルトではNSSAへデフォルトルートを入れないので、入れたいなら
area 1 nssa default-information originate が必要、とCiscoが明言しています。


NSSAに切り替える(StubをNSSAに置き換える)

R2(ABR):Area 1をNSSAにして、デフォルトルートも入れる

conf t
router ospf 1
 !
 ! まず stub を消す(入れっぱなしにしない)
 no area 1 stub
 !
 ! Area 1 を NSSA にする
 area 1 nssa default-information-originate
end

R3(Area 1側):Area 1をNSSAにする

conf t
router ospf 1
 no area 1 stub
 area 1 nssa
end

「外部経路を少し入れる」を一番簡単にやる(R3をASBRにする)

ここではR3に「架空の外部ネット(192.168.100.0/24)」があることにして、staticで作ってOSPFへ再配布します。

R3:外部ネットを作る(static)

conf t
ip route 192.168.100.0 255.255.255.0 Null0
end

R3:そのstaticをOSPFに再配布

conf t
router ospf 1
 redistribute static subnets
end

NSSAだと、この外部経路は N1/N2(Type7系) として見えるのがふつうです。show ip route のコードにも N1/N2 が出てきます。


NSSAでの確認コマンド

R3(Area1)で見る

show ip route ospf
show ip ospf database nssa-external

R2(ABR)で見る

show ip ospf database external
show ip route ospf
  • R3側:O N1 / O N2 っぽい表示で外部経路が見える
  • R1側:ABRでType7→Type5に変換されて、外部(E1/E2)として見えてくるイメージ(環境で表記は少し違う)

よくある詰まりポイント

  • NSSAにしたのにR3が外へ出られない
    → R2(ABR)に area 1 nssa default-information-originate を入れてる?(NSSAはデフォルトでデフォルトルートを入れない)
  • R2だけNSSAでR3がNSSAじゃない
    → それはダメ。同じエリア内は「NSSAだよね」を全員で一致させる必要があります。

まとめ

この記事で一番大事な結論はこれです。

OSPFは「道順(経路)を配る」より先に、みんなで同じ“地図”を持つプロトコルです。
その地図の集まりが LSDB(地図帳)で、そこから各ルータが SPF計算(最短の道を探す計算)をして、ルーティングテーブル(どこへ送るかの表)を作ります。

つまり LSDB → SPF → 経路表 の順番です。


1) 最初の入口:Helloで「隣の人」を見つける

OSPFはまず Hello(あいさつ)で、近くの相手と話せるか確認します。
ただし、Helloが届いていても、条件が合わないとネイバーになれません。

良くある原因は「タイマー(Hello/Dead)」「エリア番号」「認証」「ネットワークタイプ」などの不一致です。


2) “本番の会話”:2-Way〜Fullは「地図をそろえる途中」

ネイバーができると、いきなり完成ではなく、状態が少しずつ進みます(Down/Init/2-Way/ExStart/Exchange/Loading/Full)。

ここで覚えておきたいのは、Full=地図(LSDB)が綺麗に同期出来た状態という事。
そして同期の会話はざっくりこうです。

  • DBD:地図帳の「目次」を見せ合う
  • LSR:足りないページを「ちょうだい」と頼む
  • LSU:ページ(LSA本体)を送る
  • LSAck:「受け取ったよ」と返事する

この流れを知っていると、「Fullにならない」を原因から追いやすくなります(例:Exchangeで止まる=同期の会話が詰まってる)。


3) LSAは丸暗記より「どこまで届く情報か」で覚える

初心者はまず Type1/2/3/5/7 だけでOKです。ポイントは番号よりも「届く範囲」。

  • Type1/2:主にエリア内の情報
  • Type3:エリアをまたぐ要約(ABRが作る)
  • Type5:OSPFの外から来た外部経路
  • Type7:NSSAの中だけの外部経路(あとで変換される)

特にNSSAは、Type7がABRでType5に変換されてOSPF全体へ出ていく、という動きが核です。


4) コスト設計は「あとで何とかなる」じゃなく土台

OSPFはコスト(Cost)の合計が小さい道を選びます。

だから、コストが思った通りになっていないと、経路選択も思った通りになりません。

(特に高速回線が多い環境では、参照帯域の考え方が大事になりやすいです。)


5) エリア設計は「情報を増やしすぎないため」

OSPFは地図(LSDB)を持つ分、情報が増えるほど大変になります。

だからエリアで区切ります。

スタブや完全スタブは、ざっくり言うと 「外の細かい経路は持たずに、デフォルトルートだけで外へ出る」発想です。

Ciscoの資料でも、スタブ系エリアにデフォルトルートを入れる説明があります。

NSSAはそのスタブの考え方を残しつつ、支店側から外部経路を少し入れたいときに使う、折衷案です(Type7→Type5変換)。


6) 最後に:トラブルは「どの段階で止まってるか」を当てるゲーム

OSPFの不具合は、だいたい次のどれかです。

  • Hello段階:条件不一致でネイバーになれない
  • 同期段階:2-Way/Exchange/Loadingで止まって地図がそろわない
  • 設計段階:LSAやエリア種類、コスト設定のせいで経路が想定外

とくに「2-Way」はネットワーク種類によっては“問題ではないこともある”とCiscoが説明しています。

だから、表示だけで焦らず「今は入口なのか、同期なのか、設計なのか」を切り分けるのが一番の近道です。


 




コメント

この記事へのコメントはありません。

CAPTCHA


カレンダー
2026年3月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
カテゴリー
月別アーカイブ
PAGE TOP

You cannot copy content of this page