openvswitch: Userspace tunneling.
authorPravin B Shelar <pshelar@nicira.com>
Tue, 11 Nov 2014 19:53:47 +0000 (11:53 -0800)
committerPravin B Shelar <pshelar@nicira.com>
Wed, 12 Nov 2014 23:08:33 +0000 (15:08 -0800)
commita36de779d739cdcd72c65c67a547a786798b595a
tree736331a0c51ec85f22fe982b18135d7f9d9131ca
parent0746a84f3916193c0704e94a4c214f672c5c542e
openvswitch: Userspace tunneling.

Following patch adds support for userspace tunneling. Tunneling
needs three more component first is routing table which is configured by
caching kernel routes and second is ARP cache which build automatically
by snooping arp. And third is tunnel protocol table which list all
listening protocols which is populated by vswitchd as tunnel ports
are added. GRE and VXLAN protocol support is added in this patch.

Tunneling works as follows:
On packet receive vswitchd check if this packet is targeted to tunnel
port. If it is then vswitchd inserts tunnel pop action which pops
header and sends packet to tunnel port.
On packet xmit rather than generating Set tunnel action it generate
tunnel push action which has tunnel header data. datapath can use
tunnel-push action data to generate header for each packet and
forward this packet to output port. Since tunnel-push action
contains most of packet header vswitchd needs to lookup routing
table and arp table to build this action.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Thomas Graf <tgraf@noironetworks.com>
Acked-by: Ben Pfaff <blp@nicira.com>
46 files changed:
Makefile.am
NEWS
README-native-tunneling.md [new file with mode: 0644]
datapath/linux/compat/include/linux/openvswitch.h
debian/openvswitch-common.docs
lib/automake.mk
lib/dpif-netdev.c
lib/dpif-netlink.c
lib/dpif-provider.h
lib/dpif.c
lib/dpif.h
lib/netdev-bsd.c
lib/netdev-dpdk.c
lib/netdev-dummy.c
lib/netdev-linux.c
lib/netdev-provider.h
lib/netdev-vport.c
lib/netdev.c
lib/netdev.h
lib/odp-execute.c
lib/odp-util.c
lib/odp-util.h
lib/ofpbuf.h
lib/ovs-router.c
lib/packets.c
lib/packets.h
lib/tnl-arp-cache.c [new file with mode: 0644]
lib/tnl-arp-cache.h [new file with mode: 0644]
lib/tnl-ports.c [new file with mode: 0644]
lib/tnl-ports.h [new file with mode: 0644]
manpages.mk
ofproto/automake.mk
ofproto/ofproto-dpif-xlate.c
ofproto/ofproto-dpif.c
ofproto/ofproto-dpif.h
ofproto/ofproto-tnl-unixctl.man [new file with mode: 0644]
ofproto/tunnel.c
ofproto/tunnel.h
rhel/openvswitch.spec.in
tests/automake.mk
tests/odp.at
tests/ofproto-macros.at
tests/testsuite.at
tests/tunnel-push-pop.at [new file with mode: 0644]
tests/tunnel.at
vswitchd/ovs-vswitchd.8.in