ルーティングプロトコルはなぜ必要ですか?
インターネットを通るIPパケットは、高速道路を走る車のようにどのように目的地に到達するのでしょうか?誰もが車に馴染みがあるでしょう。目的地がわからなくても、電子ナビゲーターが目的地まで導いてくれます。IPパケットにも似たようなナビゲーション情報が必要でしょうか?はい、IPパケットがインターネットに入る瞬間、ナビゲーション情報はすでに途中にあり、静かにIPパケットの到着を待っています。目的地に向かう各ルーターでは、ナビゲーション情報(ルーティングテーブル)を参照して、最短ルートを調べ、ホップごとに目的地に到達します。

ルーティングテーブルとは何ですか?
ここまで読んだことで、あなたはきっと疑問に思うでしょう:各ルーターのルーティングテーブルはどのように生成されるのか?この質問にはすぐに答えませんが、電子ナビゲーターを使って分析してみましょう。目的地情報を入力すると、電子ナビゲーションシステムは自分の地図データベースを使って最短ルートを計算します。この地図データベースは、ナビゲーションシステムに事前にインストールされています。グローバルな道路が急速に発展しているため、この地図データベースは定期的に更新が必要です。更新しないと、川や海に導かれてしまうことがあります…。
もし各ルーターが地図データベースに似たリンク情報を持つことができれば、最短アルゴリズムを使ってナビゲーションを完成させることができます。各ルーター間でリンク情報を交換するプロトコルは、ルーティングプロトコルと呼ばれます。この記事では、いわゆるルーティングプロトコルを理解してもらうことが目的です。ここまでで、ルーティングが何かは理解できたはずですが、プロトコルとは何でしょうか?プロトコルとは、このリンク情報をどのように表現するか、このリンクを通るコストはいくらか、そしてこのリンクの両端にどのルーターがあるかを指定するものです。この情報をもとに、ルーターはネットワーク全体の地図(トポロジー図)を動的に描くことができます。各目的地に対して、最短経路アルゴリズムに基づいて動的にルーティングエントリを生成し、それをテーブルに入れることが、ルーティングテーブルです。
ルーティングプロトコルに詳しい人なら、私が話したルーティングプロトコルがOSPFとIS-ISだと簡単に予想できるでしょう。これらは非常に似ています。どちらもリンク状態プロトコルです。最初にルーター間のリンク情報を収集し、コスト、接続されているノード、リンクの種類などを確認し、その後、最短経路のようなアルゴリズムを実行して、ルーティングテーブル情報を生成します。
どのルーティングプロトコルを選ぶべきか?
なぜ似ているのでしょうか?これらは二つの異なる組織によって並行して開発されたプロトコルです。どちらにも絶対的な勝者はおらず、市場にお任せです!IS-ISはプロトコルの開発や拡張性の面で優れ、OSPFは脇に追いやられるかもしれません。
今日は、誰が勝つかを議論するのではなく、最初の質問に答えましょう。もし、OSPFとIS-ISが同じルーターで動作し、両方が同じ目的地(同じネットワークアドレスとネットワークマスク)に対するルーティングテーブルを生成している場合、どちらの情報が使われるのでしょうか?これは難しい優先順位の選択です。各メーカーには独自の選択肢があります。Ciscoでは「管理距離AD(Administration Distance)」という奇妙な名前を使って、優先順位を区別します。優先度0が最も高く、優先度255が最も低いです。OSPFのデフォルトは優先度ビット110、IS-ISのデフォルトは優先度115です。明らかに、OSPFのルーティング情報が優先されます。例を挙げて説明します:
OSPFルート:10.1.1.0/24 次ホップ a.a.a.a AD 110
IS-ISルート:10.1.1.0/24 次ホップ b.b.b.b AD 115
この場合、ルーティングテーブルに入るのは:
OSPFルート:10.1.1.0/24 次ホップ a.a.a.a AD 110
OSPFが高いAD優先度を持ち、IS-ISが低いAD優先度を持つという誤解はしないでください。もしOSPFとIS-ISが同時に動作している場合、IS-ISのすべてのルーティングエントリはルーティングテーブルに入らないということです。これは間違いです!重要なのは、同じルーティングエントリの場合のみ、ADの優先度を使ってルーティングエントリが保持されるかどうかを決めるということです。もし、ルーティングエントリが異なれば、ADの優先度はまったく比較されません。
もちろん、他にもルーティングテーブルにエントリを競うプロトコルがあります:RIP(120)、EIGRP(90)、BGP(20,200)、直接接続ルート(0)、静的ルート(1)などがあり、それぞれにAD優先度と外部BGPは20、内部BGPは200となっています。
現在の一般的なルーティングプロトコルのAD優先度は次のようになっています:
直接接続ルート > 静的ルート > EBGP > EIGRP > OSPF > IS-IS > RIP > IBGP
次のホップとして最適なのはどれですか?
ルーティングテーブルについて話した後、次にIPパケットがどのようにルーターに到達し、ルーティングテーブルを見つけてIPパケットのナビゲーションタスクを完了するのかについて話しましょう。最も効率的かつ正確に次のホップを見つける方法は?
ルーティングテーブルに次の5つのエントリがあり、IPパケットの宛先アドレスが10.1.1.1の場合、どのエントリが選ばれるでしょうか?最長プレフィックス一致のルールに従って、10.1.1.1/32が選ばれます。これは32ビットの正確な一致だからです。
IPパケットの宛先アドレスが10.1.1.100の場合、10.1.1.0/24が選ばれます。これが最長一致で、24ビットが一致します。
IPパケットの宛先アドレスが10.1.2.100の場合、10.1.0.0/16が選ばれます。これが最長一致で、16ビットが一致します。
IPパケットの宛先アドレスが10.2.1.100の場合、10.0.0.0/8が選ばれます。これが最長一致で、8ビットが一致します。
IPパケットの宛先アドレスが192.168.1.1の場合、0.0.0.0/0が選ばれます。これがデフォルトルートで、任意のIP宛先アドレスに一致します。
10.1.1.1/32
10.1.1.0/24
10.1.0.0/16
10.0.0.0/8
0.0.0.0/0
これで、ルーティングプロトコル、ルーティングプロトコルのAD、およびルーティング検索の最長プレフィックス一致ルールが簡単に理解できました。次回の記事では、リンク状態プロトコルであるOSPFについて紹介します。