第2回でTCP/IPモデルの「インターネット層」が異なるネットワーク間の経路選択(ルーティング)を担うと説明しました。
前回はその経路選択の材料となるIPアドレス・サブネッティングを学びました。
今回はその材料をもとにルータが実際にどうやって転送先を決めているのか、その基本プロセスを学びます。
IPアドレスはサブネットマスクによって「ネットワーク部」と「ホスト部」に分かれており、2台の機器が同じネットワーク部を持っているかどうかで同一ネットワークに属しているかを判断します。
ルーティングはこの「同一ネットワークに属していない場合」に必要となる仕組みです。

第1回で触れた通り、ルータは異なるネットワーク同士を接続し、データを転送する機器です。
スイッチが「同じネットワーク内の配達員(MACアドレスをもとに判断)」だとすれば、ルータは「異なるネットワーク間の配達員(IPアドレスをもとに判断)」というイメージでした。今回はこのルータの判断プロセスを詳しく見ていきます。

ルーティング(Routing) とは、パケット(インターネット層で扱われるデータのまとまり)を宛先ネットワークまで正しく届けるために、次にどこへ転送すればよいかを判断し転送すること です。
同一ネットワーク内であれば不要ですが、宛先が異なるネットワークにある場合、途中に存在する1台以上のルータがパケットを中継しながら宛先まで運んでいく必要があります。この中継の判断こそが、ルーティングです。
ルータはパケットをどこに転送すればよいかを判断するために、ルーティングテーブル(Routing Table) と呼ばれる経路情報の対応表を保持しています。ルーティングテーブルには、主に以下のような情報が含まれます。

また、今後ハンズオンで学習しますが、Cisco IOS-XE で表示されるルーティングテーブルは以下の通りです。これは表示例なので、ここでは内容を理解する必要はありません。
RT1#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is not set
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.1.0/24 is directly connected, Ethernet0/0
L 192.168.1.1/32 is directly connected, Ethernet0/0
S 192.168.2.0/24 [1/0] via 192.168.1.2, Ethernet0/0
また、next-hop と出力インターフェースは似ているようで役割が異なります。
next-hop は「論理的に、次に誰に渡すか(IPアドレス)」
出力インターフェースは「物理的に、自分のどの出口から送り出すか」
という違いがあります。
ルータがパケットを受け取ったとき、大まかに以下のプロセスで転送先を決定します。

宛先IPアドレスに複数のエントリが部分的に一致する場合(例:192.168.0.0/16 と 192.168.1.0/24 の両方に一致する場合)、ルータはより詳細な(サブネットマスクが長い)エントリを優先します。
この考え方を Longest Matchと呼びます。
また、複数の経路情報源(直接接続、静的経路、動的ルーティングプロトコルなど)から同じ宛先への経路が複数得られた場合にどれを優先するかは、管理距離(AD)やメトリックという指標で判断されますが、これらの詳細は後の回で改めて扱います。
以下のような、PC1 と PC2 が異なるネットワークに属し、2台のルータを経由して接続されている構成を考えます。
PC1 からPC2(192.168.2.2)宛てにパケットを送信した場合、大まかに以下のような流れで転送されます。
1,
RT1 はパケットを受け取り、宛先IPアドレス(192.168.2.2)を確認する

2,
RT1 のルーティングテーブルを参照し、192.168.2.0/24 宛てのエントリを見つける。
そのエントリには
「next-hop:10.1.1.2」
「出力インターフェース:RT2側のインターフェース」
と記載されている

3,
RT1 はそのnext-hop・出力インターフェースの情報に従ってパケットを RT2 へ転送する

4,
RT2 はパケットを受け取り、宛先IPアドレス(192.168.2.2)を確認する

5,
宛先ネットワーク(192.168.2.0/24)が自身に直接接続されたネットワークであることをルーティングテーブルから確認し、PC2 へ直接届ける

このように、宛先まで複数のルータを経由する場合、各ルータがそれぞれ自分のルーティングテーブルを参照し、次のnext-hopを判断する という処理を、宛先に届くまで繰り返しています。
ルーティングテーブルのエントリは、主に以下の3種類の方法で登録されます。
直接接続ルート(Connected Route):
ルータのインターフェースに直接設定されたネットワークは、自動的にルーティングテーブルへ登録される
静的ルート(Static Route):
管理者が手動でルーティングテーブルにエントリを設定する
動的ルーティングプロトコル(Dynamic Routing Protocol):
ルータ同士が経路情報を自動的に交換し合い、ルーティングテーブルを構築する(例:OSPF)
それぞれの具体的な設定方法・動作はこの後のハンズオンで実際に手を動かしながら扱っていきます。
ここまで、ルーティングテーブルには「宛先ネットワークごとに next-hop と出力インターフェースが登録されている」と説明してきました。
しかし実際には、ルーティングテーブルにはもう1種類特別なエントリ を含めることができます。それがデフォルトルート(Default Route) です。
デフォルトルートは、「他のどのエントリにも一致しなかった宛先を、まとめて特定のnext-hopへ転送する」という、いわば受け皿・保険のようなエントリです。
ルーティングテーブルの中では、宛先ネットワークが 0.0.0.0/0 という特別な表記で登録されます。
S* 0.0.0.0/0 [1/0] via 10.1.1.2, Ethernet0/1
0.0.0.0/0 は、サブネットマスクのネットワーク部が0bit、つまり「ネットワーク部を1bitも指定しない=どんな宛先IPアドレスであっても一致してしまう」特殊な表記です。
3章で触れた Longest match により、他により詳細に一致するエントリがあればそちらが優先され、どれにも一致しなかった場合にのみこのデフォルトルートが使われます。
たとえば、社内ネットワークの出入り口にあるルータには、社内の細かいネットワーク宛ての経路情報だけを用意しておき、それ以外のすべて(=インターネット全体)については「インターネット方向のnext-hopへ転送する」という1本のデフォルトルートだけで済ませる、という使い方が一般的です。
インターネット上に存在する無数のネットワーク宛ての経路を、1つ1つルーティングテーブルに登録するのは非現実的なため、このような「それ以外は全部こちら」という仕組みが重宝されます。

PCのようなエンドポイントも、実はルータと同様に ルーティングテーブル を持っています。
ただしその中身は、ルータのように複数のネットワーク宛ての経路をたくさん持っているわけではなく、多くの場合「自分が直接接続しているネットワーク」の情報と、先ほど説明したデフォルトルート だけで構成された、非常にシンプルなものです。
このシンプルなルーティングテーブルの仕組みを、エンドポイントの世界では デフォルトゲートウェイ(Default Gateway) という名前で呼んでいます。
PCのネットワーク設定画面などで「デフォルトゲートウェイ」として入力するIPアドレスは、実際にはそのPCが持つルーティングテーブルの中に、宛先ネットワーク 0.0.0.0/0(=デフォルトルート)のnext-hopとして登録される という形で扱われています。
つまり、「自分と異なるネットワーク宛ての通信は、すべてデフォルトゲートウェイに転送する」という動作の実態は、PCが持つルーティングテーブルの中のデフォルトルートに従っているだけであり、これはルータが持つデフォルトルートと仕組みとしては同じものです。

このように、デフォルトゲートウェイとデフォルトルートはまったく別の仕組みというわけではなく、同じ「デフォルトルート」という概念を立場によって呼び分けているという関係にあります。
ここで整理しておきましょう。

つまり、「デフォルトゲートウェイ」はエンドポイント寄りの呼び方、「デフォルトルート」はルーティングテーブルのエントリそのものを指す、より一般的な呼び方 というイメージを持っておくと整理しやすいです。
PCの世界では「デフォルトゲートウェイ」という言葉がよく使われ、ルータの世界では「デフォルトルート」という言葉がよく使われますが、その中身(=宛先0.0.0.0/0のエントリで、他にどれとも一致しない通信を特定のnext-hopへ転送する)は共通しています。
具体的な設定方法は、static route の回で改めて扱います。
次回は同一ネットワーク内での転送を担うMACアドレス について学びます。
ログインすると、進捗を保存できます。
← 0.5 ルーティング に戻る