Skip to contentSkip to conversation

ipv6: remove min MTU check for ipsec tunnels

PATCH In review Ashwanth Goli 2 participants 2 messages May 10, 2018 – May 14, 2018

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 ipv6: remove min MTU check for ipsec tunnels

With 749439bfac "fix udpv6 sendmsg crash caused by too small MTU" ipsec tunnels that report a MTU less than IPV6_MIN_MTU are broken even for packets that are smaller than IPV6_MIN_MTU.

According to rfc2473#section-7.1

if the original IPv6 packet is equal or smaller than the IPv6 minimum link MTU, the tunnel entry-point node encapsulates the original packet, and subsequently fragments the resulting IPv6 tunnel packet into IPv6 fragments that do not exceed the Path MTU to the tunnel exit-point.

Dropping the MTU check for ipsec tunnel destinations.

---
 net/ipv6/ip6_output.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
net/ipv6/ip6_output.c +1 -1
index 2e891d2..ea1ef1b 100644
@@ -1235,7 +1235,7 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
 		if (np->frag_size)
 			mtu = np->frag_size;
 	}
-	if (mtu < IPV6_MIN_MTU)
+	if (mtu < IPV6_MIN_MTU && !(rt->dst.flags & DST_XFRM_TUNNEL))
 		return -EINVAL;
 	cork->base.fragsize = mtu;
 	if (dst_allfrag(xfrm_dst_path(&rt->dst)))
Signature · 1 line
1.9.1
maintainer
#1 lore raw

From: Ashwanth Goli <[email protected]>
Date: Thu, 10 May 2018 23:15:44 +0530

Quoted 13 lines

With 749439bfac "fix udpv6 sendmsg crash caused by too small MTU" ipsec tunnels that report a MTU less than IPV6_MIN_MTU are broken even for packets that are smaller than IPV6_MIN_MTU.

According to rfc2473#section-7.1

if the original IPv6 packet is equal or smaller than the IPv6 minimum link MTU, the tunnel entry-point node encapsulates the original packet, and subsequently fragments the resulting IPv6 tunnel packet into IPv6 fragments that do not exceed the Path MTU to the tunnel exit-point.

Quoted 3 lines

Dropping the MTU check for ipsec tunnel destinations.

I still hold the fundamental objection to your change which I expressed from the beginning.

I'll try to be more clear.

This RFC language is talking about tunnels _IN GENERAL_.

Your patch is modifying behavior only for IPSEC tunnels.

That doesn't make any sense.

Either the RFC language is to be followed, and therefore applied to all tunnels. Or it doesn't.

I don't see any logic which makes it such that only IPSEC tunnels should follow this MTU checking rule.

Please do not resubmit this patch again until you resolve this issue.

Thank you.