Hi All, So far, I have not got any comments yet, which means all of you agree on the proposal of the VXLAN example? Actually, if I can get your comments as soon as possible, which can avoid a lot of discussions in formal patch set and can accelerate the development.
Thanks Jijiang Liu > -----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