2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

超簡単なOSPF+LSAの説明

Last updated at Posted at 2025-02-19

はじめに

ネットワークスペシャリスト試験の勉強の中でOSPF、LSAについて調べたので備忘録。

OSPFとは

OSPF(Open Shortest Path First)は、ルーティングプロトコルの一種です。
※ルーティングプロトコルとは、ネットワーク内で「どの経路を通れば目的地に最適にたどり着けるか」を決めるルールのこと。

OSPFは、企業ネットワークやデータセンターなどの一つの組織内のネットワークで使用されることが多いです。
IGP(Interior Gateway Protocol) と呼ばれるカテゴリに属します。

OSPFの特徴は以下の通りです。

  • リンクステート型のルーティングプロトコル
    ネットワーク全体の地図を作り、最適な経路を計算する。
  • 最短経路を計算する
    「一番早く届くルート」を自動で選んでくれる。
  • ネットワークの変化に素早く対応
    どこかのルートが故障した場合、自動的に別のルートを探す。
  • エリア分割による負荷分散が可能
    大規模ネットワークでも効率的に動作する。

OSPFの動作イメージ

なかなかイメージが難しいかもしれないので、以下のシナリオで説明してみたいと思います。

あなたの会社には、3つの拠点(A支社・B支社・本社)があります。
各拠点にはルータがあり、最適なルートを見つけるためにOSPFを使っています。
ネットワーク構成は以下の通りです。

  • 本社ルータ(ルータH)
    A支社とB支社の両方とつながっている
  • A支社ルータ(ルータA)
    本社ルータHとつながっている
  • B支社ルータ(ルータB)
    本社ルータHとつながっている

ospf.drawio.png

この構成で、A支社のPCからB支社のPCへ通信する最適なルートをOSPFで決めることを目標とします。

①OSPFネットワークへの参加(Helloパケット)

まず、ルータ同士が隣接関係を確立するためにHelloパケットを送ります。

ルータA「やぁ、ここはOSPFネットワークかい?誰かいる?」(Helloパケット送信)
ルータH「おっ、新しいルータ発見!俺はルータH、本社を担当している。君は?」(Helloパケット送信)
ルータA「俺はA支社のルータA、よろしく!」

ルータB「俺はB支社のルータB!誰かいる?」(Helloパケット送信)
ルータH「よおB!俺はルータHだ、A支社のルータAもいるぞ!」(Helloパケット送信)

Helloパケットのやり取りにより、ルータAルータBルータHお互いの存在を認識しました。

Helloパケットとは?
ルータがOSPFネットワークに参加する際に送信するパケット。
これにより、お互いの存在を確認し、隣接関係を確立する。

Helloパケットを受け取ったことを示す応答はありません。
お互いにHelloパケットを送信することで隣接関係が確立されます。

②ルータ間のネットワーク情報の交換(LSA Type 1)

ルータは自分が知っているネットワーク情報を広報します。(LSA Type 1送信)

ルータA「俺はA支社のネットワーク、192.168.1.0/24に接続してるぜ!」(LSA Type 1送信)
ルータB「俺はB支社のネットワーク、192.168.2.0/24に接続してるぞ!」(LSA Type 1送信)
ルータH「了解!A支社は192.168.1.0/24、B支社は192.168.2.0/24だな!」(LSDBを更新)

ルータHルータA、B支社の192.168.2.0/24はルータBが担当しているぞ!」(LSAのフラッディング)
ルータHルータB、A支社の192.168.1.0/24はルータAが担当だ!」(LSAのフラッディング)

LSA Type 1の共有により、A支社・B支社がそれぞれ相手のネットワーク範囲がどこにあるかを理解しました。

LSA Type 1(ルータLSA)とは?
ルータが「自分がどのネットワークに接続しているか」を広報するもの。
他のルータは、その情報を元にルーティングを構築する。

LSDB(Link-State Database)とは?
OSPFルータが持つ「ネットワーク全体の地図」のようなもの。

LSAのフラッディング(拡散)とは?
OSPFでは、すべてのルータが同じネットワークの地図(LSDB) を持つ。
各ルータに対してLSDBを拡散することで、すべてのルータで同じLSDBを保持できるようになる。
(イメージ的には同期が近い)

③ルータAとルータBが最適なルートを計算(SPFアルゴリズム)

ルータは認識したネットワーク情報を元に、最適なルートを計算します。

ルータA「ふむ...192.168.2.0/24に行くにはルータH経由が一番いいな!」
ルータB「192.168.1.0/24へはルータH経由が最適だな!」

ルータA「OK、B支社の192.168.2.0/24はルータH経由で行くように設定完了!」(ルーティングテーブルの更新)
ルータB「A支社の192.168.1.0/24へルータH経由で行くように設定した!」(ルーティングテーブルの更新)

これで、A支社とB支社間のルートが確立しました。
PC同士の通信が可能になったのです。

SPF(Shortest Path First)アルゴリズムとは?
OSPFではDijkstra(ダイクストラ)のアルゴリズムを使って、最短経路を計算する。
このアルゴリズムで、どの経路が一番短いか(コストが低いか) を導き、最適なルートを選択する。

ルートの再計算方法について

ルータHルータBのリンクがダウンした場合を考えてみましょう。

OSPFではHelloパケットを一定間隔で送ることで、隣接ルータの生存確認をしています。

ルータHルータBからHelloパケットが来なくなった...ダウンしたか!?」
ルータH「とりあえず、ルータBの情報を削除したLSAを送るぞ!」(LSAのフラッディング)
ルータA「えっB支社のルートが削除されてる!」(LSDBの更新)

ルータA「別のルートでB支社に行けないかSPFを再計算しよう!」

ここで、ルータAと接続されている機器、ルータC(別拠点)ルータBが接続されているものとします。

ルータC「俺はルータBに接続してるぞ!」(LSA Type 1送信)
ルータA「なるほど!ルータC経由ならルータBに行けるのか!」(LSDBの更新)

このように、OSPFの強みは、ネットワークの変化にすぐ対応できることです。
どこかのリンクがダウンしても、新しいルートを自動計算します。

隣接ルータの生存確認
OSPFでは、一定間隔(デフォルト:10秒)でHelloパケットを送信する。
デッドタイマー(デフォルト:40秒)経っても応答がなければ、そのルータはダウンとみなされる。
ルータがダウンしたことを検知した場合、新しいLSAを送信する。

LSAのTypeについて

上の例を見てもらえばわかるように、OSPFではLSA(リンクステートアドバタイズメント) を用いてネットワークの情報を交換し、すべてのルータが同じLSDB(リンクステートデータベース) を持つように同期します。

LSAには複数の種類があり、それぞれが異なる役割を持っています。
ここでは基本的な、Type1~5までを紹介します。

LSA Type 1(ルータLSA)

自分がどのネットワークに接続しているルータかを通知します。

  • 送信者:すべてのOSPFルータ
  • 範囲:OSPFの同じエリア内(エリアを越えない)
  • 役割:
    • ルータが自分の接続しているネットワークを広告
    • 隣接ルータとの接続情報を共有
    • OSPFの最も基本的なLSA

ルータA:「俺は192.168.1.0/24につながってる!」

LSA Type 2(ネットワークLSA)

LAN上にどのルータが存在しているかを通知します。

  • 送信者:DR(デザインルータ)のみ
  • 範囲:OSPFの同じエリア内(エリアを越えない)
  • 役割:
    • ブロードキャストネットワーク(LAN)上に接続されているすべてのルータ情報を共有
    • すべてのルータが全員とHelloパケットを交換しないように、DR(デザインルータ) が代表して情報を送る

ルータH(DR):「このLANにはルータAとルータBがいるぞ!」

DR(デザインルータ)とは?
LANなどでOSPFの情報を効率的に管理する代表ルータ
OSPFでは、LANなどのブロードキャスト可能なネットワークにおいて、ルータ同士が全員とHelloパケットをやり取りすることでパケットの逼迫につながる。
その解決策として、1台のルータを代表にしてネットワーク全体の情報をまとめる。

ちなみに、DRはネットワーク内のルータで最もプライオリティ値(OSPF Priority)が高いものが選出される。

LSA Type 3(サマリLSA)

他のエリアのネットワーク情報を通知します。

  • 送信者:ABR(エリアボーダールータ)
  • 範囲:OSPFの異なるエリア間
  • 役割:
    • OSPFのエリアをまたぐネットワーク情報を広報する
    • 例えば、エリア0(バックボーン)にあるネットワークをエリア1に伝える

ルータH(ABR):「エリア0には192.168.1.0/24もあるぞ!」

ABRとは?
OSPFの異なるエリアを接続するルータ
OSPFではネットワークを複数のエリアに分割することで、ルータが処理するルート情報を減らしてネットワークのスケーラビリティを向上させる仕組みがある。
その異なるエリアを接続するルータがABRとなる。

LSA Type 4(ASBRサマリLSA)

ASBRの情報を通知します。

  • 送信者:ABR
  • 範囲:OSPFの異なるエリア間
  • 役割:
    • ASBRの情報を広報
    • LSA Type 5(外部LSA)を送るASBRをネットワーク全体に通知する

ルータH(ABR):「外部ネットワークに接続するときはASBRルータXに聞け!」

ASBR(Autonomous System Boundary Router)とは?
OSPFと外部ネットワーク(BGPやスタティックルートなど)をつなぐルータ
OSPFは基本的にOSPF内部のルータ同士でネットワーク情報をやり取りするプロトコルだが、
現実のネットワークではOSPFの外(別のASやBGP、スタティックルート)と通信する必要がある。
そのとき、外部ネットワークの情報をOSPF内に広報する役割を持つルータがASBR。
簡単に言うと、OSPFと外部ネットワークの窓口

LSA Type 5(外部LSA)

BGPなどの外部ルート情報をOSPFに広報します。

  • 送信者:ASBR
  • 範囲:OSPFの全エリア(スタブエリアを除く)
  • 役割:
    • OSPFの外(例えばBGP経由のインターネット等)のルートをOSPFネットワークに広報する

ASBR:「インターネットの8.8.8.8/32は俺のところ経由だ!」

スタブエリアとは?
OSPFのトラフィックを減らして、ルーティングをシンプルにするためのエリア
OSPFは大規模なネットワークでも使えるように設計されているため、エリアを分割して管理する仕組みがある。
しかしエリアが増えると、それぞれのルータが管理する経路情報(LSA)が増えてしまい、処理負荷が高くなる。
解決策として、OSPFのルート情報を制限し、不要なLSAを抑えて処理負荷を減らすのがスタブエリア。
簡単に言うと、スタブエリアのルータは外部ネットワークの情報は受け取らず、とりあえずデフォルトゲートウェイに通信を送る、みたいなイメージ。

BGPとOSPFについて

OSPFとBGPは担う役割が異なるルーティングプロトコルです。
OSPFは内部のルート情報を管理するプロトコルであるのに対し、
BGPはインターネット状の異なるAS(Autonomous System)をつなぐルーティングプロトコルです。

簡単に言うと、BGPは異なるISP同士のルーティング情報をやり取りするプロトコルです。

また、属するカテゴリも
OSPFがIGP(Interior Gateway Protocol) であるのに対し、
BGPはEGP(Exterior Gateway Protocol) です。

BGPについては別記事で詳しく解説したいと思います。

まとめ

普段の業務で意識するのはLAN内のネットワークが主だったので、デフォルトゲートウェイを抜けた後の通信について知る良い機会でした。
インターネットって複雑な仕組みで出来てるんですね...

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?