はじめに
ネットワーク屋さんが1年目に必ず勉強することになる、ルーティングについて書きます。本稿はIP/Ethernet環境のみを想定しているため、IPアドレスやMACアドレスが通信に必須のものとして書いています。
ルーティングの目的
イーサネット環境においてルーティングの目的は、適切な宛先にフレームを届けることです。処理の順をおおまかに書くと、次のような流れになります。
①入力インターフェースでフレームを受信する。
②フレームの宛先MACアドレスを確認し、自分宛であればフレームを分解してパケットを取り出す。
③宛先IPアドレスに基づいてルーティングを行い、出力インターフェースと宛先MACアドレスを決定する。
④新しいフレームを生成し、出力インターフェースから送信する
この流れから分かるように、「出力インターフェース」「宛先MACアドレス」の2つを決めることがルーティングの仕事です。
出力インターフェースが決まるまで
パケットには宛先IPアドレスが書かれています。この宛先IPアドレスをルーティングテーブル上で確認します。ここでダイレクトコネクトの場合とそれ以外とで処理が分かれます。
①ダイレクトコネクトの場合
ルーティングテーブルには出力インターフェースが書かれています。出力インターフェースからARP要求を投げることで宛先MACアドレスを得ることができます。
②ダイレクトコネクト以外の場合
ルーティングテーブルにはNexthopが書かれています。出力インターフェースを得るために、Nexthopをルーティングテーブル上で再度確認します。Nexthopは(ほとんどの場合)ダイレクトコネクトになっているはずなので、2度目の処理で出力インターフェースを得ることができます。出力インターフェースからNexthopに対してARP要求を投げることで、宛先MACアドレスを得ることができます。