[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+FuTSf366JXT8JRZY6DMdHF2UnTCya9Z+b6cWQGXaenrd75AQ@mail.gmail.com>
Date: Tue, 28 Jan 2020 12:07:16 -0500
From: Willem de Bruijn <willemdebruijn.kernel@...il.com>
To: Martin Varghese <martinvarghesenokia@...il.com>
Cc: Network Development <netdev@...r.kernel.org>,
David Miller <davem@...emloft.net>,
Jonathan Corbet <corbet@....net>,
Alexey Kuznetsov <kuznet@....inr.ac.ru>,
Hideaki YOSHIFUJI <yoshfuji@...ux-ipv6.org>,
scott.drennan@...ia.com, Jiri Benc <jbenc@...hat.com>,
martin.varghese@...ia.com
Subject: Re: [PATCH net-next v6 0/2] Bare UDP L3 Encapsulation Module
On Tue, Jan 28, 2020 at 11:57 AM Martin Varghese
<martinvarghesenokia@...il.com> wrote:
>
> From: Martin Varghese <martin.varghese@...ia.com>
>
> There are various L3 encapsulation standards using UDP being discussed to
> leverage the UDP based load balancing capability of different networks.
> MPLSoUDP (__ https://tools.ietf.org/html/rfc7510) is one among them.
>
> The Bareudp tunnel module provides a generic L3 encapsulation tunnelling
> support for tunnelling different L3 protocols like MPLS, IP, NSH etc. inside
> a UDP tunnel.
>
> Special Handling
> ----------------
> The bareudp device supports special handling for MPLS & IP as they can have
> multiple ethertypes.
> MPLS procotcol can have ethertypes ETH_P_MPLS_UC (unicast) & ETH_P_MPLS_MC (multicast).
> IP protocol can have ethertypes ETH_P_IP (v4) & ETH_P_IPV6 (v6).
> This special handling can be enabled only for ethertypes ETH_P_IP & ETH_P_MPLS_UC
> with a flag called multiproto mode.
>
> Usage
> ------
>
> 1) Device creation & deletion
>
> a) ip link add dev bareudp0 type bareudp dstport 6635 ethertype 0x8847.
>
> This creates a bareudp tunnel device which tunnels L3 traffic with ethertype
> 0x8847 (MPLS traffic). The destination port of the UDP header will be set to
> 6635.The device will listen on UDP port 6635 to receive traffic.
>
> b) ip link delete bareudp0
>
> 2) Device creation with multiple proto mode enabled
>
> There are two ways to create a bareudp device for MPLS & IP with multiproto mode
> enabled.
>
> a) ip link add dev bareudp0 type bareudp dstport 6635 ethertype 0x8847 multiproto
>
> b) ip link add dev bareudp0 type bareudp dstport 6635 ethertype mpls
>
> 3) Device Usage
>
> The bareudp device could be used along with OVS or flower filter in TC.
> The OVS or TC flower layer must set the tunnel information in SKB dst field before
> sending packet buffer to the bareudp device for transmission. On reception the
> bareudp device extracts and stores the tunnel information in SKB dst field before
> passing the packet buffer to the network stack.
>
> Why not FOU ?
> ------------
> FOU by design does l4 encapsulation.It maps udp port to ipproto (IP protocol number for l4 protocol).
> Bareudp acheives a generic l3 encapsulation.It maps udp port to l3 ethertype.
>
> Martin Varghese (2):
> net: UDP tunnel encapsulation module for tunnelling different
> protocols like MPLS,IP,NSH etc.
> net: Special handling for IP & MPLS.
>
> Documentation/networking/bareudp.rst | 53 +++
> Documentation/networking/index.rst | 1 +
> drivers/net/Kconfig | 13 +
> drivers/net/Makefile | 1 +
> drivers/net/bareudp.c | 803 +++++++++++++++++++++++++++++++++++
> include/net/bareudp.h | 20 +
> include/net/ipv6.h | 6 +
> include/net/route.h | 6 +
> include/uapi/linux/if_link.h | 12 +
> net/ipv4/route.c | 48 +++
> net/ipv6/ip6_output.c | 70 +++
> 11 files changed, 1033 insertions(+)
> create mode 100644 Documentation/networking/bareudp.rst
> create mode 100644 drivers/net/bareudp.c
> create mode 100644 include/net/bareudp.h
net-next is currently closed, see also
http://vger.kernel.org/~davem/net-next.html
Powered by blists - more mailing lists