SixXS::Sunset 2017-06-06

MTU problems since 07/04/2011
[de] Shadow Hawkins on Tuesday, 05 July 2011 13:04:50
Hi, I have a 6-in-4 tunnel for my server. Since this weekend I have problems with large packets. When I ping my default router with a large, but valid package I get icmpv6 packet too big: # ping6 -c1 -s 1232 2001:4dd0:ff00:xxxx::1 PING 2001:4dd0:ff00:xxxx::1(2001:4dd0:ff00:xxxx::1) 1232 data bytes From 2001:4dd0:ff00:xxxx::1 icmp_seq=1 Packet too big: mtu=1280 tcpdump looks like this: IP6 (hlim 64, next-header ICMPv6 (58) payload length: 1240) 2001:4dd0:ff00:xxxx::2 > 2001:4dd0:ff00:xxxx::1: ICMP6, echo request, length 1240, seq 1 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 1240) 2001:4dd0:ff00:xxxx::1 > 2001:4dd0:ff00:xxxx::2: ICMP6, packet too big, length 1240, mtu 1280 It seems that my kernel drop this icmp6 error. Two questions: 1) Why do I get the icmp6 error? Do I have to talk to the provider of the tunnel endpoint? 2) Why does my kernel not fragment the package and send out smaller frames? Thanks for any help. Michael.
MTU problems since 07/04/2011
[ch] Jeroen Massar SixXS Staff on Tuesday, 05 July 2011 13:41:38
1) Why do I get the icmp6 error?
Because you are sending packets which don't fit through the tunnel. The default MTU is 1280, you can change this in the tunnel page. See also FAQ: What is the MTU of a tunnel? Clearly, if you are trying and succeed, to send packets larger than the MTU that is on the tunnel, then you have misconfigured your tunnel, you might want to match the MTU that is set on the PoP side of the tunnel, or at least update that setting.
Do I have to talk to the provider of the tunnel endpoint?
That would be SixXS right? :) We'll nicely point you to the above FAQ.
2) Why does my kernel not fragment the package and send out smaller frames?
Because generally the DF (Don't Fragment) bit is set for ICMP? (btw: s/package/packet/)
MTU problems since 07/04/2011
[de] Shadow Hawkins on Tuesday, 05 July 2011 19:23:28
1) Packets do not fit through the tunnel Let's calculate: MTU is 1280. 40 Byte for the IPv6 header and 4 Byte for the ICMPv6 header. That makes 44 Byte. So I should be able to ping a payload of 1236 Byte through the tunnel. This works nice for the all of my tunnels except for the one in question. The maximum payload I get through that tunnel is 1212 byte. If I have 1213 Byte in a package for the tunnel endpoint, the tunnel endpoint tells me: # ping6 -c1 -s 1213 2001:4dd0:ff00:xxxx::1 PING 2001:4dd0:ff00:xxxx::1(2001:4dd0:ff00:xxx::1) 1213 data bytes From 2001:4dd0:ff00:xxxx::1 icmp_seq=1 Packet too big: mtu=1280. Calculating further: 1212 Byte + 44 Byte is 1256 Byte, which is BELOW the minimum MTU of 1280 for a IPv6 interface. An other interesting fact is that the ICMPv6 error message originates from the provider side tunnel endpoint, not from my interface. So the packet is transmitted and only the receiving side sends out the error message. And of course I have trouble sending data through that interface. Are my calculations correct? Greetings, Michael.
MTU problems since 07/04/2011
[ch] Jeroen Massar SixXS Staff on Tuesday, 05 July 2011 20:27:35
An other interesting fact is that the ICMPv6 error message originates from
the provider side tunnel endpoint, not from my interface.
So the packet is transmitted and only the receiving side sends out the error message.
Well, at least it reported the error correctly, otherwise this would have been a very nasty thing to track down. The problem has been resolved now though. Thanks for noticing this little glitch.

Please note Posting is only allowed when you are logged in.

Static Sunset Edition of SixXS
©2001-2017 SixXS - IPv6 Deployment & Tunnel Broker