IPv4 Fragmentation in a IPIP6 tunnel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everyone,
I am working for an embedded Linux firmware running on a CPE and I am 
using an IP4 over IPv6 tunnel configured as following:

ip -f inet6 tunnel add tun1 mode ipip6 remote XX:XX:XX local XX:XX:XX 
dev eth0

And it works fine until I don't try to test the fragment case: I send a 
too big UDP packet and my expectation - and requirement (sob) - would 
be a IPv6 packet fragmentation but what  I get is a double 
fragmentation (IPv4 and IPv6), then, summarizing:

IPv4 --> [IPv4-1-segment][IPv6] [IPv4-2-segment][IPv6]

Looking at the kernel code - which in I am not an expert - I observed 
that the function ip_finish_output :

#if defined(CONFIG_NETFILTER) && defined(CONFIG_XFRM)
        /* Policy lookup after SNAT yielded a new policy */
        if (skb_dst(skb)->xfrm != NULL) {
                IPCB(skb)->flags |= IPSKB_REROUTED;
                return dst_output(skb);
        }
#endif
#if defined(CONFIG_INET_IPSEC_OFFLOAD)
        if ((skb->ipsec_offload == 0) &&
                skb->len > ip_skb_dst_mtu(skb) && !skb_is_gso(skb))
#else
        if (skb->len > ip_skb_dst_mtu(skb) && !skb_is_gso(skb))
#endif
                return ip_fragment(skb, ip_finish_output2);
        else
                return ip_finish_output2(skb);

Does not care about it, it just fragments if the MTU does not match.

Is there any options to disable the fragmentation on IPV4  ? I am 
misconfiguring something ? Why does the ipip6 has this wrong behavior ?

Thanks in advance,
Pietro.

Pietro Paolini
pulsarpietro@xxxxxxx


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux