[dpdk-dev,v2,3/5] ethdev: introduce tunnel type MPLS-in-GRE and MPLS-in-UDP
Checks
Commit Message
This patch adds new tunnel type for MPLS-in-GRE and MPLS-in-UDP.
MPLS-in-GRE protocol link:
https://tools.ietf.org/html/rfc4023
MPLS-in-UDP protocol link:
https://tools.ietf.org/html/rfc7510
Signed-off-by: Xueming Li <xuemingl@mellanox.com>
---
lib/librte_mbuf/rte_mbuf_ptype.c | 2 ++
lib/librte_mbuf/rte_mbuf_ptype.h | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 36 insertions(+)
Comments
On Tue, Apr 10, 2018 at 09:00:34PM +0800, Xueming Li wrote:
> This patch adds new tunnel type for MPLS-in-GRE and MPLS-in-UDP.
>
> MPLS-in-GRE protocol link:
> https://tools.ietf.org/html/rfc4023
>
> MPLS-in-UDP protocol link:
> https://tools.ietf.org/html/rfc7510
>
> Signed-off-by: Xueming Li <xuemingl@mellanox.com>
Minor comments below, otherwise:
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
> ---
> lib/librte_mbuf/rte_mbuf_ptype.c | 2 ++
> lib/librte_mbuf/rte_mbuf_ptype.h | 34 ++++++++++++++++++++++++++++++++++
> 2 files changed, 36 insertions(+)
>
> diff --git a/lib/librte_mbuf/rte_mbuf_ptype.c b/lib/librte_mbuf/rte_mbuf_ptype.c
> index 49106c7df..10abfe89c 100644
> --- a/lib/librte_mbuf/rte_mbuf_ptype.c
> +++ b/lib/librte_mbuf/rte_mbuf_ptype.c
> @@ -66,6 +66,8 @@ const char *rte_get_ptype_tunnel_name(uint32_t ptype)
> case RTE_PTYPE_TUNNEL_ESP: return "TUNNEL_ESP";
> case RTE_PTYPE_TUNNEL_L2TP: return "TUNNEL_L2TP";
> case RTE_PTYPE_TUNNEL_VXLAN_GPE: return "TUNNEL_VXLAN_GPE";
> + case RTE_PTYPE_TUNNEL_MPLS_IN_UDP: return "TUNNEL_MPLS-IN-UDP";
> + case RTE_PTYPE_TUNNEL_MPLS_IN_GRE: return "TUNNEL_MPLS-IN-GRE";
> default: return "TUNNEL_UNKNOWN";
> }
> }
> diff --git a/lib/librte_mbuf/rte_mbuf_ptype.h b/lib/librte_mbuf/rte_mbuf_ptype.h
> index 7caf83312..a70cc7a4e 100644
> --- a/lib/librte_mbuf/rte_mbuf_ptype.h
> +++ b/lib/librte_mbuf/rte_mbuf_ptype.h
> @@ -436,6 +436,40 @@ extern "C" {
> */
> #define RTE_PTYPE_TUNNEL_VXLAN_GPE 0x0000b000
> /**
> + * MPLS-in-GRE tunneling packet type.
How about mentioning "(RFC 4023)"?
> + *
> + * Packet format:
> + * <'ether type'=0x0800
> + * | 'version'=4, 'protocol'=47
> + * | 'protocol'=0x8847>
> + * or,
> + * <'ether type'=0x0800
> + * | 'version'=4, 'protocol'=47
> + * | 'protocol'=0x8848>
> + * or,
> + * <'ether type'=0x86DD
> + * | 'version'=6, 'protocol'=47
> + * | 'protocol'=0x8847>
> + * or,
> + * <'ether type'=0x86DD
> + * | 'version'=6, 'next header'=47
> + * | 'protocol'=0x8848>
> + */
> +#define RTE_PTYPE_TUNNEL_MPLS_IN_GRE 0x0000c000
> +/**
> + * MPLS-in-UDP tunneling packet type.
Here also with "(RFC 7510)".
> + *
> + * Packet format:
> + * <'ether type'=0x0800
> + * | 'version'=4, 'protocol'=17
> + * | 'destination port'=6635>
> + * or,
> + * <'ether type'=0x86DD
> + * | 'version'=6, 'next header'=17
> + * | 'destination port'=6635>
> + */
> +#define RTE_PTYPE_TUNNEL_MPLS_IN_UDP 0x0000d000
> +/**
> * Mask of tunneling packet types.
> */
> #define RTE_PTYPE_TUNNEL_MASK 0x0000f000
> --
> 2.13.3
>
@@ -66,6 +66,8 @@ const char *rte_get_ptype_tunnel_name(uint32_t ptype)
case RTE_PTYPE_TUNNEL_ESP: return "TUNNEL_ESP";
case RTE_PTYPE_TUNNEL_L2TP: return "TUNNEL_L2TP";
case RTE_PTYPE_TUNNEL_VXLAN_GPE: return "TUNNEL_VXLAN_GPE";
+ case RTE_PTYPE_TUNNEL_MPLS_IN_UDP: return "TUNNEL_MPLS-IN-UDP";
+ case RTE_PTYPE_TUNNEL_MPLS_IN_GRE: return "TUNNEL_MPLS-IN-GRE";
default: return "TUNNEL_UNKNOWN";
}
}
@@ -436,6 +436,40 @@ extern "C" {
*/
#define RTE_PTYPE_TUNNEL_VXLAN_GPE 0x0000b000
/**
+ * MPLS-in-GRE tunneling packet type.
+ *
+ * Packet format:
+ * <'ether type'=0x0800
+ * | 'version'=4, 'protocol'=47
+ * | 'protocol'=0x8847>
+ * or,
+ * <'ether type'=0x0800
+ * | 'version'=4, 'protocol'=47
+ * | 'protocol'=0x8848>
+ * or,
+ * <'ether type'=0x86DD
+ * | 'version'=6, 'protocol'=47
+ * | 'protocol'=0x8847>
+ * or,
+ * <'ether type'=0x86DD
+ * | 'version'=6, 'next header'=47
+ * | 'protocol'=0x8848>
+ */
+#define RTE_PTYPE_TUNNEL_MPLS_IN_GRE 0x0000c000
+/**
+ * MPLS-in-UDP tunneling packet type.
+ *
+ * Packet format:
+ * <'ether type'=0x0800
+ * | 'version'=4, 'protocol'=17
+ * | 'destination port'=6635>
+ * or,
+ * <'ether type'=0x86DD
+ * | 'version'=6, 'next header'=17
+ * | 'destination port'=6635>
+ */
+#define RTE_PTYPE_TUNNEL_MPLS_IN_UDP 0x0000d000
+/**
* Mask of tunneling packet types.
*/
#define RTE_PTYPE_TUNNEL_MASK 0x0000f000