From: Xin Long <lucien....@gmail.com> Date: Mon, 18 Dec 2017 14:26:21 +0800
> Now it's using IPV6_MIN_MTU as the min mtu in ip6_tnl_xmit, but > IPV6_MIN_MTU actually only works when the inner packet is ipv6. > > With IPV6_MIN_MTU for ipv4 packets, the new pmtu for inner dst > couldn't be set less than 1280. It would cause tx_err and the > packet to be dropped when the outer dst pmtu is close to 1280. > > Jianlin found it by running ipv4 traffic with the topo: > > (client) gre6 <---> eth1 (route) eth2 <---> gre6 (server) > > After changing eth2 mtu to 1300, the performance became very > low, or the connection was even broken. The issue also affects > ip4ip6 and ip6ip6 tunnels. > > So if the inner packet is ipv4, 576 should be considered as the > min mtu. > > Note that for ip4ip6 and ip6ip6 tunnels, the inner packet can > only be ipv4 or ipv6, but for gre6 tunnel, it may also be ARP. > This patch using 576 as the min mtu for non-ipv6 packet works > for all those cases. > > Reported-by: Jianlin Shi <ji...@redhat.com> > Signed-off-by: Xin Long <lucien....@gmail.com> Applied.