[ovs-git] Open vSwitch: gre: Add support for path MTU discovery. (next)

dev at openvswitch.org dev at openvswitch.org
Fri Mar 5 22:25:33 UTC 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Open vSwitch".

The branch, next has been updated
       via  468991ad6c1b2c86220f7b6fb34c7b2b9248848a (commit)
       via  83d3917d5405478bfa40aaf9debd66ea833c3b55 (commit)
       via  82ff0d0a931ddc610c366551a948ffb33e9c8008 (commit)
       via  8ab4016b3604566d221b5461f690fd698494e6ae (commit)
       via  322efeb7d3cbc49fe3bc2db53f61529c617fa4f5 (commit)
       via  a9a4b30c0091b507dfe0f7c59c80355693836f04 (commit)
       via  3c8740c5be5a63c65d7d38e08179a43157d4c4b1 (commit)
       via  87036dbdea0cbebdd0869aefb9181817463350f0 (commit)
       via  2de320799d5b7981b17d1e46e5a07b86158e5ada (commit)
      from  635c9298b91d0942aca39ba1f0d7ea5805ab618e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 468991ad6c1b2c86220f7b6fb34c7b2b9248848a
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=468991ad6c1b2c86220f7b6fb34c7b2b9248848a
Author: Jesse Gross <jesse at nicira.com>
		
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.


commit 83d3917d5405478bfa40aaf9debd66ea833c3b55
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=83d3917d5405478bfa40aaf9debd66ea833c3b55
Author: Jesse Gross <jesse at nicira.com>
		
gre: Correctly account for hardware header length.
		
On recent kernels there are two fields that we can use to keep track
of the overhead due to tunneling: hard_header_len and needed_headroom.
On older kernels everything got shoved into hard_header_len and the
actual header length got lost, which caused MTU calculations to be
incorrect.  Since we know the device type we can figure out what the
header length should be.


commit 82ff0d0a931ddc610c366551a948ffb33e9c8008
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=82ff0d0a931ddc610c366551a948ffb33e9c8008
Author: Jesse Gross <jesse at nicira.com>
		
gre: Add functions to determine address type to compat layer.
		
Allows older kernels to classify IPv4/IPv6 addresses as loopback,
broadcast, etc.  The IPv6 functions actually exist in all supported
kernels but add a dependency on the IPv6 code on older kernels (they
are always available on more recent kernels).  This allows us to
process IPv6 packets without dragging in the entire IPv6 subsystem
if it is compiled as a module (such as on Xen).  This is only done
for packets that are passing through the system and does not use
the IPv6 core if it is not configured.


commit 8ab4016b3604566d221b5461f690fd698494e6ae
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=8ab4016b3604566d221b5461f690fd698494e6ae
Author: Jesse Gross <jesse at nicira.com>
		
gre: Allow ToS on outer packet to be configured.
		
When creating a GRE tunnel, it is now possible to either set the
ToS of the outer packet to a fixed value or copy it from the inner
packet.


commit 322efeb7d3cbc49fe3bc2db53f61529c617fa4f5
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=322efeb7d3cbc49fe3bc2db53f61529c617fa4f5
Author: Jesse Gross <jesse at nicira.com>
		
gre: Allow IPv6 ToS bits to be propagated to tunnel packets.
		
The IPv6 ToS bits should have the same meaning as in IPv4, so
allow them to be copied from the inner packet to the tunnel packet
if enabled.


commit a9a4b30c0091b507dfe0f7c59c80355693836f04
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=a9a4b30c0091b507dfe0f7c59c80355693836f04
Author: Jesse Gross <jesse at nicira.com>
		
gre: Always set TTL on outer packet to 64.
		
Currently the TTL is copied from the inner packet of the tunnel to
the outer packet if the inner packet is IP.  This is good if your
GRE packets might make it into the input of your device but bad
if you want to be fully transparent.

This also resolves an inconsistency between tunnels set up using
the ioctl and using Netlink.  The ioctl version would force PMTUD
on if a fixed TTL is set as a backup way to prevent loops but it
never made it over to the newer Netlink code so obviously no one
cares too much about it.  This removes it to provide consistency
and transparency.

Basically, don't create loops and you will be happy.


commit 3c8740c5be5a63c65d7d38e08179a43157d4c4b1
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=3c8740c5be5a63c65d7d38e08179a43157d4c4b1
Author: Jesse Gross <jesse at nicira.com>
		
gre: Disable tx queue.
		
GRE is a software device that processes packets synchronously and
doesn't need a queue.  Currently we are using the default for
Ethernet devices but that is unnecessary.


commit 87036dbdea0cbebdd0869aefb9181817463350f0
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=87036dbdea0cbebdd0869aefb9181817463350f0
Author: Jesse Gross <jesse at nicira.com>
		
gre: Check that the IP header is actually there before using it.
		
GRE is nominally operating at layer 2 but it has some special
features for IP packets.  This checks that the IP header is present
before trying to read it.  If it is not there, we just disable the
special features but still process the packet.


commit 2de320799d5b7981b17d1e46e5a07b86158e5ada
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=2de320799d5b7981b17d1e46e5a07b86158e5ada
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Disable large receive offload.
		
LRO can play fast and loose with the packets that it merges, which
isn't very polite when you are bridging packets for other operating
systems.  This disables LRO on any underlying devices that are added
to the datapath, which is the same as what the bridge does.

Note that this does not disable GRO, which has a more strict set of
rules about what is merged and is therefore safe for bridging.  Both
are typically done in software anyways.


-----------------------------------------------------------------------

Summary of changes:
 datapath/datapath.c                                |    6 +
 datapath/linux-2.6/Modules.mk                      |    5 +-
 .../linux-2.6/compat-2.6/addrconf_core-ip_gre.c    |   82 +++
 datapath/linux-2.6/compat-2.6/dev-openvswitch.c    |   35 ++
 datapath/linux-2.6/compat-2.6/include/linux/in.h   |   21 +
 .../linux-2.6/compat-2.6/include/linux/netdevice.h |    4 +
 .../linux-2.6/compat-2.6/include/linux/skbuff.h    |   37 ++
 datapath/linux-2.6/compat-2.6/ip_gre.c             |  583 +++++++++++++++++---
 datapath/linux-2.6/compat-2.6/skbuff-openvswitch.c |   13 +
 lib/netdev-linux.c                                 |   22 +-
 10 files changed, 737 insertions(+), 71 deletions(-)
 create mode 100644 datapath/linux-2.6/compat-2.6/addrconf_core-ip_gre.c
 create mode 100644 datapath/linux-2.6/compat-2.6/dev-openvswitch.c
 create mode 100644 datapath/linux-2.6/compat-2.6/skbuff-openvswitch.c


hooks/post-receive
-- 
Open vSwitch




More information about the git mailing list