IPv6 tunnel MTU of 1480 not effective

Jason Mann jason at b0rken.org
Thu May 9 08:34:40 UTC 2013


Hello list,

I have a dedicated server running FreeBSD 9.1-RELEASE hosted with an 
IPv4-only hosting company and have set up a Hurricane Electric IPv6 
tunnel to it.  It's mostly working fine.

However I'm only able to send IPv6 packets from my host that fit an MTU 
of 1280 even though I've set the tunnel interface and per-route MTU to 
1480, based on the "outer" ethernet connection having an MTU of 1500. 
Hurricane Electric supports this and I've set the MTU to 1480 on their 
side as well.

This issue is evident when I try to send IPv6 pings larger than 1280 
bytes to the remote tunnel peer.  The outgoing echo request is chopped 
into two fragments, while the response comes back in one fragment, as 
follows:

% ping6 -c 1 -s 1432 2001:470:1f08:84f::1
PING6(1480=40+8+1432 bytes) 2001:470:1f09:84f::2 --> 2001:470:1f08:84f::1
1440 bytes from 2001:470:1f08:84f::1, icmp_seq=0 hlim=64 time=1.514 ms

--- 2001:470:1f08:84f::1 ping6 statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.514/1.514/1.514/0.000 ms


The corresponding tcpdump output:

09:10:30.368328 IP6 2001:470:1f09:84f::2 > 2001:470:1f08:84f::1: frag 
(0|1232) ICMP6, echo request, seq 0, length 1232
09:10:30.368337 IP6 2001:470:1f09:84f::2 > 2001:470:1f08:84f::1: frag 
(1232|208)
09:10:30.369740 IP6 2001:470:1f08:84f::1 > 2001:470:1f09:84f::2: ICMP6, 
echo reply, seq 0, length 1440


Here's my config:

% ifconfig gif0
gif0: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> metric 0 mtu 1480
         tunnel inet <ipv4 address> --> 216.66.80.26
         inet6 fe80::be30:5bff:feda:b396%gif0 prefixlen 64 scopeid 0x6
         inet6 2001:470:1f08:84f::2 --> 2001:470:1f08:84f::1 prefixlen 128
         nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
         options=1<ACCEPT_REV_ETHIP_VER>

% route -n get -inet6 default
    route to: ::
destination: ::
        mask: default
     gateway: 2001:470:1f08:84f::1
   interface: gif0
       flags: <UP,GATEWAY,DONE,STATIC>
  recvpipe  sendpipe  ssthresh  rtt,msec    mtu        weight    expire
        0         0         0         0      1480         1         0


Can anyone advise on what I may have done wrong or misunderstood here?

I realise that an MTU of 1280 is the minimum supported by IPv6, but I 
don't see why I shouldn't be able to increase the MTU as high as the 
outer transport will support to improve efficiency.

Thanks,
JM


More information about the freebsd-net mailing list