概述
我們在配置靜態路由時,下一跳通常有兩種選擇,一種是配置一個接口,另一種是配置一個IP地址,如下圖所示:
這兩種方式配置以後,看起來網絡都是通的,好像沒有什麼區別。但實際情況不是這樣哦,老司機都推薦下一跳使用IP地址,有沒有想過為什麼呢?我們今天就使用一個例子來闡述老司機的選擇。
舉例:下一跳配置接口
拓撲
- 按照拓撲搭建好測試環境
- 在R1上訪問25.1.1.0/32網段,然後查看ARP表項
R1的配置
1. R1的接口配置
2. R1上配置一條24網段的靜態路由,這條靜態路由的下一跳使用接口
3. 查看路由表
R2的配置
R2在兩個接口上配置IP,其它的就不需要了
R5的配置
R5的配置可以不關注,它配置接口IP + 靜態路由:
測試過程
在R1上分別ping 20.1.1.5,20.1.1.6,20.1.1.200,查看ARP表項:
結論
如果配置下一跳為接口,則路由器會認為這是一個LAN接口,訪問和這條route在同一個網段的所有主機地址,都會發送一個ARP去請求 。
例如此例子中,訪問任何在25.1.1.0/24網段中的主機,R1都會發送一個ARP Request,去請求對應的MAC地址。
不知道你有沒有關注到MAC地址,為什麼這些MAC地址是R2呢?並且所有在同一個網段的IP,對應的MAC地址都是一樣的?
這就涉及到ARP代理的功能的了,R2知道25.1.1.0/24如何轉發,所以用它自己的MAC地址回覆了。關於ARP代理的內容,如果還有疑問,參加我之前的文章:
舉例:下一跳配置IP
R1配置
組網和配置和上面的相同,只是R1上的下一跳配置為IP地址,如下圖所示:
查看路由表
測試
在R1上分別ping 20.1.1.5,20.1.1.6,20.1.1.200:
查看ARP表項:
有沒有覺得很奇怪,只有一條靜態路由對應的ARP表項,其它的都沒有,這樣是正確的嗎?
這樣是正確的,因為配置的下一跳是IP,所以R1訪問所有在這個網段的主機,都會使用下一跳(12.1.1.2)對應的MAC去封裝 。也就是說,R1只需要發送一次ARP Request就可以了,只要這個ARP表項沒有老化,後續所有訪問25.1.1.0/24網段的主機都使用這個表項。
總結
各位小夥伴看完上面的對比,應該理解老司機為啥要推薦下一跳使用IP地址了吧?
是的,就是你想的那樣,因為下一跳使用接口時,會有如下的問題:
- 路由器訪問每一個在同一個網段的主機時,都會發送ARP Request去獲取MAC,增加網絡中的無效流量。
- 如果掩碼很小,則路由器需要維護的ARP表項會非常大,耗費大量的設備的CPU和內存。
- 極端情況,如果默認路由的下一跳使用接口,則路由器訪問任何地址都需要發送ARP請求並且創建ARP表項,這耗費的資源就非常大了。
而下一跳配置IP地址就沒有問題了,對於一個網段的所有主機,路由器只需要生成一條ARP表項就可以了,這樣就節省很多的資源 。
如果各位小夥伴還對上面的內容有疑問的話,歡迎留言討論!也非常歡迎各位關注我的頭條號,一起討論網絡問題。
最後給大家推薦一下我最近開通的專欄,專門介紹如何使用思科模擬器的。我們平常學習網絡知識,除了土豪,是不可能使用真實設備的,而模擬器能夠滿足99%的場景,因此是我們必須要掌握如何使用模擬器。專欄只要9.9,買不了吃虧,買不了上當:)
閱讀更多 網絡之路 的文章