最長一致検索(ロンゲストマッチ)

複数のネットワークアドレスを集約して集約ルートをルーティングテーブルに登録すると、実際のネットアークアドレス/サブネットマスクと集約ルートのネットワークアドレス/サブネットマスクが異なります。

最長一致検索(ロンゲストマッチ)によって、パケットをルーティングするためのルート情報を検索するので、実際のネットワークアドレス/サブネットマスクとルーティングテーブル上のルート情報のネットワークアドレス/サブネットマスクが異なっていても問題ありません。

図 集約ルートによるルーティング

最長一致検索によるルート情報の検索は、宛先IPアドレスとルート情報のネットワークアドレスについて、サブネットマスク分のビットが一致しているかをチェックしています。具体的には、パケットの送信先IPアドレスとルート情報のサブネットマスクの論理積を計算します。その結果がルート情報のネットワークアドレスと同じであれば、そのルート情報をパケットのルーティングに利用することができます。そして、該当するルート情報が複数ある場合、サブネットマスクのビット数が最も多いルート情報を利用して、パケットをルーティングします。

レイヤ2スイッチで宛先MACアドレスからMACアドレステーブルのエントリを検索するときには、完全一致検索です。

最長一致検索の例

具体的に次のようなルーティングテーブルで考えてみましょう。

ネットワークアドレス サブネットマスク
10.2.0.0 /24
10.2.1.0 /24
10.2.2.0 /24
10.2.3.0 /24
10.2.0.0 /22
0.0.0.0 /0
このルーティングテーブルの例は、ネクストホップなどは省略して、ネットワークアドレスとサブネットマスクのみにしています。

このようなルーティングテーブルを持つルータに、送信先IPアドレスとして10.2.2.100が指定されているパケットが届いたとします。各ルート情報のサブネットマスクと送信先IPアドレスの論理積を計算し、ネットワークアドレスと比較します。

図10.2.0.0/24のルート情報との比較
図 10.2.1.0/24のルート情報との比較
図 10.2.2.0/24のルート情報との比較
図 10.2.3.0/24のルート情報との比較
図 10.2.0.0/22のルート情報との比較
図 0.0.0.0/0のルート情報との比較

これを見ると、送信先IP10.2.2.100のパケットをルーティングするために、

  • 10.2.2.0/24
  • 10.2.0.0/22
  • 0.0.0.0/0

の3つのルート情報を利用できることがわかります。

この中で実際にパケットをルーティングするために利用するのは、サブネットマスクが最も長い10.2.2.0/24のルート情報です。

集約ルートは広い範囲のネットワークを示していますが、個別のネットワークを識別できないおおざっぱなルート情報です。最長一致検索を簡単に言えば、おおざっぱなルート情報と詳細なルート情報がある場合は、詳細なルート情報にしたがってパケットをルーティングするということです。

ルート情報を地図だとすると

ルート情報を地図にたとえると、集約ルートは縮尺が小さい地図です。縮尺が小さい地図は、広い範囲をカバーしていますが、建物や道など詳細がわかりません。縮尺が大きくなると、カバーする範囲は狭くなりますが、建物や道の詳細までわかります。
最長一致検索は、目的地に行くために縮尺が小さい地図よりも縮尺が大きいより詳細な地図を使うということです。
たとえば、新宿駅から新宿御苑に行きたいときは、以下のどちらの地図を使いますか?当然、縮尺が大きい地図1ですよね。

地図1 新宿駅から新宿御苑(Google Mapより)
地図2 新宿駅から新宿御苑(Google Mapより)

デフォルトルートは「最後の手段」

デフォルトルートは「Last Resort(最後の手段)」と呼ばれることがあります。デフォルトルートはあらゆるネットワークを集約している最も極端な集約ルートです。最長一致検索によって、デフォルトルートはどんなIPアドレスであっても一致するルート情報です。ただし、いつでもデフォルトルートを利用するわけではありません。他に利用できるルート情報がない場合だけの最後の手段としてデフォルトルートを利用することになります。

なお、デフォルトルートを地図にたとえると、世界地図のようなイメージです。

図 デフォルトルートのイメージ(Google Mapより)