ITの教科書検索
入門・発展ページ読了 約12分

OSPFとは ― エリア・コストの仕組み

OSPFは、各ルータが地図(LSDB)を共有し、帯域で決まるコストの合計が最小の経路をSPFで計算するリンクステート型プロトコルです。エリア分割の理由も解説します。

目次
  1. OSPFはネットワーク全体の地図を共有するプロトコル
  2. リンクステート型の考え方 ― LSAとLSDB
  3. コストの計算 ― 帯域幅との関係
  4. SPFで最短経路を選ぶ
  5. ネイバーと隣接 ― 状態遷移
  6. DR・BDRの役割
  7. エリアとバックボーン(エリア0)
  8. 距離ベクトル型(RIP)との違い
  9. 練習問題

OSPFは、ルータどうしがネットワーク全体の地図を共有するプロトコル

OSPF(Open Shortest Path First)は、組織内のネットワークで使うリンクステート型のルーティングプロトコルです。同じエリア(ルータのまとまり)のルータは、ネットワークのつながり方をまとめた同じ地図を持ち、各ルータがその地図から自分を起点にした最短経路を計算します。

この地図をリンクステートデータベースと呼びます。経路を選ぶ基準は、帯域幅などから決まるコストの合計です。経路が切れると、ルータは地図を更新して別の経路を計算し直します。コストの決まり方、隣接関係と代表ルータ(DR・BDR)、エリアを分ける理由を順に説明します。

コストの計算:帯域幅との関係

OSPFは、経路を選ぶときに区間ごとのコストを使います。コストは、ルータのインタフェース(回線をつなぐ口)の出力側に設定する値です。RFC 2328の2.1.2節は、このコストを「管理者が設定できる値で、値が小さいほどそのインタフェースが使われやすくなる」と説明しています。帯域幅からコストを求める式はRFCにはありません。

コストの決め方は製品ごとの実装に任されています。Ciscoのルータは、管理者がコストを設定しなければ、次の式で自動的に決めます。

コストの式
コスト = 基準帯域(kbps) ÷ インタフェースの帯域(kbps)

# Ciscoのルータの基準帯域は、既定で100,000kbps(100Mbps)。
# 割り算の結果が小数になる場合は、小数点以下を切り捨てる。
# 帯域が太いインタフェースほど、コストは小さくなる。

この式で代表的な帯域のコストを計算すると、次のようになります。

区間の帯域基準帯域(kbps)区間の帯域(kbps)コスト(小数点以下切り捨て)
FastEthernet(100Mbps)100,000100,000100,000 ÷ 100,000 = 1
イーサネット(10Mbps)100,00010,000100,000 ÷ 10,000 = 10
T1回線(1.544Mbps)100,0001,544100,000 ÷ 1,544 ≈ 64.77 → 64

100,000 ÷ 1,544 は 64.766…なので、小数点以下を切り捨てて64です。FastEthernetの帯域はイーサネットの10倍で、コストは10分の1(10から1)になっています。このように、コストは帯域幅の逆数に比例します。

既定の基準帯域のままだと、1Gbpsや10Gbpsの区間は計算結果が1未満になり、すべてコスト1として扱われます。100Mbpsより速い回線どうしを区別したいときは、Ciscoのルータでは基準帯域の値を大きく設定し直します。

SPFで最短経路を選ぶ

リンクステートデータベースがそろうと、各ルータは自分を起点にしてSPF(Shortest Path First)というアルゴリズムを実行します。SPFはグラフ理論のダイクストラ法を使って、自分からエリア内の全ルータまでの最短経路を木の形に求めます。この「最短」は、区間ごとのコストの合計が最小という意味です。

次の例で、R1からR4までの経路を比べます。1つ目は、R1-R2-R3-R4の順にFastEthernet(100Mbps)を3区間通る経路です。2つ目は、R1とR4をT1回線(1.544Mbps)で直結する経路です。

T1回線 1.544Mbps・コスト64合計コスト 64(選ばれない)コスト1コスト1コスト1FastEthernet 100Mbps×3区間合計コスト 3(SPFが選ぶ経路)R1R2R3R4
R1からR4まで、FastEthernet(100Mbps)を3区間通る経路と、T1回線(1.544Mbps)で直結する経路があります。コストは帯域が太いほど小さくなるため、3区間でも合計コストは3です。T1回線の1区間のコストは64で、こちらの方が大きくなります。SPFはコストの合計が小さいR1-R2-R3-R4を選びます。

1つ目の経路はコスト1の区間を3つ通るので、合計は1+1+1=3です。2つ目の経路はコスト64の区間を1つ通るだけなので、合計は64です。区間の数は1つ目の方が多いのに、合計コストは小さくなります。SPFは合計コストが小さい経路を選ぶので、区間数の多いR1-R2-R3-R4が選ばれます。

ホップ数(区間の数)だけで経路を選ぶ方式だと、1区間で直結する2つ目の経路が選ばれますが、そちらは帯域が細いT1回線です。コストで選べば、帯域の太い経路を選べます。ホップ数との違いは、後のRIPとの比較でもう一度取り上げます。

ネイバーと隣接の状態遷移

OSPFルータは、まずHelloパケットを定期的に送り合い、近くのルータを見つけます。Helloを送り合う相手をネイバーと呼びます。ネイバーどうしの関係は、次の表の状態を順に進みます。この状態はRFC 2328の10.1節で定義されています。NBMA網(ブロードキャストができない網)だけで使うAttemptという状態もありますが、表では省きます。

状態何が起きているか
Down相手からHelloパケットをまだ受け取っていない状態。相手が停止している場合と、起動直後の場合がある
Init相手からHelloパケットを受け取った。ただし、そのHelloの中に自分のルータIDがまだ載っていない
2-Way相手のHelloの中に自分のルータIDが載っており、双方向の通信を確認できた。ブロードキャスト網のDR・BDRは、2-Way以上の相手の中から選ぶ
ExStartデータベース記述パケットを交換する準備として、どちらが主導するか(マスタ・スレーブ)を決める
Exchangeデータベース記述パケットで、お互いが持つLSAの一覧(要約)を送り合う
Loading一覧を比べて足りないとわかったLSAを、LSR(Link State Request)で相手に要求する
Full足りないLSAがすべて届き、リンクステートデータベースが一致した。この状態で初めて「隣接(アジェイセンシー)」が完成する

LSAを交換し合い、リンクステートデータベースが完全に一致した状態がFullです。Fullになって初めて、2台のルータの「隣接(アジェイセンシー)が完成した」と言います。2-WayやInitの段階は、まだネイバーとして認識しただけで、隣接は完成していません。次の節で説明するDR・BDRを置くLANでは、DRでもBDRでもないルータどうしは2-Wayのまま止まります。これは正常な状態です。

DR・BDRの役割

同じLAN(ブロードキャスト網)にOSPFルータが何台もある場合、全台が総当たりで隣接を作ると、隣接の数が急に増えます。5台なら10本、10台なら45本です。隣接が1本増えるたびに、LSAをやり取りする手間も増えます。

この手間を減らすため、OSPFは同じLANの中からDR(Designated Router、代表ルータ)を1台選びます。RFC 2328は、DRについて「2台以上のルータが接続するブロードキャスト網・NBMA網には、DRが置かれる」「DRの仕組みによって、ブロードキャスト網・NBMA網で必要な隣接の数を減らせる」と説明しています(1.2節)。

あわせてBDR(Backup Designated Router、予備の代表ルータ)も1台選ばれます。DRでもBDRでもないルータは、総当たりではなく、DRとBDRの2台とだけ隣接を作ります。BDRは、DRが故障したときにDRへ昇格します。BDRはすでに全台と隣接しているので、切り替えは短時間で済みます。

DR・BDRは、Helloパケットに含まれる優先度の値などをもとに選びます。1つのLANは1つのサブネットに対応するので、選出もサブネットの単位で行われます。

エリアとバックボーン(エリア0)

OSPFは、ネットワークをエリアという単位に分割できます。RFC 2328の第3章は、エリアを「連続したネットワークとホストの集まりをグループ化したもの」と定義しています。ルータやネットワークのつながりを表すLSAは、同じエリアの中だけにフラッディングされます。

ルータの台数が増えるほど、LSDBは大きくなり、SPF計算の負荷も増えます。エリアを分けると、1つのエリアに含まれるルータの台数を抑えられます。各ルータが持つLSDBは自分のエリアの分だけになるので、SPF計算の負荷も小さくなります。

エリア分割なし(単一エリア)R1R2R3R4LSAが4台全部に届く台数が増えるほど負荷が増えるエリア0とエリア1に分割エリア0(バックボーン)エリア1R1R2R3R4ABRLSAはエリアの中だけに届くABRが外へ経路を要約して伝える
単一エリアでは、1台のLSAが同じエリアの全ルータに届きます。ルータの台数が増えるほど、各ルータのリンクステートデータベースとSPF計算の負荷が増えます。エリア0とエリア1に分けると、LSAはそれぞれのエリアの中だけに届きます。2つのエリアにまたがるABR(エリア境界ルータ)が、エリアの外へは要約した経路情報だけを伝えます。

エリアを2つ以上に分ける場合、エリア0(バックボーンエリア)が必ず必要です。RFC 2328は「OSPFのバックボーンは、特別なOSPFエリア0である」「バックボーンは、バックボーン以外のエリアどうしの間で経路情報を分配する役目を持つ」としています(3.1節)。エリア0以外のエリアどうしは直接つながらず、エリア0を経由してやり取りします。

2つのエリアにまたがるルータをABR(Area Border Router、エリア境界ルータ)と呼びます。ABRは、エリアの中のつながり方の詳細をエリアの外へは伝えず、宛先のネットワークとそこまでのコストだけを伝えます。これにより、エリアの外のルータは、エリアの中の細かい構成を知らなくても経路を選べます。

ネットワーク全体を1つのエリアだけで構成することもできます。この形をシングルエリアOSPFと呼びます。

距離ベクトル型(RIP)との違い

OSPFのようなリンクステート型と対になる方式が、距離ベクトル型です。ディスタンスベクタ型とも呼びます。代表例のRIPは、ホップ数だけで経路を選ぶ、小規模なネットワーク向けの古いプロトコルです。隣から聞いた距離に1を足して経路を決める流れは、RIPの記事に図で示しています。

観点RIP(距離ベクトル型)OSPF(リンクステート型)
隣接ルータに渡す情報自分のルーティングテーブルそのものリンクの状態を表す小さな単位(LSA)
送る相手直接つながっている隣のルータだけ同じエリア内のルータ全体(フラッディング)
経路選びの基準ホップ数(経由するルータの台数)コストの合計(Ciscoの既定では帯域幅から決まる)
各ルータが持つ情報隣から聞いた「経路と距離」の一覧だけエリア内のつながり方全体(リンクステートデータベース)

RIPは、自分のルーティングテーブルの中身をそのまま、直接つながっている隣のルータへ定期的に送ります。隣のルータは、それを自分のテーブルに取り込んで、さらに隣へ送ります。このため、遠くのルータの情報ほど、伝わるまでに時間がかかります。

OSPFは、LSAをエリア内の全ルータへフラッディングします。変化があった区間のLSAだけを送り直せばよいので、その情報が全ルータへ伝わるまでの時間は短くなります。さらに、SPFの節で説明したとおり、ホップ数ではなく、帯域幅から決まるコストの合計で経路を選びます。

OSPFとスタティックルート、OSPFとBGPのように、違う情報源から同じ宛先への経路を同時に受け取ることもあります。その場合にどちらを信頼するかは、アドミニストレーティブディスタンスの記事で説明しています。

練習問題(全5問)

Q1OSPFで、各ルータが交換する「リンクの状態を表す小さな単位のデータ」を何と呼ぶ?
Q2基準帯域を100,000kbpsとしたとき、帯域幅10Mbps(10,000kbps)の区間のコストはいくつになる?
Q3R1からR4まで、経路①(コスト2の区間を2つ、合計4)と経路②(コスト1の区間を4つ、合計4)がある。SPFはどちらを選ぶ?
Q4イーサネットのLANのようなブロードキャスト網で、DR(Designated Router)を選ぶ目的は?
Q5OSPFのエリア0(バックボーンエリア)の役割として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

OSPFは、同じ組織の中(AS内)で使うルーティングプロトコル(IGP)の1つです。他のIGPや、組織と組織の間で使うBGPとの関係は、ルーティングの記事にまとめています。BGPの仕組みは、BGPの記事で説明しています。エリアを分ける例でサブネットを区切る考え方は、サブネットマスクの記事で説明しています。コストが等しい経路を複数使う例は、スパインリーフ型の記事にあります。

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す