[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20171027.234744.338890618506522684.davem@davemloft.net>
Date: Fri, 27 Oct 2017 23:47:44 +0900 (KST)
From: David Miller <davem@...emloft.net>
To: lucien.xin@...il.com
Cc: netdev@...r.kernel.org, xeb@...l.ru
Subject: Re: [PATCH net] ip6_gre: update dst pmtu if dev mtu has been
updated by toobig in __gre6_xmit
From: Xin Long <lucien.xin@...il.com>
Date: Thu, 26 Oct 2017 19:27:17 +0800
> When receiving a Toobig icmpv6 packet, ip6gre_err would just set
> tunnel dev's mtu, that's not enough. For skb_dst(skb)'s pmtu may
> still be using the old value, it has no chance to be updated with
> tunnel dev's mtu.
>
> Jianlin found this issue by reducing route's mtu while running
> netperf, the performance went to 0.
>
> ip6ip6 and ip4ip6 tunnel can work well with this, as they lookup
> the upper dst and update_pmtu it's pmtu or icmpv6_send a Toobig
> to upper socket after setting tunnel dev's mtu.
>
> We couldn't do that for ip6_gre, as gre's inner packet could be
> any protocol, it's difficult to handle them (like lookup upper
> dst) in a good way.
>
> So this patch is to fix it by updating skb_dst(skb)'s pmtu when
> dev->mtu < skb_dst(skb)'s pmtu in tx path. It's safe to do this
> update there, as usually dev->mtu <= skb_dst(skb)'s pmtu and no
> performance regression can be caused by this.
>
> Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
> Reported-by: Jianlin Shi <jishi@...hat.com>
> Signed-off-by: Xin Long <lucien.xin@...il.com>
Applied and queued up for -stable.
Thanks.
Powered by blists - more mailing lists