路由的選路原則:最長、最細,與生活中的喜好不同

概述

人生總是有很多的選擇,而不同的選擇會有不同的結果,你現在的生活狀態就是你曾經選擇,因此我們最好不要抱怨現在的生活,因為一切都是你自己選擇的。

在網絡世界裡也是一樣的,當路由器收到報文以後,選擇哪條路由轉發,也會有很多的選擇。只不過它們的選擇相對我們來說非常的不自由,因為它們要遵循一個規則:最長匹配。我們今天會以一個例子來闡述這種最長匹配工作原理,不過在此之前先來了解一下具體的規則。

最長匹配原則

我們都知道路由器收到一個報文以後,會取出報文的目的IP地址,然後根據目的IP地址查找路由表。

針對這個目的IP地址,在路由表中可能有多個條目都可以轉發它,那我們該如何選擇呢?

如下圖的路由表,如果路由器收到目的IP為20.1.1.3的報文,該如何轉發呢?

路由的選路原則:最長、最細,與生活中的喜好不同

路由表舉例

初學者會感覺很迷茫,因為會每一個條目看起來都可以使用,選擇哪個條目都行。其實遇到這種情況我們不用慌張,只需要記住一句話就可以:在選路時,挑選那條最長、最細的路由轉發數據

例如上面的情況會進行如下的查找:

第一步:先在路由表中,查找最長(32網段)的路由是否匹配:路由20.1.1.2/32和目的IP 20.1.1.3的報文不匹配,所以繼續查找;

第二步:在路由表中,查找次長(24網段)的路由是否匹配:路由20.1.1.0/24包含20.1.1.3,所以匹配,終止查找,從這條路由轉發。

在工作中,情況有時還會複雜一些,我們還可能遇到子網,彙總,默認等不同的路由條目。我總結了一下,如下圖來表示:

路由的選路原則:最長、最細,與生活中的喜好不同

路由條目

每次根據目的IP查找路由表時,都會按照從上到下的原則進行查找,只有上一條不匹配,才會查找下一個條目。這也是最長匹配名稱的由來:看上面這些子網掩碼,主機路由的子網為32,最長;缺省路由的子網為0,最小;其它的幾個夾在中間,位置越上,子網掩碼越大,越優先匹配。

實驗

我們以一個例子來驗證路由的這種最長匹配原則,拓撲圖如下:

拓撲

路由的選路原則:最長、最細,與生活中的喜好不同

拓撲

  • PC1想要訪問PC2
  • 在R1上針對PC2(20.1.1.2)分別配置三條靜態路由:主機、子網、主網
  • 在R2、R3、R4和R5相連的接口抓包,看報文的轉發路徑

配置

R1的靜態路由配置和路由表:

路由的選路原則:最長、最細,與生活中的喜好不同

R1的配置

路由的選路原則:最長、最細,與生活中的喜好不同

R1的路由條目

R2-R4的配置都類似,只配置一條靜態路由,指向PC2的方向

路由的選路原則:最長、最細,與生活中的喜好不同

R2的配置

PC1 ping PC2以後,在R1和R2-R4連接的線路上抓包:

路由的選路原則:最長、最細,與生活中的喜好不同

在R1和R2相連的鏈路上抓包

發現只有在R1和R2相連的鏈路上能抓到ICMP報文,則證明報文使用32位的主機路由進行轉發了,如下圖:

路由的選路原則:最長、最細,與生活中的喜好不同

R1路由表,主機路由轉發

總結

詳細經過上面的描述,相信各位小夥伴已經知道路由表時如何選擇轉發路徑了吧?其實還是記住那句話:匹配最長、最細的那條路由。

如果各位小夥伴還是有疑問,歡迎留言討論!也非常高興小夥伴關注我的頭條號,一起討論網絡問題!

最後給小夥伴來個簡單的投票,看對路由的匹配原則是否瞭解:如下圖所示的路由表,如果收到目的IP為30.1.1.2的報文,下一跳該如何選擇呢?

收到目的IP為30.1.1.2的報文如何轉發數據? (單選)
0人
0%
下一跳為13.1.1.3
0人
0%
下一跳為14.1.1.4
0人
0%
下一跳為12.1.1.2
0人
0%
丟棄報文
<button>投票/<button>
路由的選路原則:最長、最細,與生活中的喜好不同

路由表


分享到:


相關文章: