経路表とは
経路表は、あるIPアドレスが与えられた時、 どのネットワーク(ないしはネットワークインタフェース)にデータを送れば与えられたIPアドレスに到達できるのかをまとめた表で、 ルーティングテーブルともいいます。 IPアドレスを使ったパケット通信では、データをやりとりする際必ず参照することになります。
経路表には最低限、自身が属するネットワークが明示的にリストされています。 ルータであれば、複数のネットワークにつながっているので、その分だけエントリが増えます。 いずれにしても、IPv4で43億個以上、IPv6では2の128乗個あるアドレスすべてを表に納めるのは現実的ではありませんので、 「宛先アドレスが明示的にリストされていない時の送り先」として「デフォルトルート」があるのが一般的です。
例えば、とあるホストでnetstatというコマンドを実行すると、 以下のような結果が返ってきます。
% netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 198.51.100.254 0.0.0.0 UG 0 0 0 eth0 198.51.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Destinationが送り先で、 198.51.100/24と192.0.2.0/24(Genmaskの項目からネットワークアドレス長を算出すると/24になります)というネットワークが明示的にリストされています。 Ifaceを見ると、それぞれeth0、eth1というネットワークインタフェースにつながっていることもわかります。 これらの明示的にリストされたネットワーク以外が送信先の場合、 Destinationが0.0.0.0の行を参照します。 この行ではGatewayとしてeth0を経由する198.51.100.254が指定されており、 ここがデフォルトルートということになります。(Flags、MSS、Window、irttの説明は割愛します。)
一般に、組織内であれば経路表はそれほど変化しない、 もしくは変化がすぐにわかるため、 あらかじめすべての情報を人手で列挙することも不可能ではありません。 しかし組織間を結ぶようになると、接続する組織が増えるほど手間が増え、 経路表のサイズ自体も大きくなって人手で保守するのが難しくなります。 従って、経路情報を互いに交換して動的かつ自動的に経路表を更新する、 経路交換という機能も必要になります。
2022年時点では、 インターネットにおけるISP間の経路交換にはBGP (Border Gateway Protocol)というプロトコルが使われており、 すべての経路情報を数えると100万件以上にもなります。 なお、ここで間違った経路情報が流れるとインターネット上での通信が不可能になるため、 RPKI (Resource Public Key Infrastructure)やROA (Route Origin Authorization)などで正確性を担保する仕組みが普及しつつあります。