OSPFとは、Open Shortest Path First の略でAS内部で利用されるリンクステート型のルーティングプロトコルです。
このページでは、ネットワーク初心者向けにOSPFの仕組みをわかりやすく3分で解説します。
CCNAやネットワークスペシャリスト試験などでも頻繁に出題される基本知識の1つ。ネットワークエンジニアを目指す方であれば知らないと恥ずかしい超・重要知識です。是非最後までご覧ください。
前提:ルーティングプロトコルとは?
OSPFはルーティングプロトコルの1つです。

まず初めに「ルーティングプロトコルとは何か?」を簡単におさらいしておきます。
ルーティングプロトコルとは、ルーティングを行う上で必要となるルーティングテーブル(=経路制御表)をルーター同士が交換するために用いられるプロトコルです。
ルーティングとはコンピュータが送信したデータ(パケット)を宛先のコンピュータまで適切に転送する処理のこと。

インターネットは複雑に絡み合ったネットワーク網で構成されているため、「送るデータの道案内」を適切に行う必要があります。この処理がルーティング(経路制御)です。

データの宛先を見て「〇〇に行けば良いよ!」と道案内をしてくれるようなイメージです。
道案内をするために参照する情報をルーティングテーブル(経路制御表)と呼びます。ルーティングテーブルには「最終目的地」と「進むべき道」が記されています。

ルーティングテーブルの内容は手動で設定することも可能ですが、全てのルーターに対して1から経路情報を登録するのは現実的ではありません。したがってある程度の大きさ以上のネットワークの場合は経路情報を自動的に交換する仕組み(=ルーティングプロトコル)が必要になります。
このルーティングプロトコルの1つがOSPF (Open Shortest Path First) です。
IGP vs EGP
ルーティングプロトコルは大きく以下の2つに分類することができます。OSPFはIGPに分類されます。
AS (Autonomous System) とは、インターネットを構成する1つのネットワークの単位です。独立した1つのネットワークを指す用語で、単に「自律システム」とも呼ばれます。
ASは、統一された1つのルーティングポリシーによって運営されるネットワークの単位で構成されます。


ASは現実世界における「国」のような存在とも言えます。日本には日本の法律が通用しますが、アメリカはアメリカの法律で運営されています。
これと同じように決まったルーティングポリシーで統一・管理されている1つのネットワークがASであると理解できればOKです。
OSPFとは:わかりやすく

ここからは本題のOSPFとは何か?をわかりやすく解説します。
OSPFとは、Open Shortest Path First の略でAS内部で利用されるリンクステート型のルーティングプロトコルです。
リンクステート型のルーティングプロトコルとは一体どういうことか?が分かればOSPFの概要把握は大体OKになるので、この「リンクステート型」という単語の意味について最初に解説します。
OSPF:リンクステート型のルーティングプロトコル
経路制御を行う方法は大きく分けて2つ存在します。
1つが、目的地の方向と距離を基準に経路を決定する距離ベクトル型(ディスタンスベクタ型)。もう1つが、ネットワーク全体の地図をもとに経路を決定するリンクステート型です。
距離ベクトル型(ディスタンスベクタ型)のルーティングプロトコルでは、各ルーターがそれぞれ異なる経路情報を保持します。

対して、リンクステート型はネットワーク全体の地図を作り、全てのルーターでその地図を共有するイメージ。


各ルーターは全体の中で今どこに自分がいるのか?を理解しているのがリンクステート型の特徴です。
OSPFはリンクステート型のルーティングプロトコルなので、ルーター同士が交換する経路情報をもとにネットワーク全体の地図を作成。その地図をもとにルーティングを行うというのが大きなポイントです。

以上の点を押さえておけばOSPFに関する基本的な内容はOK。ここからは、OSPFがどのように経路情報を交換し、どのような方法で地図を作るのか?を詳しく解説していきます。
OSPFの仕組み:交換するパケット
OSPFは以下の3ステップを経てルーティングテーブルを作成していきます。この章ではOSPFがどのような手順でルーティングテーブルを作成するのか?をちょっとだけ深く解説します。

1ステップずつ詳しく見ていきましょう!
OSPFステップ①:接続確認(Helloパケット)
OSPFではまずは自分の存在を知らせるために、隣接するルーターにHelloパケットと呼ばれるパケットを送付するところから始まります。


自分の存在を他のルーターに知らせなければ正しくネットワークの地図を作成することはできませんよね。
Helloパケットは10秒間隔でブロードキャストされ続けます。もしHelloパケットが届かなくなったら(=40秒間Helloパケットが届けられなかったら)隣接するルーターがネットワークから外れたと判断します。
上記のようにネットワークの構成が変わったことを検知した場合、次にリンク状態更新パケットを送付し隣接するルーターに対して経路情報を送付します。
ステップ2:経路情報の交換(リンク状態更新パケット)
他のルーターとの接続確認をした後に送るのがリンク状態更新パケット。リンク状態更新パケットでは以下の2つのデータ・情報を送付します。

この2つのLSA (Link State Advertisement) をもとにルーティングテーブルを作成するという流れです。
ステップ3:ルーティングテーブルの作成
ネットワークLSAとルータLSAをもとに、ルーティングテーブルを作成します。ルーティングテーブルを作成する際にはSPFアルゴリズム(ダイクストラ法)と呼ばれるアルゴリズムが用いられます。
SPFとは、Shortest Path First の略で始点(スタートノード)から終点(ゴールノード)を結ぶ経路のうち、最もコストが低い経路を最短経路として決定するアルゴリズムです。

距離ベクトル型のルーティングプロトコルの代表であるRIP (Routing Information Protocol) では経由するルーターの数が少ないルートでパケットを届けようとしますが、OSPFは最小コストの経路でパケットを送るようにするというのが大きな相違点です。

コストは帯域幅をもとに決定されます。
したがって単純なルーター数で決定するRIPよりも、OSPFの方がより実際の通信速度が速い経路を選択できるという点で優れています。
ですが、OSPFの大きな欠点はルーターの数が大きくなればなるほど最短経路を求めるための計算処理が膨大となりルーターのCPUやメモリが枯渇してしまうようになるということ。
最後にこのOSPFの欠点を補うために考え出されたエリアの概念について説明します。
OSPF:エリア
OSPFではルーターの数が増えすぎるとネットワーク全体の地図を作成する処理が重くなり、ネットワーク全体の通信速度を低下させてしまうという弱点があります。
この弱点を補うために、ネットワークをさらに細かく区切ったエリアに分割し、エリアごとに管理する情報を分けるという概念が導入されています。


大きなチームを、いくつかのチームに分けて、各チームごとに細かい管理をしてもらうようねイメージです。
各エリア内のルーターは自分のエリア内に関する地図を把握していますが、エリア外に関しては把握していません。
エリアとエリアの通信は、その境界にあるルーターをABR (Area Border Router) を介して行われるという仕組みです。このようにすることでネットワーク全体の地図の作成に関する計算処理をできるだけ最小化し、ネットワーク全体の通信効率化を図るのがOSPFのエリアという概念です。
ネットワークの仕組みを1から学習したい方は
コンピュータとコンピュータはどのように通信をしているのか?インターネットはどのような仕組みで構成されているのか?

ネットワークの基礎を1から学習したい方(=ネットワークエンジニアを目指す方)は、以下の書籍が非常におすすめ。
日常生活で例えた説明や豊富な図解付きでIT初心者でも分かりやすく理解することができます。
ただし、ページ数も多くさくっと手軽に読める内容ではありません。しかしながら、ネットワークエンジニアを目指す場合、ほぼ全員が一度は読んだことがある書籍なので是非一度読破しておきたい1冊

ネットワークエンジニアを目指す方ではなくても、ネットワークの知識がある/なしで今後のキャリアプランに大きく影響します。1度手に取ってみてはいかがでしょうか?