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