本文へ移動

インフラ転職コンパスわからないところから、ひとつずつ。

メニュー

ロンゲストマッチとは?/24と/16のどちらが選ばれるかを図解

経路表に/8、/16、/24、/32が並んでいたら、数字が一番大きい行を選べばよいのでしょうか。先に必要なのは、届けたいIPがその行の範囲に入るかという確認です。

ロンゲストマッチ(最長一致)は、宛先に一致する行の中から、最も長いプレフィックスを選ぶルールです。10.73.46.45へ送る例を使い、候補を選ぶところと、ADを比べるところを分けて読みます。

ロンゲストマッチ:一致した経路だけを比較。ここでは全経路が経路表に存在すると仮定。通常の宛先ベースのIPv4転送です。 別プレフィックスの経路をAD値だけで選び直すことはありません。
図:エンジニアクルー作成。タップすると拡大できます。図中のIPは説明用のプライベートIPv4アドレスです。

10.73.46.45に一致する行だけを選ぶ

まず10.73.46.45が各行の範囲に入るかを調べます。10.0.0.0/8、10.73.0.0/16、10.73.46.0/24には入ります。この3行が今回の候補です。

10.73.46.95/32は数字だけなら最も長いですが、.95という一つのIPだけを表します。宛先の.45とは違うので候補に入りません。一致しない行は、長さの比較へ進めないのが出発点です。

用語の補足:プレフィックスって何?

IPネットワークを表す、先頭からの共通部分です。/24はIPv4の先頭24ビットで範囲を決める意味です。/32は1つのIPv4アドレスを示します。

経路 一致する範囲 10.73.46.45に一致?
10.0.0.0/8 10.0.0.0~10.255.255.255 する
10.73.0.0/16 10.73.0.0~10.73.255.255 する
10.73.46.0/24 10.73.46.0~10.73.46.255 する:この中で最長
10.73.46.95/32 10.73.46.95だけ しない
0.0.0.0/0 すべてのIPv4宛先 するが、より具体的な一致経路を優先

候補になった/8、/16、/24の中では/24が最長です。/24は先頭24ビットで範囲を決め、/16より細かく対象を絞っています。表の範囲を並べると、同じ宛先が広い網の中のさらに狭い網にも入ることが分かります。

選ぶ順番は「宛先を決める→一致する範囲を拾う→その中で最長を選ぶ」です。/32を無条件に優先する覚え方より、この順に当てはめるほうが、別の宛先でも同じルールを使えます。

仕様の確認:RFC 1812:次ホップ選択。

ほかに一致する行がなければ、0.0.0.0/0へ

0.0.0.0/0は、先頭のビットで範囲を絞らないデフォルトルートです。今回の基本例では、どのIPv4宛先にも一致します。ただし、より具体的な経路があれば、そちらを選びます。

172.27.93.25が表の/8、/16、/24、/32に入らないなら、ほかに具体的な経路がない前提で/0を使います。これは「残った宛先の出口」として読むと理解しやすいでしょう。

デフォルトルートはインターネット専用ではありません。社内の宛先でも、経路表により具体的な行がなければ/0へ向かいます。図の先が社内か社外かで、最長一致のルールが変わるわけではありません。

逆に、一致する経路もデフォルトルートもなければ、通常の経路表による転送先を選べません。「宛先の個別経路がない」から直ちに失敗とせず、/0の有無とその先を一緒に読む必要があります。

ADが小さくても、広い範囲が優先されるわけではない

スタティックの/16がAD=1、OSPFの/24がAD=110でも、両方が経路表にあれば、今回の.45は/24へ進みます。ADの小さい/16を選ぶわけではありません。

ADは、同じ宛先範囲への経路候補を異なる方法で得たときの採用に関係します。同じ/24をスタティックとOSPFで知った場合と、採用済みの/16・/24から転送先を選ぶ場合を分けます。

用語の補足:ADとメトリックの違いは?

ADは経路を得た方法の優先度、メトリックはその経路交換の仕組みなどで使う評価値です。まず同じ宛先範囲の候補かを確認します。異なる方式のメトリックを、そのまま同じ物差しで比べることはできません。

段階 何を比較するか
経路の採用 同じプレフィックスへの候補。ADやプロトコルの選択規則
パケット転送 採用済みの経路表で宛先に一致するプレフィックスの長さ

表は、その二つの段階を並べたものです。経路を得て採用する段階には、ADや各方式のメトリック、選択規則があります。その後、パケットの転送では経路表へ宛先を当てはめて最長一致を使います。

「ADが小さいほど優先」とだけ覚えると、比べる対象を取り違えます。何の範囲への候補なのか、今は採用の話か転送の話かを先に読めば、二つのルールは矛盾しません。

仕様の確認:Cisco:Administrative Distance。

コマンドには、届けたいホストのIPを入れる

特定のサーバーへ通信できないなら、コマンドにもそのホストIPを入れます。ネットワーク全体の/16が見えていても、目的のホストだけ別の細かい経路に入る場合があるからです。

下の3宛先でshow ip routeを比べると、同じ表から違う行が選ばれることを確認できます。選んだ行の次ホップと出口も、構成図のどこへ向かうかに対応させます。

show ip route 10.73.46.45
show ip route 10.73.58.15
show ip route 172.27.93.25
show ip cef 10.73.46.45

VRFで経路表を分けている場合は、その通信のVRFを指定します。別のVRFに正しい経路があっても、今回の転送に使えるとは限りません。まず見る表を合わせてから、最長一致を読みます。

同じ宛先範囲に複数の次ホップが採用されるECMPもあります。最長一致で経路を選んだ後、その複数の転送先を装置の方式で使う話です。必ず一パケットずつ交互に送る、と決めて読むものではありません。

細かい誤経路があると、一部だけ通信できなくなる

/16の経路は正しいのに、その中の一部のサーバーだけ使えない。そのようなときは、/24や/32の細かい経路が別の出口へ向いていないかを調べます。

宛先が細かい行に一致すれば、その行を使います。そこで通信に失敗しても、失敗したから広い行へ送り直すという動作にはなりません。経路が残っている限り、同じ選択を繰り返すことがあります。

たとえば10.73.46.0/24の次ホップが誤っていれば、.45はその行へ向かいます。一方、その/24の外にある10.73.58.15は/16で使えることがあります。一部だけ失敗する症状と、範囲ごとの経路をつなげて考えられます。

調査で「目的の網がある」と確認したら、もう一歩進めて、目的のホストにもっと具体的な行がないかを見ます。ルートを直す際も、影響する宛先の範囲を読んでから変更します。

3つの宛先で、選ぶ経路を比べる

最後に3つの宛先を、同じ表へ当てはめます。.45は/8・/16・/24に一致し、/24を選びます。.58.15は/24の外なので、/8・/16の中から/16を選びます。

172.27.93.25はこの例の10から始まる各範囲の外です。ほかに具体的な経路がなければ/0へ進みます。表を先に暗記するより、一致する候補を指で追うと選択の理由を説明できます。

宛先 選ぶ経路 理由
10.73.46.45 10.73.46.0/24 一致する/8・/16・/24の中で最長
10.73.58.15 10.73.0.0/16 /24は不一致、/16が最長
10.73.46.95 10.73.46.95/32 この宛先に限って/32が一致

変わったのは宛先で、選ぶルールは同じです。最長の数字を探す前に、一致する行だけを残す。この一手間が、/32やデフォルトルートが混ざった表でも判断を安定させます。

通信障害では、この選択結果を次ホップへの到達や戻り経路の確認へつなげます。最長一致を読めたことは、通信成功そのものではなく、どちらへ転送するかを調べるための材料になります。

最近の記事
ピックアップ