tunneling: Add datapath GRE support.
authorJesse Gross <jesse@nicira.com>
Sat, 17 Apr 2010 19:23:31 +0000 (15:23 -0400)
committerJesse Gross <jesse@nicira.com>
Mon, 19 Apr 2010 13:11:57 +0000 (09:11 -0400)
commit2736b84e2348090d4756f987db37aa7ddfcb50e0
tree370558a10d3de15115ec8c3f3cce708be5fb8a58
parentff6402a9f0d9ee4c29567b62938c82924d502b92
tunneling: Add datapath GRE support.

Add a new vport type that implements GRE support inside of the
datapath instead of relying on Linux devices.  This provides
greater scalability, performance, and control.

The new GRE implementation supports nearly all features of the
Linux implementation.  It does not currently support multicast,
NBMA tunnels, or non-Ethernet devices.

This implementation of GRE has several important benefits over the
existing Linux implementation.  The first is simply that is not a
Linux device.  Linux devices are fairly heavy weight both in terms
of memory consumption and interactions with the rest of the system
(notifications, processes polling, etc.).  There are many pieces of
code that make assumptions about the maximum reasonable number of
ports.  Simply maintaining the state of several thousand devices is
enough to full occupy the CPU.

A tighter coupling between the GRE implementation and datapath
also allows more flexibility.  The key can be set and retrieved
from the flow table, which allows even greater scalability.
There will probably be additional use cases in the future.
datapath/Modules.mk
datapath/linux-2.6/Modules.mk
datapath/linux-2.6/compat-2.6/addrconf_core-openvswitch.c [moved from datapath/linux-2.6/compat-2.6/addrconf_core-ip_gre.c with 100% similarity]
datapath/linux-2.6/compat-2.6/ip_output-openvswitch.c [moved from datapath/linux-2.6/compat-2.6/ip_output-ip_gre.c with 100% similarity]
datapath/vport-gre.c [new file with mode: 0644]
datapath/vport.c
include/openvswitch/gre.h