gre: Add support for path MTU discovery.
authorJesse Gross <jesse@nicira.com>
Mon, 1 Mar 2010 16:59:07 +0000 (11:59 -0500)
committerJesse Gross <jesse@nicira.com>
Fri, 5 Mar 2010 21:32:05 +0000 (16:32 -0500)
commit468991ad6c1b2c86220f7b6fb34c7b2b9248848a
tree30eaa3e673ec75b61325568e4481c8b7dc65a73b
parent83d3917d5405478bfa40aaf9debd66ea833c3b55
gre: Add support for path MTU discovery.

This allows path MTU discovery to properly work when used with
bridging.  While there was previously support for PMTUD it used
the kernel's IP stack.  This works fine for routing but when
bridging it is possible that a complete network is operating over
the bridge that the kernel has no knowledge of and the ICMP
fragmentation needed packets are lost.

When a packet arrives that is above the MTU of the tunnel, an
ICMP message is synthesized and send back on the device that the
original packet came from.  This does not rely on the kernel IP
stack and is therefore independent of the routing table.  Both
IPv4 and IPv6 are supported, including over VLANs.  Other types
of packets that are over the MTU are encapsulated and the outer
packets are fragmented.

This entire functionality is a layer violation since bridging
operates at layer 2 and fragmentation is a function of layer 3.
For this reason it is possible to disable PMTUD, which will
provide complete transparency but will cause the outer IP packets
to be fragmented.
datapath/linux-2.6/compat-2.6/include/linux/skbuff.h
datapath/linux-2.6/compat-2.6/ip_gre.c
lib/netdev-linux.c