DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jijiang Liu <jijiang.liu@intel.com>
To: dev@dpdk.org, walter.e.gilmore@intel.com, thomas.long@intel.com
Subject: [dpdk-dev] [PATCH RFC 00/10] Add a VXLAN sample
Date: Thu, 16 Apr 2015 11:55:48 +0800	[thread overview]
Message-ID: <1429156558-28548-1-git-send-email-jijiang.liu@intel.com> (raw)

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 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

             reply	other threads:[~2015-04-16  3:56 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-16  3:55 Jijiang Liu [this message]
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 01/10] examples/tep_termination:initialize the VXLAN example Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 02/10] examples/tep_termination:define VXLAN device information and APIs Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 03/10] examples/tep_termination:add the pluggable structures for VXLAN packet processing Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 04/10] examples/tep_termination:implement " Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 05/10] examples/tep_termination:implement the APIs of encapsulation and decapsulation for VXLAN Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 06/10] examples/tep_termination:add UDP port configuration for UDP tunneling packet Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 07/10] examples/tep_termination:add tunnel filter type configuration Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 08/10] examples/tep_termination:add Tx checksum offload configuration for inner header Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 09/10] examples/tep_termination:add TSO offload configuration Jijiang Liu
2015-04-16  3:55 ` [dpdk-dev] [PATCH RFC 10/10] examples/tep_termination:add the configuration for encapsulation and the decapsulation Jijiang Liu
2015-04-20  7:22 ` [dpdk-dev] [PATCH RFC 00/10] Add a VXLAN sample Liu, Jijiang
2015-04-28  3:31 ` Liu, Jijiang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1429156558-28548-1-git-send-email-jijiang.liu@intel.com \
    --to=jijiang.liu@intel.com \
    --cc=dev@dpdk.org \
    --cc=thomas.long@intel.com \
    --cc=walter.e.gilmore@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).