[dpdk-dev] [PATCH v4 2/2] app/testpmd: add NVGRE encap/decap support

Nélio Laranjeiro nelio.laranjeiro at 6wind.com
Tue Jun 26 17:15:58 CEST 2018


Hi,

On Tue, Jun 26, 2018 at 12:48:42PM +0000, Iremonger, Bernard wrote:
> Hi Nelio,
> 
> > -----Original Message-----
> > From: Nelio Laranjeiro [mailto:nelio.laranjeiro at 6wind.com]
> > Sent: Thursday, June 21, 2018 8:14 AM
> > To: dev at dpdk.org; Adrien Mazarguil <adrien.mazarguil at 6wind.com>; Lu,
> > Wenzhuo <wenzhuo.lu at intel.com>; Wu, Jingjing <jingjing.wu at intel.com>;
> > Iremonger, Bernard <bernard.iremonger at intel.com>; Awal, Mohammad Abdul
> > <mohammad.abdul.awal at intel.com>; Ori Kam <orika at mellanox.com>;
> > Stephen Hemminger <stephen at networkplumber.org>
> > Subject: [PATCH v4 2/2] app/testpmd: add NVGRE encap/decap support
> > 
> > Due to the complex NVGRE_ENCAP flow action and based on the fact testpmd
> > does not allocate memory, this patch adds a new command in testpmd to
> > initialise a global structure containing the necessary information to make the
> > outer layer of the packet.  This same global structure will then be used by the
> > flow command line in testpmd when the action nvgre_encap will be parsed, at
> > this point, the conversion into such action becomes trivial.
> > 
> > This global structure is only used for the encap action.
> > 
> > Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro at 6wind.com>
> > ---
> >  app/test-pmd/cmdline.c                      | 118 ++++++++++++++++++
> >  app/test-pmd/cmdline_flow.c                 | 129 ++++++++++++++++++++
> >  app/test-pmd/testpmd.c                      |  15 +++
> >  app/test-pmd/testpmd.h                      |  15 +++
> >  doc/guides/testpmd_app_ug/testpmd_funcs.rst |  37 ++++++
> >  5 files changed, 314 insertions(+)
> 
> <snip>
> 
> > diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> > b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> > index 2743043d3..17e0fef63 100644
> > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> > @@ -1542,6 +1542,14 @@ Configure the outer layer to encapsulate a packet
> > inside a VXLAN tunnel::
> >   testpmd> set vxlan ipv4|ipv6 (vni) (udp-src) (udp-dst) (ip-src) (ip-dst) (mac-src)
> > (mac-dst)
> >   testpmd> set vxlan-with-vlan ipv4|ipv6 (vni) (udp-src) (udp-dst) (ip-src) (ip-dst)
> > (vlan-tci) (mac-src) (mac-dst)
> > 
> > +Config NVGRE Encap outer layers
> > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > +
> > +Configure the outer layer to encapsulate a packet inside a NVGRE tunnel::
> > +
> > + testpmd> set nvgre ipv4|ipv6 (tni) (ip-src) (ip-dst) (mac-src)
> > + testpmd> (mac-dst) set nvgre-with-vlan ipv4|ipv6 (tni) (ip-src)
> > + testpmd> (ip-dst) (vlan-tci) (mac-src) (mac-dst)
> > +
> >  Port Functions
> >  --------------
> > 
> > @@ -3663,6 +3671,12 @@ This section lists supported actions and their
> > attributes, if any.
> >  - ``vxlan_decap``: Performs a decapsulation action by stripping all headers of
> >    the VXLAN tunnel network overlay from the matched flow.
> > 
> > +- ``nvgre_encap``: Performs a NVGRE encapsulation, outer layer
> > +configuration
> > +  is done through `Config NVGRE Encap outer layers`_.
> > +
> > +- ``nvgre_decap``: Performs a decapsulation action by stripping all
> > +headers of
> > +  the NVGRE tunnel network overlay from the matched flow.
> > +
> >  Destroying flow rules
> >  ~~~~~~~~~~~~~~~~~~~~~
> > 
> > @@ -3950,6 +3964,29 @@ IPv6 VXLAN outer header::
> >    testpmd> set vxlan-with-vlan ipv6 4 4 4 ::1 ::2222 34 11:11:11:11:11:11
> > 22:22:22:22:22:22
> >    testpmd> flow create 0 ingress pattern end actions vxlan_encap / queue index
> > 0 / end
> > 
> > +Sample NVGRE encapsulation rule
> > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > +
> > +NVGRE encapsulation outer layer has default value pre-configured in
> > +testpmd source code, those can be changed by using the following commands::
> 
> make doc-guides-html
> sphinx processing guides-html...
> dpdk/doc/guides/testpmd_app_ug/testpmd_funcs.rst:3973: WARNING: Literal block expected; none found.

I will fix it in the v5 among with the VXLAN issue you pointed out in
the second patch.

> 
> > +
> > +IPv4 NVGRE outer header::
> > +
> > +  testpmd> set nvgre ipv4 4 127.0.0.1 128.0.0.1 11:11:11:11:11:11
> > + 22:22:22:22:22:22  testpmd> flow create 0 ingress pattern end actions
> > + nvgre_encap / queue index 0 / end
> > +
> > +  testpmd> set nvgre-with-vlan 4 127.0.0.1 128.0.0.1 34
> > + 11:11:11:11:11:11 22:22:22:22:22:22  testpmd> flow create 0 ingress
> > + pattern end actions vxlan_encap / queue index 0 / end
> > +
> > +IPv6 NVGRE outer header::
> > +
> > +  testpmd> set nvgre ipv6 4 ::1 ::2222 11:11:11:11:11:11
> > + 22:22:22:22:22:22  testpmd> flow create 0 ingress pattern end actions
> > + vxlan_encap / queue index 0 / end
> > +
> > +  testpmd> set nvgre-with-vlan ipv6 4 ::1 ::2222 34 11:11:11:11:11:11
> > + 22:22:22:22:22:22  testpmd> flow create 0 ingress pattern end actions
> > + vxlan_encap / queue index 0 / end
> > +
> > +
> >  BPF Functions
> >  --------------
> > 
> > --
> > 2.18.0.rc2
> 
> Regards,
> 
> Bernard.
> 

Thanks,

-- 
Nélio Laranjeiro
6WIND


More information about the dev mailing list