IPV4 路由快取已從 >= 3.6 Linux 核心中刪除

IPV4 路由快取已從 >= 3.6 Linux 核心中刪除

在查看 3.6 Linux 核心變更日誌時,我收到一封郵件(http://article.gmane.org/gmane.linux.network/238256)來自 David S Miller 關於在核心中刪除 IPV4 路由快取的內容。我想知道 ICMP 重定向、PMTU 功能現在如何運作? Mail 還提到,路由將預先緩存,但根據子網路遮罩的多個路由可以有多個可能的條目,這將如何運作?有人對此有任何想法嗎?

謝謝。

答案1

只需閱讀實際的補丁即可。

PMTU 和 ICMP 重定向不是儲存在路由快取中,而是儲存在「路由異常」結構中,該結構是路由條目的一部分。對於任何一個(來源、輸入介面、tos、目的地、標記),僅選擇一個路由條目。因此只要路由條目沒有改變,路由例外就會一直被使用。

答案2

您可以如下取得主機路徑 MTU 的詳細資訊。請注意,必須先填充快取資訊。此測試是使用 3.13 Ubuntu 核心執行的。我首先驗證主機的當前緩存,我沒有與它通信並且沒有資訊:

johnf@mtutest:~$ ip ro get 192.168.3.48
192.168.3.48 dev eth0  src 192.168.1.22
    cache

然後,我嘗試使用大於 MTU 的資料包對其進行 ping 操作(但又不能大到作業系統必須對資料包進行分段)。測試時您可能會錯過前幾個 ping,您應該會看到需要 Frag 的訊息。

johnf@mtutest:~$ ping -s 1460 192.168.3.48 -c 10
PING 192.168.3.48 (192.168.3.48) 1460(1488) bytes of data.
From 192.168.2.0 icmp_seq=1 Frag needed and DF set (mtu = 1220)
1468 bytes from 192.168.2.0: icmp_seq=2 ttl=252 time=1973 ms
[...]
--- 192.168.3.48 ping statistics ---
10 packets transmitted, 9 received, +1 errors, 10% packet loss, time 9016ms
rtt min/avg/max/mdev = 95.681/516.815/1973.697/568.969 ms, pipe 2

收到 ICMP MTU Exceeded 訊息後,核心應調整路由快取以反映路徑限制:

johnf@mtutest:~$ ip ro get 192.168.3.48
192.168.3.48 dev eth0  src 192.168.1.22
    cache  expires 588sec mtu 1220

相關內容