This series adds an easy and maintainable configuration version support for
those two actions for 18.08 by using global variables in testpmd to store the
necessary information for the tunnel encapsulation.  Those variables are used
in conjunction of RTE_FLOW_ACTION_{VXLAN,NVGRE}_ENCAP action to create easily
the action for flows.

A common way to use it:

 set vxlan ip-version ipv4 vni 4 udp-src 4 udp-dst 4 ip-src 27.0.0.1
        ip-dst 128.0.0.1 eth-src 11:11:11:11:11:11 eth-dst 22:22:22:22:22:22
 flow create 0 ingress pattern end actions vxlan_encap /
        queue index 0 / end

 set vxlan-with-vlan ip-version ipv4 vni 4 udp-src 4 udp-dst 4 p-src
         127.0.0.1 ip-dst 128.0.0.1 vlan-tci 34 eth-src 11:11:11:11:11:11
         eth-dst 22:22:22:22:22:22
 flow create 0 ingress pattern end actions vxlan_encap /
         queue index 0 / end

 set vxlan ip-version ipv6 vni 4 udp-src 4 udp-dst 4 ip-src ::1
        ip-dst ::2222 eth-src 11:11:11:11:11:11 eth-dst 22:22:22:22:22:22
 flow create 0 ingress pattern end actions vxlan_encap /
         queue index 0 / end

 set vxlan-with-vlan ip-version ipv6 vni 4 udp-src 4 udp-dst 4
         ip-src ::1 ip-dst ::2222 vlan-tci 34 eth-src 11:11:11:11:11:11
         eth-dst 22:22:22:22:22:22
 flow create 0 ingress pattern end actions vxlan_encap /
         queue index 0 / end

This also replace the proposal done by Mohammad Abdul Awal [1] which handles
in a more complex way for the same work.

Note this API has already a modification planned for 18.11 [2] thus those
series should have a limited life for a single release.

[1] https://dpdk.org/ml/archives/dev/2018-May/101403.html
[2] https://dpdk.org/ml/archives/dev/2018-June/103485.html

Changes in v9:

- fix the help for NVGRE.

Changes in v8:

- add static tokens in the command line to be user friendly.

Changes in v7:

- add missing documentation added in v5 and removed in v6 by mistake.

Changes in v6:

- fix compilation under redhat 7.5 with gcc 4.8.5 20150623

Changes in v5:

- fix documentation generation.
- add more explanation on how to generate several encapsulated flows.

Changes in v4:

- fix big endian issue on vni and tni.
- add samples to the documentation.
- set the VXLAN UDP source port to 0 by default to let the driver generate it
  from the inner hash as described in the RFC 7348.
- use default rte flow mask for each item.

Changes in v3:

- support VLAN in the outer encapsulation.
- fix the documentation with missing arguments.

Changes in v2:

- add default IPv6 values for NVGRE encapsulation.
- replace VXLAN to NVGRE in comments concerning NVGRE layer.


Nelio Laranjeiro (2):
  app/testpmd: add VXLAN encap/decap support
  app/testpmd: add NVGRE encap/decap support

 app/test-pmd/cmdline.c                      | 345 ++++++++++++++++++++
 app/test-pmd/cmdline_flow.c                 | 274 ++++++++++++++++
 app/test-pmd/testpmd.c                      |  32 ++
 app/test-pmd/testpmd.h                      |  32 ++
 doc/guides/testpmd_app_ug/testpmd_funcs.rst | 107 ++++++
 5 files changed, 790 insertions(+)

-- 
2.18.0

Reply via email to