為什么推薦下一跳使用IP地址,而不是接口,一分鐘了解一下
概述
我們在配置靜態路由時,下一跳通常有兩種選擇,一種是配置一個接口,另一種是配置一個IP地址,如下圖所示:
下一跳的兩種方式
這兩種方式配置以后,看起來網絡都是通的,好像沒有什么區別。但實際情況不是這樣哦,老司機都推薦下一跳使用IP地址,有沒有想過為什么呢?我們今天就使用一個例子來闡述老司機的選擇。
舉例:下一跳配置接口
1. 拓撲
拓撲
- 按照拓撲搭建好測試環境
- 在R1上訪問25.1.1.0/32網段,然后查看ARP表項
2. R1的配置
(1) R1的接口配置
R1的F0/0接口配置
(2) R1上配置一條24網段的靜態路由,這條靜態路由的下一跳使用接口
下一跳使用接口
(3) 查看路由表
查看路由表
3. R2的配置
R2在兩個接口上配置IP,其它的就不需要了
R2配置
4. R5的配置
R5的配置可以不關注,它配置接口IP + 靜態路由:
R5的接口配置
靜態路由
5. 測試過程
在R1上分別ping 20.1.1.5,20.1.1.6,20.1.1.200,查看ARP表項:
查看ARP表項
6. 結論
如果配置下一跳為接口,則路由器會認為這是一個LAN接口,訪問和這條route在同一個網段的所有主機地址,都會發送一個ARP去請求。
例如此例子中,訪問任何在25.1.1.0/24網段中的主機,R1都會發送一個ARP Request,去請求對應的MAC地址。
不知道你有沒有關注到MAC地址,為什么這些MAC地址是R2呢?并且所有在同一個網段的IP,對應的MAC地址都是一樣的?
MAC地址
這就涉及到ARP代理的功能的了,R2知道25.1.1.0/24如何轉發,所以用它自己的MAC地址回復了。關于ARP代理的內容,如果還有疑問,參加我之前的文章:ARP代理
舉例:下一跳配置IP
1. R1配置
組網和配置和上面的相同,只是R1上的下一跳配置為IP地址,如下圖所示:

查看路由表:
路由表
2. 測試
在R1上分別ping 20.1.1.5,20.1.1.6,20.1.1.200:
ping三個地址
查看ARP表項:
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表項就可以了,這樣就節省很多的資源。