
Hello, At Julien Goodwin's talk in April, he said, if I understand correctly, Internode has a bug in their implementation of PPPoA and IPv6 in that 1500 size packets will get silently dropped. Only for IPv4, not IPv6. I am not seeing this however, and just want to check my calculations are correct. (just to be confusing: with IPv4, both tcpdump (with -v) and ping will quote the ethernet packet size of 1492 or 1500, but this doesn't happen with IPv6) TEST #1: 1472 + 8 bytes ICMP + 20 bytes IPv4 header = 1500 huey:~# ping -s 1472 -M do hqrouter.vpac.org PING hqrouter.vpac.org (202.158.218.252) 1472(1500) bytes of data. 1480 bytes from hqrouter.vpac.org (202.158.218.252): icmp_req=1 ttl=57 time=35.3 ms ^C --- hqrouter.vpac.org ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 35.350/35.350/35.350/0.000 ms 13:11:27.668571 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 1500) 59.167.180.194 > 202.158.218.252: ICMP echo request, id 18672, seq 1, length 1480 13:11:27.703559 IP (tos 0x0, ttl 57, id 33509, offset 0, flags [+], proto ICMP (1), length 1492) 202.158.218.252 > 59.167.180.194: ICMP echo reply, id 18672, seq 1, length 1472 13:11:27.703628 IP (tos 0x0, ttl 57, id 33509, offset 1472, flags [none], proto ICMP (1), length 28) 202.158.218.252 > 59.167.180.194: icmp I can confirm that the outgoing packets are not fragmented in this case, by running tcpdump on remote system: 13:11:27.694702 IP (tos 0x20, ttl 57, id 0, offset 0, flags [DF], proto ICMP (1), length 1500) huey.microcomaustralia.com.au > hqrouter.vpac.org: ICMP echo request, id 18672, seq 1, length 1480 13:11:27.694728 IP (tos 0x20, ttl 64, id 33509, offset 0, flags [none], proto ICMP (1), length 1500) hqrouter.vpac.org > huey.microcomaustralia.com.au: ICMP echo reply, id 18672, seq 1, length 1480 TEST #2: 1464 + 8 bytes ICMP + 20 bytes IPv4 header + 8 bytes PPPoE overheard = 1500 huey:~# ping -s 1464 -M do hqrouter.vpac.org PING hqrouter.vpac.org (202.158.218.252) 1464(1492) bytes of data. 1472 bytes from hqrouter.vpac.org (202.158.218.252): icmp_req=1 ttl=57 time=34.3 ms 1472 bytes from hqrouter.vpac.org (202.158.218.252): icmp_req=2 ttl=57 time=33.6 ms ^C --- hqrouter.vpac.org ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1003ms rtt min/avg/max/mdev = 33.642/34.010/34.378/0.368 ms In this case no fragmentation occurs: 13:13:00.502010 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 1492) 59.167.180.194 > 202.158.218.252: ICMP echo request, id 18683, seq 1, length 1472 13:13:00.536331 IP (tos 0x0, ttl 57, id 33510, offset 0, flags [none], proto ICMP (1), length 1492) 202.158.218.252 > 59.167.180.194: ICMP echo reply, id 18683, seq 1, length 1472 TEST#3: 1452 + 8 bytes ICMP + 40 bytes IPv6 header = 1500 huey:~# ping6 -s 1452 -M do hqrouter.vpac.org PING hqrouter.vpac.org(hqrouter.vpac.org) 1452 data bytes 1460 bytes from hqrouter.vpac.org: icmp_seq=1 ttl=57 time=35.2 ms 1460 bytes from hqrouter.vpac.org: icmp_seq=2 ttl=57 time=36.9 ms ^C --- hqrouter.vpac.org ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1003ms rtt min/avg/max/mdev = 35.263/36.128/36.994/0.886 ms In this case fragmentation occurs on the returned packets (like test #1): 13:14:17.853662 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 1460) 2001:44b8:4112:8a04::2 > 2001:388:60ac::5: [icmp6 sum ok] ICMP6, echo request, length 1460, seq 1 13:14:17.888746 IP6 (hlim 57, next-header Fragment (44) payload length: 1448) 2001:388:60ac::5 > 2001:44b8:4112:8a04::2: frag (0xd268db04:0|1440) ICMP6, echo reply, length 1440, seq 1 13:14:17.888839 IP6 (hlim 57, next-header Fragment (44) payload length: 28) 2001:388:60ac::5 > 2001:44b8:4112:8a04::2: frag (0xd268db04:1440|20) In this case though, unlike test #1, the response packets are fragmented by the sender: 13:14:17.880311 IP6 (hlim 57, next-header ICMPv6 (58) payload length: 1460) huey.microcomaustralia.com.au > hqrouter.vpac.org: [icmp6 sum ok] ICMP6, echo request, length 1460, seq 1 13:14:17.880340 IP6 (hlim 64, next-header Fragment (44) payload length: 1448) hqrouter.vpac.org > huey.microcomaustralia.com.au: frag (0xd268db04:0|1440) ICMP6, echo reply, length 1440, seq 1 13:14:17.880343 IP6 (hlim 64, next-header Fragment (44) payload length: 28) hqrouter.vpac.org > huey.microcomaustralia.com.au: frag (0xd268db04:1440|20) So somehow the sender must be working out the reduced MTU. TEST#4: 1444 + 8 bytes ICMP + 40 bytes IPv6 header + 8 bytes PPPoE overhead = 1500 huey:~# ping6 -s 1444 -M do hqrouter.vpac.org PING hqrouter.vpac.org(hqrouter.vpac.org) 1444 data bytes 1452 bytes from hqrouter.vpac.org: icmp_seq=1 ttl=57 time=34.3 ms 1452 bytes from hqrouter.vpac.org: icmp_seq=2 ttl=57 time=35.7 ms 1452 bytes from hqrouter.vpac.org: icmp_seq=3 ttl=57 time=34.4 ms ^C --- hqrouter.vpac.org ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 34.348/34.852/35.721/0.617 ms Like #2 no fragmentation: 13:16:03.105321 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 1452) 2001:44b8:4112:8a04::2 > 2001:388:60ac::5: [icmp6 sum ok] ICMP6, echo request, length 1452, seq 1 13:16:03.139572 IP6 (hlim 57, next-header ICMPv6 (58) payload length: 1452) 2001:388:60ac::5 > 2001:44b8:4112:8a04::2: [icmp6 sum ok] ICMP6, echo reply, length 1452, seq 1 Maybe this is a bug that Internode has fixed? Or maybe I have got something wrong? It does appear that PPPoE limitations apply even for PPPoA, at least with received packets. For both IPv6 and IPv4. -- Brian May <brian@microcomaustralia.com.au>

Brian May <brian@microcomaustralia.com.au> wrote:
At Julien Goodwin's talk in April, he said, if I understand correctly, Internode has a bug in their implementation of PPPoA and IPv6 in that 1500 size packets will get silently dropped. Only for IPv4, not IPv6.
It's happening for IPv4 here as well as IPv6. I have to set my MTU to 1496 bytes on ppp0. The symptom was that calls made to Internode's Nodephone service from my FreeSWITCH installation failed - that is, SIP packets were dropped on the way out. Setting MTU to 1496 was enough to solve it. I just tested again: ip link set mtu 1500 dev ppp0 called a Nodephone test number - no connection. ip link set mtu 1496 dev ppp0 Repeated the call - it worked. When originally diagnosing the problem, I ran pings of different sizes and verified the cause.
participants (2)
-
Brian May
-
Jason White