[dpdk-dev] [PATCH v5 1/3] app/testpmd: add GENEVE parsing

Ferruh Yigit ferruh.yigit at intel.com
Tue Oct 6 16:30:43 CEST 2020


On 9/18/2020 3:17 PM, Ophir Munk wrote:
> From: Ophir Munk <ophirmu at mellanox.com>
> 
> GENEVE is a widely used tunneling protocol in modern Virtualized
> Networks. testpmd already supports parsing of several tunneling
> protocols including VXLAN, VXLAN-GPE, GRE. This commit adds GENEVE
> parsing of inner protocols (IPv4-0x0800, IPv6-0x86dd, Ethernet-0x6558)
> based on IETF draft-ietf-nvo3-geneve-09. GENEVE is considered more
> flexible than the other protocols.  In terms of protocol format GENEVE
> header has a variable length options as opposed to other tunneling
> protocols which have a fixed header size.
> 
> Signed-off-by: Ophir Munk <ophirmu at mellanox.com>
> ---
>   app/test-pmd/csumonly.c     | 70 ++++++++++++++++++++++++++++++++++++++++++++-
>   app/test-pmd/testpmd.h      |  1 +
>   lib/librte_net/meson.build  |  3 +-
>   lib/librte_net/rte_geneve.h | 66 ++++++++++++++++++++++++++++++++++++++++++
>   4 files changed, 138 insertions(+), 2 deletions(-)
>   create mode 100644 lib/librte_net/rte_geneve.h
> 
> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
> index 7ece398..a9f33c6 100644
> --- a/app/test-pmd/csumonly.c
> +++ b/app/test-pmd/csumonly.c
> @@ -43,6 +43,7 @@
>   #include <rte_flow.h>
>   #include <rte_gro.h>
>   #include <rte_gso.h>
> +#include <rte_geneve.h>
>   
>   #include "testpmd.h"
>   
> @@ -63,6 +64,7 @@
>   #endif
>   
>   uint16_t vxlan_gpe_udp_port = 4790;
> +uint16_t geneve_udp_port = RTE_GENEVE_DEFAULT_PORT;
>   

There is a testpmd command to configure the NIC for GENEVE port,
"port config (port_id) udp_tunnel_port add|rm vxlan|geneve|vxlan-gpe (udp_port)"

You are adding support to testpmd to parse the GENEVE packets, but I think these 
two commads should be consistent.

What do you think "port config N add geneve X" update the 'geneve_udp_port=X"?

<...>


> @@ -865,9 +925,17 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
>   				}
>   				parse_vxlan(udp_hdr, &info,
>   					    m->packet_type);
> -				if (info.is_tunnel)
> +				if (info.is_tunnel) {
>   					tx_ol_flags |=
>   						PKT_TX_TUNNEL_VXLAN;
> +					goto tunnel_update;
> +				}
> +				parse_geneve(udp_hdr, &info);
> +				if (info.is_tunnel) {
> +					tx_ol_flags |=
> +						PKT_TX_TUNNEL_GENEVE;
> +					goto tunnel_update;
> +				}

Can you please update the "csum parse-tunnel" documentation to mention "geneve" 
protocol?


More information about the dev mailing list