
はじめてのOSPF|ルーターが「地図を共有する」仕組みとは
私のロードマップを使って勉強している方から、
「OSPFって結局何が違うんですか?RIPじゃダメなんですか?」という質問をもらいました。
良い問いです。違いを理解せずに設定コマンドを覚えても、試験では応用問題に太刀打ちできません。
今回はOSPFが「なぜそういう仕組みになっているのか」という理由から話を始めます。
ディスタンスベクタとリンクステート——2つの流派
ルーティングプロトコルには大きく2つの考え方があります。
ディスタンスベクタは「隣のルーターの経路表をそのまま受け取って、自分の経路表を作る」方式です。
RIPがその代表です。
情報の伝わり方は口コミに似ています。
隣から聞いた話をそのまま次の人に伝えるので、ネットワークの全体像を誰も把握していません。
シンプルですが、規模が大きくなると収束が遅く、ループが起きるリスクもあります。
リンクステートは「全員がネットワーク全体の地図を持ち、その地図から最短経路を自分で計算する」方式です。
OSPFがこちらです。
全員が同じ地図を見ているので情報の食い違いが起きにくく、収束も速い。
大規模ネットワークに向いているのはこのためです。
LSAとリンクステートデータベース
OSPFでは各ルーターがLSA(Link State Advertisement)を生成します。
LSAは「自分のルーターIDは何か、どのインターフェースでどのネットワークに接続しているか、隣のルーターは誰か」といった情報をまとめた通知書です。
このLSAをエリア内の全ルーターに配り合い、受け取ったLSAをLSDB(Link State Database)に蓄積していきます。
最終的にエリア内の全ルーターがまったく同じLSDBを持った状態になります。
これを「LSDBの同期が取れた」と言います。
LSDBが揃ったら、各ルーターはSPFアルゴリズム(ダイクストラ法)を使って自分を起点とした最短経路ツリーを計算し、その結果を経路表に反映します。
設定コマンドを打つ人間は地図に書き込みません。
ルーターたちが自分で地図を完成させるのです。
OSPFのエリアとAD値
OSPFにはエリアという区画の概念があります。
ルーターの台数が増えるとLSAの量も増え、SPF計算の負荷が上がります。
エリアで区切ることでLSAの流通範囲を絞り、規模の増大に対応します。
すべてのエリアは必ずエリア0(バックボーンエリア)に接続しなければなりません。
エリア0が背骨の役割を果たし、エリア間の通信はすべてエリア0を経由します。
複数エリアにまたがって接続するルーターをABR(Area Border Router)と呼びます。
OSPFのAD値(アドミニストレーティブディスタンス)は110です。
RIPの120より小さい、つまり信頼度が高いと判断されるため、同じ宛先にOSPFとRIPの両方から経路が学習された場合はOSPFの経路が経路表に採用されます。
ネイバー関係——地図を作る前の「仲間確認」
ルーターはいきなりLSAを配り始めるわけではありません。
まず隣接ルーターとネイバー関係を確立します。
ネイバー関係はHelloパケットのやり取りで築かれます。
ネイバーになるためには以下の条件が双方で一致している必要があります。
・ エリアID
・ サブネットマスク(同一サブネット上に接続していること)
・ Hello interval と Dead interval
・ 認証情報(設定している場合)
・ スタブエリアフラグ
一つでもずれているとネイバーになれず、LSAの交換も始まりません。
トラブルシューティングでまず確認すべき箇所でもあります。
DR/BDR——通信量を抑える代表者の仕組み
イーサネットのようなマルチアクセスネットワーク(複数ルーターが同じセグメントに接続している環境)では、全ルーターがお互いにLSAを交換しようとすると通信量が爆発します。ルーターが5台いれば、組み合わせは10通りにもなります。
これを防ぐためにDR(Designated Router)とBDR(Backup Designated Router)を選出します。
LSAはすべてDRに集約し、DRが代表してエリア全体に配布する仕組みです。BDRはDRが落ちたときの予備です。
DRとBDRの選出はプライオリティ(0〜255、デフォルト1)で決まります。
プライオリティが最も高いルーターがDR、次点がBDRです。
プライオリティが同じ場合はルーターIDが大きい方が勝ちます。
プライオリティを0にすると、そのルーターはDR/BDR選出に参加しません。
意図的に特定ルーターをDRにしたくない場合に使います。
ルーターIDの決定ルール
ルーターIDはOSPFにおけるルーターの識別子で、IPアドレス形式(例:1.1.1.1)を取ります。決定の優先順位は次の通りです。
1. router-idコマンドで手動設定した値
2. ループバックインターフェースに設定されたIPアドレスのうち最大のもの
3. 物理インターフェースに設定されたIPアドレスのうち最大のもの
試験では「どのルーターIDになるか」を問う問題が頻出です。ループバックが設定されていればそちらが優先される点を押さえておいてください。
まとめ
OSPFの根っこにある考え方は「全員が同じ地図(LSDB)を持ち、自分で最短経路を計算する」です。
LSAで地図の材料を配り、SPFアルゴリズムで経路を導き出す。
ネイバー関係はその前提となる仲間確認で、DR/BDRは通信効率を守るための代表者選出です。
この流れが頭に入っていれば、次の設定コマンドも「何のために打つのか」が見えてきます。
次回は実際の設定手順と確認コマンドに入ります。
ぜひフォローして明日もお会いしましょう。