[dpdk-dev] [PATCH v3 00/10] Add a VXLAN sample
Zhang, Helin
helin.zhang at intel.com
Mon Jun 8 10:34:19 CEST 2015
Acked-by: Helin Zhang <helin.zhang at intel.com>
Thanks for the good example!
> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Jijiang Liu
> Sent: Monday, June 8, 2015 11:02 AM
> To: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH v3 00/10] Add a VXLAN sample
>
> This VXLAN sample 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 sample uses the basic virtio devices management function from vHost
> example, and the 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 approaches we took would be of benefit to you because
> 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
> |packet recogn| | |
> |-------------|----|---------------|
> | |
> | |
> | |
> /-------\
> VXLAN Tunnel
>
> The sample will support the followings:
> 1> Tunneling packet recognition.
>
> 2> The port of UDP tunneling is configurable
>
> 3> Directing 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 by the first packet transmitted from a device.
>
> 4> Decapsulation of Rx VXLAN traffic. This is a software only operation.
>
> 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
>
> The limitations:
> 1. No ARP support.
> 2. There are some duplicated source codes because I used the basic virtio
> device management function from VHOST sample. Considering that the current
> VHOST sample is quite complicated and huge enough, I think we shall have a
> separate sample for tunneling packet processing.
> 3. Currently, only the i40e NIC is tested in the sample, but other types of NICs will
> also be supported if they are able to support tunneling packet filter.
>
> v2 changes:
> Fixed an issue about the 'nb_ports' duplication in check_ports_num().
> Removed the inaccurate comment in main.c
> Fixed an issue about TSO offload.
>
> v3 changes:
> Changed some viriable name that don't follow coding rules.
> Removed the limitation of VXLAN packet size due to TSO support.
> Removed useless 'll_root_used' variable in vxlan_setup.c file.
> Removed defination and use of '_htons'.
>
> Jijiang Liu (10):
> create VXLAN sample framework using virtio device management function
> add basic VXLAN structures
> addthe pluggable structures
> implement VXLAN packet processing
> add udp port configuration
> add filter type configuration
> add tx checksum offload configuration
> add TSO offload configuration
> add Rx checksum statistics
> add encapsulation and decapsulation flags
>
>
> examples/Makefile | 1 +
> examples/tep_termination/Makefile | 55 ++
> examples/tep_termination/main.c | 1205
> ++++++++++++++++++++++++++++++++
> examples/tep_termination/main.h | 129 ++++
> examples/tep_termination/vxlan.c | 262 +++++++
> examples/tep_termination/vxlan.h | 76 ++
> examples/tep_termination/vxlan_setup.c | 444 ++++++++++++
> examples/tep_termination/vxlan_setup.h | 77 ++
> 8 files changed, 2249 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