[dpdk-dev] [PATCH RFC 00/10] Add a VXLAN sample

Liu, Jijiang jijiang.liu at intel.com
Mon Apr 20 09:22:20 CEST 2015


Any comments on this RFC patch set ?

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Jijiang Liu
> Sent: Thursday, April 16, 2015 11:56 AM
> To: dev at dpdk.org; Gilmore, Walter E; Long, Thomas
> Subject: [dpdk-dev] [PATCH RFC 00/10] Add a VXLAN sample
> 
> This VXLAN example simulates a VXLAN Tunnel endpoint(VTEP) termination in
> DPDK, which is used to demonstrate the offload and filtering capabilities of i40
> NIC for VXLAN packet.
> 
> And this example uses the basic virtio devices management function from vHost
> example, and it uses us-Vhost interface and tunnel filtering mechanism to direct
> the traffic to/from a specific VM.
> 
> In addition, this sample is also designed to show how tunneling protocols can be
> handled. For the vHost interface, we do not need to support zero copy/inter VM
> packet transfer etc. The approach that we take would be of benefit to you in
> that we put a pluggable structure in place so that the application could be easily
> extended to support a new tunneling protocol.
> 
> The software framework is as follows:
> 
>        |-------------------|   |-------------------|
>        | VM-1(VNI:100)     |   |  VM-2(VNI:200)    |
>        | |------| |------| |   | |------| |------| |
>        | |vport0| |vport1| |   | |vport0| |vport1| |
>        |-|------|-|------|-|   |-|------|-|------|-|      Guests
>                     	\           /
>          |-------------\-------/--------|
>          |     us-vHost interface       |
>          |          |-|----|--|         |
>          |     decap| | TEP|  | encap   |       DPDK App
>          |          |-|----|--|         |
>          |            |    |            |
>          |------------|----|------------|
>                       	|    |
>         |-------------|----|---------------|
>         |tunnel filter|    | IP/L4 Tx csum |
>         |IP/L4 csum   |    | TSO           |
>         |packet type  |    |               |               NIC
>         |CRC strip    |    |               |
>         |-------------|----|---------------|
>                       	|    |
>                       	|    |
>                       	|    |
>                       	/-------\
>                       	VXLAN Tunnel
> 
> The sample will support the followings:
> 1> Tunneling packet recognition.
> 
> 2> The port of UDP tunneling is configurable
> 
> 3> Directing of incoming traffic to the correct queue based on the tunnel filter
> type such as inner MAC address and VNI.
> 	The VNI will be assigned from a static internal table based on the us-
> vhost device ID. Each device will receive a unique device ID. The inner MAC will
> be learned from the first packet transmitted from a device.
> 
> 4> Decapsulation of Rx VXLAN traffic. This is a software only
> 4> operation(will use HW header split instead later)
> 
> 5> Encapsulation of Tx VXLAN traffic. This is a software only operation
> 
> 6> Tx outer IP, inner IP and L4 checksum offload
> 
> 7> TSO support for tunneling packet
> 
> Limitations:
> 1. No ARP support
> 2. There are some duplicated source codes because of using the basic virtio
> device management function from vhost sample, but consider that current vhost
> sample is quite complicated and huge enough, and I think we shall have a
> separate sample for tunneling packet processing.
> 3. Currently, only the i40e NIC is supported in the sample, but other types of
> NICs also can be supported later if those NICs are able to support tunneling
> packet filter.
> 
> 
> Jijiang Liu (10):
>   create VXLAN sample framework using virtio device management function
>   add basic VXLAN structures
>   add VXLAN operation APIs
>   support overlay operations
>   Add encapsulation and decapsulation function
>   add udp port configuration
>   add filter type configuration
>   add tx checksum offload configuration
>   add TSO offload configuration
>   add encapsulation and decapsulation flags
> 
>  examples/Makefile                      |    1 +
>  examples/tep_termination/Makefile      |   58 ++
>  examples/tep_termination/main.c        | 1117
> ++++++++++++++++++++++++++++++++
>  examples/tep_termination/main.h        |  113 ++++
>  examples/tep_termination/vxlan.c       |  242 +++++++
>  examples/tep_termination/vxlan.h       |   81 +++
>  examples/tep_termination/vxlan_setup.c |  453 +++++++++++++
>  examples/tep_termination/vxlan_setup.h |   76 +++
>  8 files changed, 2141 insertions(+), 0 deletions(-)  create mode 100644
> examples/tep_termination/Makefile  create mode 100644
> examples/tep_termination/main.c  create mode 100644
> examples/tep_termination/main.h  create mode 100644
> examples/tep_termination/vxlan.c  create mode 100644
> examples/tep_termination/vxlan.h  create mode 100644
> examples/tep_termination/vxlan_setup.c
>  create mode 100644 examples/tep_termination/vxlan_setup.h
> 
> --
> 1.7.7.6



More information about the dev mailing list