[ovs-dev] [PATCH v2] openvswitch: Userspace tunneling.

Flavio Leitner fbl at redhat.com
Wed Nov 5 13:59:15 UTC 2014


On Sun, Nov 02, 2014 at 09:29:28PM -0800, Pravin B Shelar wrote:
> 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 at nicira.com>
> Acked-by: Jarno Rajahalme <jrajahalme at nicira.com>
> ---
> Fixed according to comments from Jarno and Ben.
> Added test cases.
> ---
>  Makefile.am                                       |    1 +
>  NEWS                                              |    1 +
>  README-native-tunneling.md                        |   82 ++++
>  datapath/linux/compat/include/linux/openvswitch.h |   15 +
>  debian/openvswitch-common.docs                    |    1 +
>  lib/automake.mk                                   |    4 +
>  lib/dpif-netdev.c                                 |  104 +++++-
>  lib/dpif-netlink.c                                |    3 +-
>  lib/dpif-provider.h                               |    5 +-
>  lib/dpif.c                                        |   18 +-
>  lib/dpif.h                                        |    4 +-
>  lib/netdev-bsd.c                                  |    3 +
>  lib/netdev-dpdk.c                                 |    3 +
>  lib/netdev-dummy.c                                |   68 +++-
>  lib/netdev-linux.c                                |    3 +
>  lib/netdev-provider.h                             |    9 +
>  lib/netdev-vport.c                                |  486 ++++++++++++++++++++-
>  lib/netdev.c                                      |   34 ++
>  lib/netdev.h                                      |    9 +
>  lib/odp-execute.c                                 |    2 +
>  lib/odp-util.c                                    |  243 ++++++++++
>  lib/odp-util.h                                    |    2 +
>  lib/ofpbuf.h                                      |    8 +
>  lib/ovs-router.c                                  |    4 +
>  lib/packets.c                                     |   35 ++
>  lib/packets.h                                     |   32 ++-
>  lib/tnl-arp-cache.c                               |  215 +++++++++
>  lib/tnl-arp-cache.h                               |   40 ++
>  lib/tnl-ports.c                                   |  193 ++++++++
>  lib/tnl-ports.h                                   |   41 ++
>  ofproto/ofproto-dpif-xlate.c                      |  190 ++++++++-
>  ofproto/ofproto-dpif.c                            |   96 ++++-
>  ofproto/ofproto-dpif.h                            |    1 +
>  ofproto/tunnel.c                                  |   73 +++-
>  ofproto/tunnel.h                                  |   11 +-
>  rhel/openvswitch.spec.in                          |    2 +-
>  tests/automake.mk                                 |    1 +
>  tests/ofproto-macros.at                           |    7 +
>  tests/testsuite.at                                |    1 +
>  tests/tunnel-push-pop.at                          |   66 +++
>  tests/tunnel.at                                   |    8 +
>  41 files changed, 2063 insertions(+), 61 deletions(-)
>  create mode 100644 README-native-tunneling.md
>  create mode 100644 lib/tnl-arp-cache.c
>  create mode 100644 lib/tnl-arp-cache.h
>  create mode 100644 lib/tnl-ports.c
>  create mode 100644 lib/tnl-ports.h
>  create mode 100644 tests/tunnel-push-pop.at
> 
> diff --git a/Makefile.am b/Makefile.am
> index 343dffa..f734af4 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -85,6 +85,7 @@ EXTRA_DIST = \
>  	PORTING.md \
>  	README.md \
>  	README-lisp.md \
> +	README-native-tunneling.md \
>  	REPORTING-BUGS.md \
>  	TODO.md \
>  	.travis.yml \
> diff --git a/NEWS b/NEWS
> index d271188..3128ac4 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -45,6 +45,7 @@ Post-v2.3.0
>     - A simple wrapper script, 'ovs-docker', to integrate OVS with Docker
>       containers. If and when there is a native integration of Open vSwitch
>       with Docker, the wrapper script will be retired.
> +   - Added support for DPDK Tunneling. VXLAN and GRE are supported protocols.

I think the above is misleading since the patch is userspace generic.

fbl



More information about the dev mailing list