基本情報のルーティングテーブルの読み方と最長一致の例題

基本情報のルーティングテーブルは、ルータが宛先IPアドレスを見て、次にどこへパケットを送るか決めるための経路表です。問題では、宛先に一致する経路を探し、複数ある場合は最も長いプレフィックスの経路を選びます。

「一番長い」とは、経由するルータの数や距離ではありません。IPアドレスの先頭から照合するビット数が最も長いという意味です。この記事では、経路表の項目、宛先の一致判定、デフォルト経路までを具体例で順に確認します。

この記事のポイント
  • 宛先ネットワークと転送先の役割
  • プレフィックス長を使う一致判定
  • 重なる複数の経路から最長一致を選ぶ方法
  • デフォルト経路が使われる条件
無料

基本情報技術者試験 過去問アプリ

本番形式で繰り返し解ける。スキマ時間に1問から

2,000問以上収録
無料で過去問を解く
目次

基本情報のルーティングテーブルの仕組み

三つのルータを経由してパケットが転送される図

経路表を参照する理由

複数のネットワークを越えて通信するとき、パケットは中継するルータを通って目的地に近づきます。ルータは受け取ったパケットの宛先IPアドレスと、自分が持つ経路表を照合し、適切な出口や次の転送先を判断します。ルータが常に出発点から最終目的地までの全経路を、パケットごとに一度で決めると考える必要はありません。

例えば、端末から離れたネットワークへ送信するとき、端末は設定されたデフォルトゲートウェイにパケットを渡せます。そこで受け取ったルータは自身の経路表を見て次の宛先へ転送し、次のルータも同様に判断します。どのネットワークに対してどのインタフェースを選ぶかを整理したものが、ルーティングテーブルです。

ルータが通常のIP転送で参照する中心は宛先IPアドレスです。L2スイッチがフレームを扱う際に利用するMACアドレスとは役割が異なります。ただし、実際の転送では次の機器へフレームを送るためにMACアドレスも必要です。「ルータではMACアドレスを一切使わない」と考えるのではなく、経路を選ぶ情報と、同じリンク上で届けるための情報を区別します。

経路表の主な項目

表を参照して複数のネットワークを調べるイメージ

経路表の基本的な項目は、宛先ネットワーク、プレフィックス長、ネクストホップ、出力インタフェースです。宛先ネットワークとプレフィックス長は、どの宛先の範囲にその経路が適用されるかを表します。ネクストホップは、該当する経路で次にパケットを渡す中継先です。出力インタフェースは、そのルータからパケットを送り出す接続口です。

例えば「192.0.2.0/24はネクストホップ198.51.100.1へ」と書かれていれば、前者は届けたい宛先の範囲、後者はその経路で次に渡す相手を示します。IPアドレスが二つ出てくるため、どちらも最終目的地だと読み違えないでください。ネクストホップは通常、選んだ出力インタフェースから到達できる隣接先として扱います。これは説明用の例で、実際の構成では機器ごとの設定を確認します。

宛先がルータの直接接続ネットワークにある場合、別の中継ルータをネクストホップとして指定しない表現もあります。その場合は出力インタフェースから直接届けます。経路表に「直接接続」と書かれているのか、次のルータが指定されているのかを見比べましょう。JPNICのルーティングの説明でも、宛先に応じた出力先を経路表で判断する仕組みを確認できます。

プレフィックス長とは

色分けされた並びを虫眼鏡で比較するイメージ

IPv4アドレスは32ビットで表されます。例えば192.0.2.0/24の「/24」は、先頭24ビットをネットワークの範囲を表す部分として比較するという意味です。残り8ビットは、その範囲に含まれるアドレスを区別する側になります。192.0.2.0/24には192.0.2.0から192.0.2.255までが含まれます。この範囲の説明は、各アドレスを端末へ割り当てられるという意味ではありません。

同じく192.0.2.0/25では、先頭25ビットを比較します。第4オクテットの先頭1ビットも対象になるため、範囲は192.0.2.0から192.0.2.127です。192.0.2.128/25は後半の128から255までを表します。/24より/25のほうが条件が細かく、一致するアドレスの範囲が狭くなります。

比較するときは、表示された数字の文字列が長いかどうかではなく、スラッシュの後にあるビット数を確認します。マスクやネットワークアドレスを求める手順に不安がある場合は、基本情報のIPアドレスとサブネットマスクの計算で先に復習できます。本記事は、その範囲を経路表と照合する手順に焦点を当てます。

ネクストホップは最終目的地か

分岐点のルータから次のルータへ送るイメージ

ネクストホップは、パケットを最終目的地まで届けるための「次の一手」です。宛先が遠くにあっても、最初のルータが指定するのは通常、隣接するルータや出力インタフェースです。次のルータは自分の経路表を参照して、その先へ転送します。宛先IPアドレスの値とネクストホップの値が異なることは、経路表として不自然ではありません。

一方、ネクストホップの値をそのままパケットの最終宛先IPアドレスへ書き換えると考えるのは誤りです。通常の転送では宛先IPアドレスを基に次の転送先が選ばれます。NATのようにアドレス変換を行う機能が別途介在する場合は別の条件が加わりますが、変換が問題文にないときは、勝手に変換を想定しません。

基本情報のルーティングテーブルの例題

二つのネットワーク間をルータでつなぐ図

一致する候補を並べる

次の4行がすでに経路表に登録されているとします。重複するプレフィックスが複数一致する場合は、最長一致を適用します。A・B・C・Dは各行の転送先を区別する記号で、実際のIPアドレスではありません。

  • 192.0.0.0/16:転送先A
  • 192.0.2.0/24:転送先B
  • 192.0.2.128/25:転送先C
  • 0.0.0.0/0:転送先D

宛先が192.0.2.150の場合、/16は先頭2オクテットが192.0なので一致します。/24も先頭3オクテットが192.0.2なので一致します。/25は第4オクテットが128から255までの範囲であり、150はその中に入ります。/0はIPv4の全宛先に一致するので、これも候補です。したがって四つの行が一致します。

候補のプレフィックス長を比較すると、16、24、25、0の中で25が最も長いので、選ぶのはCです。「/16が上に書かれているからA」「最後に見つけたからD」といった表の並び順では選びません。宛先に一致する行だけを残したうえで、最も具体的な経路を選ぶという二段階で考えます。

範囲外の経路を除く

同じ表で宛先が192.0.2.50なら、/16と/24は一致します。しかし192.0.2.128/25の範囲は第4オクテットが128から255なので、50は一致しません。/0も一致しますが、残った候補のうち最も長いのは/24です。したがってBを選びます。/25のほうが/24より長いという事実だけで、範囲外のCを選ぶことはできません。

宛先が192.0.3.10なら、192.0.0.0/16と/0は一致しますが、192.0.2.0/24には一致しません。第3オクテットが3であり、表の/24の第3オクテット2と異なるためです。/25も同様に範囲外です。この場合は/16のAを選びます。「最も長い行を先に探す」よりも「一致するか確かめた後に長さを比較する」ほうが誤答を防げます。

デフォルト経路を使う条件

複数の道と案内板で経路を選ぶイメージ

0.0.0.0/0は、IPv4の宛先に対するデフォルト経路として使われます。/0は比較する先頭ビットが0個なので、ほかにより具体的な一致がない宛先にも適用できます。例の表で宛先が203.0.113.9なら、192.0.0.0/16にも192.0.2.0/24にも一致しないため、/0のDを選びます。

デフォルト経路は、ほかの一致する経路より優先される特別な近道ではありません。/24や/16が一致すれば、その経路のほうが/0より長いため優先されます。また、デフォルト経路が登録されていない表でどの行にも一致しなければ、この表だけでは転送先を決められません。「必ずインターネットへ届く」といった動作を、/0の存在だけから断定しないでください。

デフォルトゲートウェイは、端末が自分のネットワーク外へ送る際に渡す相手として設定されることが多い値です。デフォルト経路は、経路表に登録される幅広い宛先向けの経路です。両者は関係しますが、問題に示された装置が端末なのかルータなのか、問われているのが設定先なのか経路表の一行なのかを区別しましょう。

ビット単位で確かめる

オクテットの境目にないプレフィックスでは、該当部分を2進数で比較します。例として192.0.2.128/25の第4オクテットは10000000です。宛先192.0.2.150の第4オクテットは10010110です。/25は最初の24ビットに続く第4オクテットの先頭1ビットまで比べるため、どちらも先頭が1で一致します。

一方、192.0.2.50の第4オクテットは00110010です。先頭1ビットが0なので、128/25の先頭ビット1と一致しません。第4オクテットをすべて比較する必要はなく、プレフィックス長で指定された範囲だけを比較します。/25の場合に最後の8ビットすべてを照合してしまうと、同じネットワークに含まれる別のアドレスまで不一致にしてしまいます。

別の練習として192.0.2.64/26を考えます。/26では第4オクテットの先頭2ビットが対象です。64の2進表現は01000000、宛先70は01000110なので、先頭2ビットが01で一致します。宛先130は10000010なので一致しません。/26の範囲を10進数で求めるなら、64から127です。ビット比較と範囲比較のどちらでも同じ判定になるか確かめると、計算ミスを発見できます。

同じ長さの経路に注意

最長一致は、登録済みの複数の一致経路から、プレフィックス長の違いで優先する経路を決める考え方です。もし同じプレフィックスと長さに対する複数の候補が示される場合は、経路情報の採用や同等経路の扱いを定める別のルールが必要です。メトリック、経路の学習元、装置の設定などは問題文によって異なるため、最長一致だけで必ず一つに決まるとは言えません。

「メトリックの数字が小さい経路を、長さに関係なく常に選ぶ」という読み方にも注意が必要です。問題の経路表に登録済みの/24と/16がどちらも宛先に一致しているなら、まず/24のほうが具体的です。同じ宛先範囲への経路候補をどれだけ表に載せるかという段階と、表に載った経路から転送先を探す段階を混同しないでください。ルータの実装ごとの扱いはCiscoの経路選択の説明で確認できます。

ダイクストラ法は、重み付きグラフで最短距離を計算する方法です。ルーティングプロトコルの内部で経路を計算する話と、既に用意された表を宛先IPで照合する話は、関係があっても同じ手順ではありません。最短距離の更新表を復習したい場合は、基本情報のダイクストラ法を参照してください。

単一アドレス向け経路の演習

複数の端末から一つの端末に注目するイメージ

前の経路表に192.0.2.150/32という行を加え、その転送先をEとします。/32はIPv4アドレスの32ビットすべてを照合するため、この行は192.0.2.150だけに一致するホスト経路です。宛先が192.0.2.150なら、/16、/24、/25、/0に加えて/32も一致します。その中で最も長いのは/32ですから、Eを選びます。

同じ表で宛先を192.0.2.151に変えると、/32の行は一致しません。150と151は第4オクテットが異なるためです。一方、どちらも192.0.2.128/25の範囲内なので、/32以外の条件が変わらなければ151にはCが選ばれます。一文字違いの宛先でも結果が変わるため、表の最も長い行を機械的に丸で囲む前に、対象アドレスが範囲に入るかを確認します。

別の例として192.0.2.64/26と192.0.2.0/24の両方が登録されていれば、宛先192.0.2.100には両方が一致します。/26の範囲は64から127で、100はこの中です。登録済みの両経路が利用可能という例題の前提なら、最長一致により/26を選びます。数値が大きいネットワークアドレスを選んでいるのではなく、先頭26ビットまで条件が一致していることが理由です。

経路の選択と到達を分ける

表から一致する行を選べても、その先の通信が必ず成功するとは限りません。出力先のリンクが停止していたり、次のルータにその先への適切な経路がなかったりすれば、最終宛先に届かない場合があります。経路表の選択問題では、まず提示された表から次の転送先を答え、通信全体の成否が問われるときには、後続のルータやリンク状態も確認します。

例えばルータAが特定の宛先をBへ送り、Bの経路表が同じ宛先をAへ戻すようになっていると、パケットが行き来するルーティングループを生じ得ます。IPv4ではパケットのTTLがルータを経由するたびに減り、使い切ると通常は破棄されます。TTLはループの影響を無制限に続けない仕組みであり、誤った経路設定自体を直して目的地まで届ける機能ではありません。

複数のルータの表が並ぶ問題では、最初に選んだネクストホップを最終解答にせず、設問が求める範囲まで順に追います。AからBへ進むときはBの表へ移り、同じ最終宛先に対して改めて一致判定します。それぞれの装置の表は異なるため、Aで選んだプレフィックスをBでもそのまま選ぶとは限りません。途中で一致がなくなれば、その先の経路は表から判断できないと整理します。

最後に、ルータの経路表を使う問題では、経路表に書かれたネットワークと設問で指定された宛先が同じアドレス形式かも確認します。この記事の例はすべてIPv4です。IPv6ではアドレスの長さと表記が異なるため、IPv4の32ビットや/32をそのまま当てはめません。最長一致という考え方自体はありますが、ビット列の長さと表の条件をその問題に合わせて読みます。

ネットワーク範囲の計算で迷った場合は、宛先アドレスと表のプレフィックスを、それぞれ指定された長さまで比較します。例えば/24なら先頭3オクテット、/25ならさらに第4オクテットの先頭1ビットです。表の値がネットワークアドレスとして示されていることを確認し、経路の一致判定とホストに割り当て可能なアドレスの判定を混ぜずに解きましょう。

基本情報のルーティングテーブルまとめ

ルーティングテーブルの問題は、宛先IPアドレスを確認し、各行のネットワーク範囲と照合し、一致した行の中で最も長いプレフィックスを選ぶ順に解きます。選んだ行のネクストホップや出力インタフェースが、そのルータの次の転送先です。

迷ったときは、/24なら先頭24ビット、/25なら先頭25ビットを比べるという原則へ戻りましょう。範囲外の経路は、プレフィックスが長くても候補にはなりません。ほかに一致がなく、デフォルト経路が登録されている場合は/0を使います。経路表にない接続や、問題文にないアドレス変換を仮定しないことも大切です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次