我正在使用 ip 命令,今天我发现我的 fedora 16 在连接到主机后不显示路由缓存信息,在 centos 5 和 suse 10,11 上,如果我使用命令 ip route show cache 或 route -Cen,则没有问题,我的内核版本是 3.6.11-4.fc16.i686
我想知道这是否与内核版本有关,或者这是否是 Fedora 问题命令实用程序。
答案1
IPv4 路由缓存从内核 3.6 中删除。您应该能够在FIB 树(看/proc/net/fib_trie
)。
答案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 required 消息。
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 超出消息后,内核应该调整路由缓存以反映路径限制:
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