Odd ping/mtu behavior

From: Stephen Lee
Date: Thu Apr 29 2004 - 05:38:11 EST


I came across this some time earlier.

http://groups.google.co.jp/groups?selm=406865d2.107471531%40news-server.woh.rr.com

In a nutshell:

With an mtu of 9000, ping up to a size of 8968(8996) bytes to
another host in the same subnet works, until a ping of larger
size (but smaller than the 8972 bytes allowed by an mtu of
9000) causes the pmtu to drop to 8166. With several pings
the pmtu can drop all the way down to 1492.

I tried it on my system and got the same behaviour on a Redhat 9 box
running vanilla kernel 2.6.5. With a 2.4.22 kernel from Fedora Core 1,
the same box does not show this problem.

This is not limited to jumbo frames, an mtu of 1496 (but not 1500) shows
similar behavior, with pings larger than 1464(1492) bytes failing.

Is this a configuration problem or a bug?

Below is the log from 2.6.5. I've also attached the kernel
configuration used.

Stephen

# uname -srvmpio
Linux 2.6.5 #1 SMP Thu Apr 29 09:23:10 JST 2004 i686 i686 i386 GNU/Linux
# /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:F1:6B:F7:21
inet addr:192.168.120.118 Bcast:192.168.120.255 Mask:255.255.255.0
inet6 addr: fe80::20c:f1ff:fe6b:f721/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9000 Metric:1
RX packets:173 errors:0 dropped:0 overruns:0 frame:0
TX packets:240 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18115 (17.6 Kb) TX bytes:21919 (21.4 Kb)
Base address:0xbc00 Memory:ff8e0000-ff900000

# ping -c 4 -M do -s 8973 192.168.120.211
PING 192.168.120.211 (192.168.120.211) 8973(9001) bytes of data.
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 9000)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 9000)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 9000)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 9000)

--- 192.168.120.211 ping statistics ---
0 packets transmitted, 0 received, +4 errors

# ping -c 4 -M do -s 8968 192.168.120.211
PING 192.168.120.211 (192.168.120.211) 8968(8996) bytes of data.
8976 bytes from 192.168.120.211: icmp_seq=1 ttl=64 time=0.814 ms
8976 bytes from 192.168.120.211: icmp_seq=2 ttl=64 time=1.08 ms
8976 bytes from 192.168.120.211: icmp_seq=3 ttl=64 time=1.10 ms
8976 bytes from 192.168.120.211: icmp_seq=4 ttl=64 time=1.12 ms

--- 192.168.120.211 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.814/1.032/1.121/0.130 ms
# ping -c 4 -M do -s 8969 192.168.120.211
PING 192.168.120.211 (192.168.120.211) 8969(8997) bytes of data.
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 8166)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 8166)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 8166)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 8166)

--- 192.168.120.211 ping statistics ---
0 packets transmitted, 0 received, +4 errors

# ping -c 4 -M do -s 8968 192.168.120.211
PING 192.168.120.211 (192.168.120.211) 8968(8996) bytes of data.
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 8166)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 8166)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 8166)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 8166)

--- 192.168.120.211 ping statistics ---
0 packets transmitted, 0 received, +4 errors

# ip link set eth0 mtu 1496
# ping -c 4 -M do -s 1466 192.168.120.211
PING 192.168.120.211 (192.168.120.211) 1466(1494) bytes of data.
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 1492)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 1492)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 1492)
From 192.168.120.118 icmp_seq=1 Frag needed and DF set (mtu = 1492)

--- 192.168.120.211 ping statistics ---
0 packets transmitted, 0 received, +4 errors

# ping -c 4 -M do -s 1464 192.168.120.211
PING 192.168.120.211 (192.168.120.211) 1464(1492) bytes of data.
1472 bytes from 192.168.120.211: icmp_seq=1 ttl=64 time=0.365 ms
1472 bytes from 192.168.120.211: icmp_seq=2 ttl=64 time=0.281 ms
1472 bytes from 192.168.120.211: icmp_seq=3 ttl=64 time=0.287 ms
1472 bytes from 192.168.120.211: icmp_seq=4 ttl=64 time=0.288 ms

--- 192.168.120.211 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.281/0.305/0.365/0.036 ms
# ip link set eth0 mtu 1500
# ping -c 4 -M do -s 1472 192.168.120.211
PING 192.168.120.211 (192.168.120.211) 1472(1500) bytes of data.
1480 bytes from 192.168.120.211: icmp_seq=1 ttl=64 time=0.666 ms
1480 bytes from 192.168.120.211: icmp_seq=2 ttl=64 time=0.232 ms
1480 bytes from 192.168.120.211: icmp_seq=3 ttl=64 time=0.366 ms
1480 bytes from 192.168.120.211: icmp_seq=4 ttl=64 time=0.238 ms

--- 192.168.120.211 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.232/0.375/0.666/0.177 ms

Attachment: config265.txt
Description: Binary data