【CCNA】ルーティングにおけるロンゲストマッチについて





## はじめに
CCNA（ネットワーク試験）問題には、
正しいルーティング先をロンゲストマッチで求めるときがある。
その時私が、どのようにして解いたか記述する。

## ロンゲストマッチとは
ルーティングテーブルに使用できる複数の宛先がある場合、
プレフィックス長（アドレスビット）が最も長く一致する宛先ルートを使用するルールのこと。

例えば、ルーティングテーブルに下記の2つの宛先(経路)が設定されているとする。

　 - 192.168.10.0/24（経路①）
　 - 192.168.10.128/25（経路②）

” **192.168.10.1** " に対してパケットを転送したい場合、ロンゲストマッチにより経路①を利用
　 <font color="Red">※ 経路②に対しては、パケットは転送されない。</font>

2進数にして考えてみてみると、経路①との方が
プレフィックス長（アドレスビット）が最も長く一致している。

　「 11000000　10101000　00001010　 0000000<font color="Red">**|**</font>0 」　<-- 192.168.10.0/24（経路①）
　「 11000000　10101000　00001010<font color="DodgerBlue">**|**</font>　0000000<font color="Red">**|**</font>1 」　<-- 192.168.10.1（宛先）
　「 11000000　10101000　00001010<font color="DodgerBlue">**|**</font>　10000000 」　<-- 192.168.10.128/25（経路②）

” **192.168.10.161** " に対してパケットを転送したい場合、ロンゲストマッチにより経路②を利用
　 <font color="Red">※ 経路①に対しては、パケットは転送されない。</font>

2進数にして考えてみてみると、経路②との方が
プレフィックス長（アドレスビット）が最も長く一致している。

　「 11000000　10101000　00001010<font color="Red">**|**</font>　00000000 」　<-- 192.168.10.0/24（経路①）
　「 11000000　10101000　00001010<font color="Red">**|**</font>　10<font color="DodgerBlue">**|**</font>100001 」　<-- 192.168.10.161（宛先）
　「 11000000　10101000　00001010 　10<font color="DodgerBlue">**|**</font>000000 」　<-- 192.168.10.128/25（経路②）


## ロンゲストマッチを利用した問題
**【問題-1】**　
PCから「220.0.19.161」宛にパケットを送信したい場合、
ルータは受信したパケットを、どこに転送（ネクストホップ）するか？

選択群：
① 192.168.10.1　② 192.168.40.1　③ 192.168.60.1

**-- ルータのルーティングテーブル --**
S 220.0.19.0/24 [1/0] via 192.168.10.1, FastEthernet0/1　・・・経路①
S 220.0.19.152/29 [1/0] via 192.168.40.1, FastEthernet0/0　・・・経路② 
S 220.0.19.128/25 [1/0] via 192.168.60.1, FastEthernet1/0 　・・・経路③

まずはすべて2進数に変換してみる。

「 11011100　00000000　00010011<font color="Red">**|**</font>　00000000 」　<-- 220.0.19.0/24　・・・経路①
「 11011100　00000000　00010011 　10011<font color="Red">**|**</font>000 」　<-- 220.0.19.152/29　・・・経路②
「 11011100　00000000　00010011 　10<font color="Red">**|**</font>000000 」　<-- 220.0.19.128/25　・・・経路③
「 11011100　00000000　00010011 　10<font color="Red">**|**</font>100001 」　<-- 220.0.19.161　・・・宛先

あれ、経路②と経路③同じプレフィックス長（アドレスビット）！？
どっちが答えなんだー！！！となってしまったら、危険です・・・。
経路②は、今回の宛先経路にはなり得ないので、ロンゲストマッチ比較対象外です。
<font color="Red">※ 経路②のアドレス範囲は、</font>
　  <font color="Red">**220.0.19.152 ～ 220.0.19.159** の為、今回の宛先 **220.0.19.161** は含まれない。
</font>

結果、一番プレフィックス長（アドレスビット）が最も長く一致するものは、経路③となり、
答えは、**③ 192.168.60.1（ネクストホップ）** となる。

**--- ここから本題 ---**
いちいち2進数に直してからロンゲストマッチ比較をすると、時間が掛かってしまう。
なので私は、対象の経路になるかもしれない全てののアドレス範囲を導き出して回答する方法を選んだ。
導き出したアドレス範囲の中に対象の宛先が入っており、なおかつ、最も範囲が狭いものが回答になります。

今回の問題で例えると、
220.0.19.0/24のアドレス範囲：220.0.19.0 ～ 220.0.19.255　<-- 宛先：220.0.19.161 入っている
220.0.19.152/29のアドレス範囲：220.0.19.152　～ 220.0.19.159　<-- 宛先：220.0.19.161 入ってない
220.0.19.128/25のアドレス範囲：220.0.19.128 ～ 220.0.19.255　<-- 宛先：220.0.19.161 入っている

220.0.19.0/24のアドレス範囲：220.0.19.0 ～ 220.0.19.255　<-- アドレス数：255個 = 範囲広い
220.0.19.128/25のアドレス範囲：220.0.19.128 ～ 220.0.19.255　<-- アドレス数：127個 = 範囲狭い

よって答えは、宛先が含まれていて範囲が一番狭い下記経路となる。
S 220.0.19.128/25 [1/0] via 192.168.60.1, FastEthernet1/0 　・・・経路③

この導き出し方だと、私は1-2分で回答できました。

# 最後に
CCNA試験は、問題数が非常に多い為、回答時間は限られてきます。
ですのでいかに効率よく回答するのかがカギとなってきます。
もちろんそのほかに重要なことはありますが・・・。

# 参考リンク
[ルーティングとは、ロンゲストマッチとは](https://www.infraexpert.com/study/routing.html)