第3章 データが届くしくみ|3-3|コース全体 19本中11本目
ルーティングとは ― ルータの道の選び方
ルーティングとは、
前の記事 ・3-2 ARPとは ― IPアドレスからMACアドレスを知る仕組み
ルータは、ルーティングテーブルを見て「宛先を最も具体的に言い当てている行」へ転送する
ルータは、宛先までの経路をすべて知っているわけではありません。手元にある経路の一覧表を見て、次にパケットを渡す先を決めます。この一覧表をルーティングテーブルと呼びます。
ルータは表の中から、宛先IPアドレスを最も具体的に言い当てている行を1つ選びます。この選び方を最長一致と呼びます。そして、その行が示す先へパケットを渡します。これをルータごとに繰り返して、パケットは目的地に届きます。
ルーティングテーブルの読み方
ルーティングテーブルは、次の4つの項目でできた表です。あるルータのテーブルを例に、項目ごとに説明します。
宛先ネットワークの後ろには、/24のような数字が付いています。この数字をプレフィックス長と呼びます。サブネットマスクの長さと同じものです。
| 宛先ネットワーク | ネクストホップ | 出力インタフェース | メトリック |
|---|---|---|---|
| 0.0.0.0/0 | 198.51.100.1 | Gi0/0 | 1 |
| 10.0.0.0/8 | 192.168.1.2 | Gi0/1 | 2 |
| 10.1.0.0/16 | 192.168.2.6 | Gi0/2 | 1 |
| 10.1.2.0/24 | (直接接続) | Gi0/3 | 0 |
| 192.168.1.0/24 | (直接接続) | Gi0/1 | 0 |
| 192.168.2.0/24 | (直接接続) | Gi0/2 | 0 |
| 198.51.100.0/24 | (直接接続) | Gi0/0 | 0 |
- 1
宛先ネットワーク
この行が対象とする宛先の範囲を示します。10.1.2.0/24 なら、10.1.2.0〜10.1.2.255 が対象です。
- 2
ネクストホップ
次に渡す隣のルータのIPアドレスです。自分に直接つながっているネットワークには次のルータが不要なので、「直接接続」となります。
- 3
出力インタフェース
パケットをどのポートから送り出すかです。ネクストホップと対になっています。
- 4
メトリック
その経路のコストを表す値です。同じ宛先に複数の経路がある場合は、値が小さい方が優先されます。
たとえば、宛先が 203.0.113.50 だとします。この宛先は、0.0.0.0/0 以外のどの行にも当てはまらないので、最後の受け皿である 0.0.0.0/0 の行が使われます。パケットは Gi0/0 から、ネクストホップの 198.51.100.1 へ送り出されます。
VLANで分けたネットワークの間をこの表で中継する例は、VLAN間ルーティングの記事で説明しています。
複数の行が当てはまるときは「最長一致」
先ほどのテーブルで、宛先が 10.1.2.55 の場合を考えます。この宛先は、次の4つの行すべてに当てはまります。
| 宛先ネットワーク | 10.1.2.55に |
|---|---|
| 0.0.0.0/0 | 一致する(プレフィックス長 0) |
| 10.0.0.0/8 | 一致する(プレフィックス長 8) |
| 10.1.0.0/16 | 一致する(プレフィックス長 16) |
| 10.1.2.0/24 | 一致する(プレフィックス長 24)← 最長なのでこれが選ばれる |
このように複数の行が同時に当てはまるとき、ルータはプレフィックス長が最も長い行を選びます。プレフィックス長が最も長い行は、範囲が最も狭く、宛先を最も絞り込めている行です。この選び方が最長一致で、ロンゲストマッチとも呼びます。
この例では、10.1.2.0/24 の行が選ばれます。この行は直接接続なので、パケットは Gi0/3 からそのまま届けられます。
宛先が 10.5.9.20 の場合も考えます。当てはまるのは、プレフィックス長が8の10.0.0.0/8 と、0の0.0.0.0/0 の2行だけです。
10.1.0.0/16 と 10.1.2.0/24 は、宛先の先頭2オクテットが 10.5 で、10.1 と一致しないので対象外です。
ここでも最長一致により、プレフィックス長が長い 10.0.0.0/8 の行が選ばれます。パケットは、ネクストホップの 192.168.1.2 へ渡されます。
デフォルトルート(0.0.0.0/0)
0.0.0.0/0 は、プレフィックス長が0の特別な行で、すべてのIPアドレスに一致します。この行は、ほかのどの行にも当てはまらなかったときの、最後の受け皿として使われます。
最長一致の決まりにより、プレフィックス長が0の行は常に優先度が最も低くなります。/8 や /24 などの具体的な経路が1つでも一致すれば、そちらが必ず優先されます。家庭用ルータでは、インターネットへの出口がこのデフォルトルートに設定されています。
PCから見ると、このデフォルトルートの行き先がデフォルトゲートウェイです。PC自身のルーティングテーブルにも同じ 0.0.0.0/0 の行があり、そこにデフォルトゲートウェイのIPアドレスが入っています。
ルーティングテーブルは誰が作るのか:スタティックとダイナミック
ルーティングテーブルの作り方は、大きく2つあります。
スタティックルーティング(静的経路)
管理者が手作業で1行ずつ設定する方式です。経路が変わらない小規模なネットワークや、デフォルトルートの指定によく使われます。
設定は単純ですが、回線障害などで経路が使えなくなっても、自動では切り替わりません。AWSでVPCピアリングやTransit Gatewayを使ってVPCどうしをつなぐときも、相手のVPCへの経路はルートテーブルに書き足します。
ダイナミックルーティング(動的経路)
ルータどうしが経路情報を交換し、テーブルを自動的に作る方式です。交換するときの共通の手順をルーティングプロトコルと呼びます。回線が切れると、ルータは別のルータから受け取った情報をもとに、自動で経路を組み替えます。この方式ではルータが1台ずつ経路を決めます。一方、1か所のソフトウェアがまとめて経路を決める方式もあり、SDNと呼びます。
大規模なネットワークでは手作業では対応しきれないので、こちらを使います。代表的なプロトコルは次の3つです。
| 名前 | 方式 | 主な |
|---|---|---|
| RIP | 距離ベクトル型 | ホップ数だけで経路を判断する。小規模網向けの古いプロトコル |
| OSPF | リンクステート型 | ネットワーク全体の地図を共有し、最短経路を計算する。組織内(AS内)で使う |
| BGP | パスベクトル型 | 組織と組織の間(AS間)で経路情報を交換する。インターネットの経路制御に使う |
使う場所にも違いがあります。RIPとOSPFは、同じ組織のネットワークの中で使うIGPです。BGPは、組織と組織の間で使うEGPです。表のASは、1つの組織が管理するネットワークのまとまりを指します。
表の3つのプロトコルの仕組みは、それぞれRIP・OSPF・BGPの記事で詳しく説明しています。
同じ宛先に、スタティックルートとダイナミックルーティングの両方の経路があることもあります。どちらを使うかを決める信頼度の指標は、アドミニストレーティブディスタンスの記事で説明しています。
TTLとループ防止
ルーティングテーブルの設定を誤ると、パケットがルータ間をぐるぐる回り続けることがあります。これをルーティングループと呼びます。パケットが回り続けることを防ぐ仕組みが、TTL(Time To Live)です。
- 1
送信元が
TTLに 初期値を 入れる 初期値はOSによって異なります。たとえば、Linuxは64、Windowsは128です。
- 2
ルータを
1台通過する たびに 1減る 減るのは、ルータを通るときだけです。ここでのルータは、第3層で転送する機器を指します。
- 3
0に
なったら 破棄 TTLが0になったルータは、パケットを破棄し、ICMPの「Time Exceeded」を送信元へ返します。ICMPは、到達確認やエラー通知を運ぶプロトコルです。Time Exceeded以外のメッセージはICMPの記事にまとめています。
この仕組みがあるので、経路の設定ミスでループが起きても、パケットは有限回のホップで必ず消滅します。TTLが1ずつ減っていくことで、ネットワーク全体が同じパケットで埋め尽くされる事態を防いでいます。
TTLと宛先IPアドレスは、同じIPヘッダの中にある別々の欄です。ルータを1台通過するたびに変わるのは、TTLの欄と、計算し直されるヘッダチェックサムだけで、宛先IPアドレスの欄は変わりません。TTLがホップごとに減ることと宛先IPが変わらないことは、別の欄の話なので矛盾しません。
一方、区間ごとに書き換わるのは、Ethernetヘッダの宛先・送信元MACアドレスです。Ethernetヘッダは、IPヘッダの外側にあります。この違いは、MACアドレスとIPアドレスの記事でも説明しています。図にすると、次のようになります。
経路を自分の目で見る
自分のPCのルーティングテーブルと実際に通る経路は、コマンドで確認できます。
$ ip route default via 192.168.10.1 dev eth0 192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.25 # PCのルーティングテーブルは、2行だけのことが多いです。 # 1行は、直接つながっている自分のネットワークの行です。 # もう1行は、それ以外すべてを受け持つ default の行です。 # default の行が、デフォルトゲートウェイを表します。 # 上の表のように多くの行を持つのは、 # 複数のネットワークにつながっているルータの場合です。 # 先頭の default が 0.0.0.0/0(デフォルトルート)に対応します。 # Windowsは route print、macOSは netstat -rn で同じ内容が見られます。
$ traceroute 8.8.8.8 1 192.168.10.1 0.412 ms ← 自宅ルータ(LAN側) 2 198.51.100.1 1.203 ms ← プロバイダとの接続点 3 192.0.2.9 5.446 ms ← プロバイダ 4 192.0.2.14 12.882 ms ← プロバイダの先 5 8.8.8.8 14.001 ms ← 目的地 # 表示は簡略化しています。実際の出力にはホスト名や、 # 1ホップにつき3回分の応答時間が並びます。 # traceroute は、TTLを1, 2, 3…と1ずつ増やしながら送ります。 # 途中の各ルータは、TTL超過を知らせる ICMP Time Exceeded で応答します。 # 最後の宛先は、TTL超過ではなく別の応答を返します。 # traceroute ではICMPポート到達不能、tracert ではICMP Echo Replyです。 # この応答で、到達が確定します。 # 1ホップ目が自宅ルータのLAN側アドレス(プライベートIP)なのは、 # 自宅ルータのLAN側インタフェースが最初に応答するためです。
ping・tracerouteのオプションの使い方は、ping・tracerouteの使い方と見方にまとめています。「* * *」の表示や、応答なしと到達不能の見分け方も説明しています。
練習問題(全5問)
正解:パケットを
ネクストホップは、
正解:③ 10.1.2.0/24
3行とも
正解:10.0.0.0/8
デフォルトルートは
正解:
TTLが
正解:各ルータが
OSPFは
選んでから「採点する」を押すと、解説つきで答え合わせができます。
関連記事
1台のスイッチを論理的に分けて、別々のネットワークにする方法もあります。分けたネットワークの間の通信には、ルーティングと同じ仕組みが使われます。
おすすめの本 PR
この記事の内容を扱っている本です。

CCNA 200-301 Official Cert Guide Library, 2nd EditionWendell Odom・David Hucaby・Jason Gooley 著/Cisco PressAmazonで見るこの本の紹介