From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40084.outbound.protection.outlook.com [40.107.4.84]) by dpdk.org (Postfix) with ESMTP id E042E1B43F for ; Mon, 14 Jan 2019 07:04:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MEhT/2d3V/77eR/fH2cTyjI0DWbUaqjonIzas/QP4+o=; b=a4AcHC9uV3XqpNLU6CKakdZydyT/+aDCIc41ggnO94B4kjB/Dc6WlVe1hO+Qf3RdqNQN43YU0to3oC+MpteZlGaVn0b02sTOClsYwVQsnVtTNGcaicC+ys23sTL6YSMd7xXf4T9BGtbKm+b1BUuU+n5BMhjCiZTQna2PQmK6Dko= Received: from DB7PR05MB4426.eurprd05.prod.outlook.com (52.134.109.15) by DB7PR05MB4986.eurprd05.prod.outlook.com (20.176.236.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.14; Mon, 14 Jan 2019 06:04:02 +0000 Received: from DB7PR05MB4426.eurprd05.prod.outlook.com ([fe80::45dd:b015:e3e2:bee3]) by DB7PR05MB4426.eurprd05.prod.outlook.com ([fe80::45dd:b015:e3e2:bee3%2]) with mapi id 15.20.1516.019; Mon, 14 Jan 2019 06:04:02 +0000 From: Shahaf Shuler To: Slava Ovsiienko , "shahaf@mellanox.com" , "ferruh.yigit@intel.com" , "wenzhuo.lu@intel.com" , "jingjing.wu@intel.com" , "bernard.iremonger@intel.com" CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2] app/testpmd: add tos and ttl field to vxlan encapsulation Thread-Index: AQHUq03qK1200E/qo0OARYJNQ5/BA6WuRvHw Date: Mon, 14 Jan 2019 06:04:02 +0000 Message-ID: References: <1546109501-24865-1-git-send-email-viacheslavo@mellanox.com> <1547390409-3530-1-git-send-email-viacheslavo@mellanox.com> In-Reply-To: <1547390409-3530-1-git-send-email-viacheslavo@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=shahafs@mellanox.com; x-originating-ip: [31.154.10.105] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB7PR05MB4986; 6:u7iocXKy6fuxrs+BEMC7vAdRYfIHa8YgNV030X1xhM7njL4y3fRN+Hnxd3td8GAc9kNizrNDqoDuZnTKQgSRZjHZcLOQhYfodhwGKSqaVs+6M570ZsG08L2OMEND9kzPZMlsYEwiCCBmIwKf3y+CoLkbZGcPnKafF37nORirDQOQbSy6no7bT0hoVl7xb410NTuQahq/7p4EXBodNVV+bg235c97fBKyKiJlTWdRkzJia7jeEsB0GZEzDbOws2mCpj4Cl5bUK/Ye7chjl0B7dWT/lkFe+hXB9nyVl9QDuh6RFipta/00NCgCRIp2cd/s5uZfKP83qWUrP6de1vdOax0T9StTEgxnsU68nbGOzx3pmJCUSREzL1sb3WrRyNt17hXdPqy2SjxA1+Duw0T62WoYUY4MgKuFL+glVCy3LnFjgXQS+ojJ/5R5K3tJGBRy0g9ETTWsVYcFaxy5nu+VLQ==; 5:K7lO/N/IyXD5f+dbO5hXyAjStim8lDxoCzuwjSO8pZSPQP8MOu6Ma0O+nDlmI5EsoENcSK/HI/ZY0zUOVE61OFNz0+Tte+HlgJXPBZrl+/FHcVaghRRw1/H+X9Q+bd2J81kHz/S+Lk+4ww7cyW+Q2O8w7ltYpo+f1US/utOI9qYCyivy4OEUVaCmSH10kqm4Qux8Kbm80Yb5sjXHKFe2eA==; 7:8WwXpBnqCFztrIAjxZHie8Slx5cLeijYU9JCW4G8I4cdq7y5fmDtDaXDpiJaylQd+6PbG7eyaPSbeXMeS2B0tzYNAeCBMBwHS2XM4yrxeD533pgTEARGrx800GulmK9dMmtnc3NrYWu0Wuk6Dw5pRA== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: b75034c9-b832-4359-c449-08d679e61541 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR05MB4986; x-ms-traffictypediagnostic: DB7PR05MB4986: x-microsoft-antispam-prvs: x-forefront-prvs: 0917DFAC67 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(376002)(346002)(136003)(366004)(189003)(199004)(6306002)(9686003)(186003)(26005)(256004)(14444005)(7696005)(476003)(102836004)(6506007)(486006)(76176011)(53936002)(575784001)(71190400001)(71200400001)(6246003)(4744004)(5660300001)(45080400002)(30864003)(2201001)(478600001)(81156014)(81166006)(305945005)(74316002)(2906002)(8936002)(7736002)(2501003)(14454004)(966005)(86362001)(4326008)(55016002)(66066001)(110136005)(33656002)(105586002)(97736004)(106356001)(68736007)(316002)(446003)(229853002)(3846002)(11346002)(6116002)(25786009)(99286004)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR05MB4986; H:DB7PR05MB4426.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: CJdA36L8IG8rClO2MbmNRRfjpb1yQp/iVLObnmWNw80KfHyWGbowXs3syN5offOSdrTeB2Rp/3vKufiLUuWHJF6sO4bcmQcK+z23umlByPjN6Vj1Iic+nc8X1QfU8iLe7omB7Ug3mDLwPcNQoeIihtAw8FvTS9RWdPVLJAT4j/8ryxPTm9PVZP2uYCSNQ5TDk9xX95eFDyt3CqnsxK6KDJlaAqzBfvy9ap12ZnQDdbX3SDpTnxwUJ+tZJIvqVmgEJ5xxpPCvDcOkQxbigaUBH6FKKl/VOLyzPR6hvXtW1qj5n+QJb8v4MGZOCbkBAtLM/BsvAhfQ3A1kLuphcYwTcw5WKm2cSGNqrZ79nfBfNXEmg1YaAgCJBbLSfn1Vehy8vrRo0UA9c8bi2Y3f+VUhVrWO+IFDo6DUMdMvpFWJmGo= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: b75034c9-b832-4359-c449-08d679e61541 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jan 2019 06:04:02.3855 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR05MB4986 Subject: Re: [dpdk-dev] [PATCH v2] app/testpmd: add tos and ttl field to vxlan encapsulation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jan 2019 06:04:04 -0000 Adding some relevant folks. Any comments or concerns on this patch?=20 Sunday, January 13, 2019 4:40 PM, Viacheslav Ovsiienko: > Subject: [dpdk-dev] [PATCH v2] app/testpmd: add tos and ttl field to vxla= n > encapsulation >=20 > The new testpmd set vxlan-tos-ttl command is added. It allows to specify = tos > and tll fields for encapsulation IP header. >=20 > IPv4 VXLAN outer header: >=20 > testpmd> set vxlan-tos-ttl ip-version ipv4 vni 4 udp-src 4 > udp-dst 4 ip-tos 0 ip-ttl 255 ip-src 127.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 >=20 > IPv6 VXLAN outer header: > testpmd> set vxlan-tos-ttl ip-version ipv6 vni 4 udp-src 4 > udp-dst 4 ip-tos 0 ip-ttl 255 ::1 ip-dst ::2222 > eth-src 11:11:11:11:11:11 eth-dst > 22:22:22:22:22:22 >=20 > Note: ip-ttl parameter corresponds the nop_limits field for IPv6. >=20 > Signed-off-by: Viacheslav Ovsiienko > --- >=20 > v2: > The patchset is splitted into two parts, one is related to mlx5 PMD, an= d > another is update for testpmd, these parts are going to be merged into > different next branches. >=20 > v1: > Original patchset: > https://emea01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fpat > ches.dpdk.org%2Fproject%2Fdpdk%2Flist%2F%3Fseries%3D2974&data > =3D02%7C01%7Cshahafs%40mellanox.com%7C8d911e89ae384e23a1f908d6796 > 50b0f%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C6368298722325 > 87143&sdata=3DEMLbTbGYyxdYdEdZ4IFsvaKoDRD4oQrmWThJD9Xqsr8%3 > D&reserved=3D0 >=20 > app/test-pmd/cmdline.c | 63 > +++++++++++++++++++++++++++++ > app/test-pmd/cmdline_flow.c | 32 +++++++++++++++ > app/test-pmd/testpmd.c | 3 ++ > app/test-pmd/testpmd.h | 3 ++ > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 16 ++++++++ > 5 files changed, 117 insertions(+) >=20 > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index > 3ddc3e0..9e9e898 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -794,6 +794,12 @@ static void cmd_help_long_parsed(void > *parsed_result, > " eth-dst (eth-dst)\n" > " Configure the VXLAN encapsulation for > flows.\n\n" >=20 > + "vxlan-tos-ttl ip-version (ipv4|ipv6) vni (vni) udp-src" > + " (udp-src) udp-dst (udp-dst) ip-tos (ip-tos) ip-ttl (ip- > ttl)" > + " ip-src (ip-src) ip-dst (ip-dst) eth-src (eth-src)" > + " eth-dst (eth-dst)\n" > + " Configure the VXLAN encapsulation for > flows.\n\n" > + > "nvgre ip-version (ipv4|ipv6) tni (tni) ip-src" > " (ip-src) ip-dst (ip-dst) eth-src (eth-src) eth-dst" > " (eth-dst)\n" > @@ -15034,6 +15040,8 @@ struct cmd_set_vxlan_result { > cmdline_ipaddr_t ip_src; > cmdline_ipaddr_t ip_dst; > uint16_t tci; > + uint8_t tos; > + uint8_t ttl; > struct ether_addr eth_src; > struct ether_addr eth_dst; > }; > @@ -15042,6 +15050,9 @@ struct cmd_set_vxlan_result { > TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, set, > "set"); cmdline_parse_token_string_t cmd_set_vxlan_vxlan =3D > TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, > "vxlan"); > +cmdline_parse_token_string_t cmd_set_vxlan_vxlan_tos_ttl =3D > + TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, > + "vxlan-tos-ttl"); > cmdline_parse_token_string_t cmd_set_vxlan_vxlan_with_vlan =3D > TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, > "vxlan-with-vlan"); > @@ -15066,6 +15077,16 @@ struct cmd_set_vxlan_result { > "udp-dst"); > cmdline_parse_token_num_t cmd_set_vxlan_udp_dst_value =3D > TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, udp_dst, > UINT16); > +cmdline_parse_token_string_t cmd_set_vxlan_ip_tos =3D > + TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, > pos_token, > + "ip-tos"); > +cmdline_parse_token_num_t cmd_set_vxlan_ip_tos_value =3D > + TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, tos, UINT8); > +cmdline_parse_token_string_t cmd_set_vxlan_ip_ttl =3D > + TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, > pos_token, > + "ip-ttl"); > +cmdline_parse_token_num_t cmd_set_vxlan_ip_ttl_value =3D > + TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, ttl, UINT8); > cmdline_parse_token_string_t cmd_set_vxlan_ip_src =3D > TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, > pos_token, > "ip-src"); > @@ -15104,10 +15125,15 @@ static void cmd_set_vxlan_parsed(void > *parsed_result, > .vxlan_id =3D rte_cpu_to_be_32(res->vni) & > RTE_BE32(0x00ffffff), > }; >=20 > + vxlan_encap_conf.select_tos =3D 0; > if (strcmp(res->vxlan, "vxlan") =3D=3D 0) > vxlan_encap_conf.select_vlan =3D 0; > else if (strcmp(res->vxlan, "vxlan-with-vlan") =3D=3D 0) > vxlan_encap_conf.select_vlan =3D 1; > + else if (strcmp(res->vxlan, "vxlan-tos-ttl") =3D=3D 0) { > + vxlan_encap_conf.select_vlan =3D 0; > + vxlan_encap_conf.select_tos =3D 1; > + } > if (strcmp(res->ip_version, "ipv4") =3D=3D 0) > vxlan_encap_conf.select_ipv4 =3D 1; > else if (strcmp(res->ip_version, "ipv6") =3D=3D 0) @@ -15117,6 +15143,8 > @@ static void cmd_set_vxlan_parsed(void *parsed_result, > rte_memcpy(vxlan_encap_conf.vni, &id.vni[1], 3); > vxlan_encap_conf.udp_src =3D rte_cpu_to_be_16(res->udp_src); > vxlan_encap_conf.udp_dst =3D rte_cpu_to_be_16(res->udp_dst); > + vxlan_encap_conf.ip_tos =3D res->tos; > + vxlan_encap_conf.ip_ttl =3D res->ttl; > if (vxlan_encap_conf.select_ipv4) { > IPV4_ADDR_TO_UINT(res->ip_src, > vxlan_encap_conf.ipv4_src); > IPV4_ADDR_TO_UINT(res->ip_dst, > vxlan_encap_conf.ipv4_dst); @@ -15161,6 +15189,40 @@ static void > cmd_set_vxlan_parsed(void *parsed_result, > }, > }; >=20 > +cmdline_parse_inst_t cmd_set_vxlan_tos_ttl =3D { > + .f =3D cmd_set_vxlan_parsed, > + .data =3D NULL, > + .help_str =3D "set vxlan-tos-ttl ip-version ipv4|ipv6 vni udp-src= " > + " udp-dst ip-tos ip-ttl " > + " ip-src ip-dst eth-src " > + " eth-dst ", > + .tokens =3D { > + (void *)&cmd_set_vxlan_set, > + (void *)&cmd_set_vxlan_vxlan_tos_ttl, > + (void *)&cmd_set_vxlan_ip_version, > + (void *)&cmd_set_vxlan_ip_version_value, > + (void *)&cmd_set_vxlan_vni, > + (void *)&cmd_set_vxlan_vni_value, > + (void *)&cmd_set_vxlan_udp_src, > + (void *)&cmd_set_vxlan_udp_src_value, > + (void *)&cmd_set_vxlan_udp_dst, > + (void *)&cmd_set_vxlan_udp_dst_value, > + (void *)&cmd_set_vxlan_ip_tos, > + (void *)&cmd_set_vxlan_ip_tos_value, > + (void *)&cmd_set_vxlan_ip_ttl, > + (void *)&cmd_set_vxlan_ip_ttl_value, > + (void *)&cmd_set_vxlan_ip_src, > + (void *)&cmd_set_vxlan_ip_src_value, > + (void *)&cmd_set_vxlan_ip_dst, > + (void *)&cmd_set_vxlan_ip_dst_value, > + (void *)&cmd_set_vxlan_eth_src, > + (void *)&cmd_set_vxlan_eth_src_value, > + (void *)&cmd_set_vxlan_eth_dst, > + (void *)&cmd_set_vxlan_eth_dst_value, > + NULL, > + }, > +}; > + > cmdline_parse_inst_t cmd_set_vxlan_with_vlan =3D { > .f =3D cmd_set_vxlan_parsed, > .data =3D NULL, > @@ -18696,6 +18758,7 @@ struct cmd_show_tx_metadata_result { > (cmdline_parse_inst_t *)&cmd_set_port_tm_hierarchy_default, > #endif > (cmdline_parse_inst_t *)&cmd_set_vxlan, > + (cmdline_parse_inst_t *)&cmd_set_vxlan_tos_ttl, > (cmdline_parse_inst_t *)&cmd_set_vxlan_with_vlan, > (cmdline_parse_inst_t *)&cmd_set_nvgre, > (cmdline_parse_inst_t *)&cmd_set_nvgre_with_vlan, diff --git > a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index > 659908f..97ecc8a 100644 > --- a/app/test-pmd/cmdline_flow.c > +++ b/app/test-pmd/cmdline_flow.c > @@ -3501,6 +3501,38 @@ static int comp_vc_action_rss_queue(struct > context *, const struct token *, > if (!vxlan_encap_conf.select_vlan) > action_vxlan_encap_data->items[1].type =3D > RTE_FLOW_ITEM_TYPE_VOID; > + if (vxlan_encap_conf.select_tos) { > + if (vxlan_encap_conf.select_ipv4) { > + static struct rte_flow_item_ipv4 ipv4_mask_tos; > + > + memcpy(&ipv4_mask_tos, > &rte_flow_item_ipv4_mask, > + sizeof(ipv4_mask_tos)); > + ipv4_mask_tos.hdr.type_of_service =3D 0xff; > + ipv4_mask_tos.hdr.time_to_live =3D 0xff; > + action_vxlan_encap_data- > >item_ipv4.hdr.type_of_service =3D > + vxlan_encap_conf.ip_tos; > + action_vxlan_encap_data- > >item_ipv4.hdr.time_to_live =3D > + vxlan_encap_conf.ip_ttl; > + action_vxlan_encap_data->items[2].mask =3D > + &ipv4_mask_tos; > + } else { > + static struct rte_flow_item_ipv6 ipv6_mask_tos; > + > + memcpy(&ipv6_mask_tos, > &rte_flow_item_ipv6_mask, > + sizeof(ipv6_mask_tos)); > + ipv6_mask_tos.hdr.vtc_flow |=3D > + RTE_BE32(0xfful << IPV6_HDR_TC_SHIFT); > + ipv6_mask_tos.hdr.hop_limits =3D 0xff; > + action_vxlan_encap_data->item_ipv6.hdr.vtc_flow > |=3D > + rte_cpu_to_be_32 > + ((uint32_t)vxlan_encap_conf.ip_tos > << > + IPV6_HDR_TC_SHIFT); > + action_vxlan_encap_data->item_ipv6.hdr.hop_limits > =3D > + vxlan_encap_conf.ip_ttl; > + action_vxlan_encap_data->items[2].mask =3D > + &ipv6_mask_tos; > + } > + } > memcpy(action_vxlan_encap_data->item_vxlan.vni, > vxlan_encap_conf.vni, > RTE_DIM(vxlan_encap_conf.vni)); > action->conf =3D &action_vxlan_encap_data->conf; diff --git > a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index > 15a9488..2638d06 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -469,6 +469,7 @@ struct rte_fdir_conf fdir_conf =3D { struct > vxlan_encap_conf vxlan_encap_conf =3D { > .select_ipv4 =3D 1, > .select_vlan =3D 0, > + .select_tos =3D 0, > .vni =3D "\x00\x00\x00", > .udp_src =3D 0, > .udp_dst =3D RTE_BE16(4789), > @@ -479,6 +480,8 @@ struct vxlan_encap_conf vxlan_encap_conf =3D { > .ipv6_dst =3D "\x00\x00\x00\x00\x00\x00\x00\x00" > "\x00\x00\x00\x00\x00\x00\x11\x11", > .vlan_tci =3D 0, > + .ip_tos =3D 0, > + .ip_ttl =3D 255, > .eth_src =3D "\x00\x00\x00\x00\x00\x00", > .eth_dst =3D "\xff\xff\xff\xff\xff\xff", }; diff --git a/app/test- > pmd/testpmd.h b/app/test-pmd/testpmd.h index 3ff11e6..559f2aa 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -488,6 +488,7 @@ struct gso_status { > struct vxlan_encap_conf { > uint32_t select_ipv4:1; > uint32_t select_vlan:1; > + uint32_t select_tos:1; > uint8_t vni[3]; > rte_be16_t udp_src; > rte_be16_t udp_dst; > @@ -496,6 +497,8 @@ struct vxlan_encap_conf { > uint8_t ipv6_src[16]; > uint8_t ipv6_dst[16]; > rte_be16_t vlan_tci; > + uint8_t ip_tos; > + uint8_t ip_ttl; > uint8_t eth_src[ETHER_ADDR_LEN]; > uint8_t eth_dst[ETHER_ADDR_LEN]; > }; > diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > index 854af2d..0291480 100644 > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > @@ -1583,6 +1583,10 @@ Configure the outer layer to encapsulate a packet > inside a VXLAN tunnel:: > udp-dst (udp-dst) ip-src (ip-src) ip-dst (ip-dst) vlan-tci (vlan-tci) \ > eth-src (eth-src) eth-dst (eth-dst) >=20 > + set vxlan-tos-ttl ip-version (ipv4|ipv6) vni (vni) udp-src (udp-src) \ > + udp-dst (udp-dst) ip-tos (ip-tos) ip-ttl (ip-ttl) ip-src (ip-src) \ > + ip-dst (ip-dst) eth-src (eth-src) eth-dst (eth-dst) > + > Those command will set an internal configuration inside testpmd, any > following flow rule using the action vxlan_encap will use the last > configuration set. > To have a different encapsulation header, one of those commands must be > called @@ -4241,6 +4245,12 @@ IPv4 VXLAN outer header:: > testpmd> flow create 0 ingress pattern end actions vxlan_encap / > queue index 0 / end >=20 > + testpmd> set vxlan-tos-ttl ip-version ipv4 vni 4 udp-src 4 udp-dst 4 > + testpmd> ip-tos 0 > + ip-ttl 255 ip-src 127.0.0.1 ip-dst 128.0.0.1 eth-src 11:11:11:1= 1:11:11 > + eth-dst 22:22:22:22:22:22 > + testpmd> flow create 0 ingress pattern end actions vxlan_encap / > + queue index 0 / end > + > IPv6 VXLAN outer header:: >=20 > testpmd> set vxlan ip-version ipv6 vni 4 udp-src 4 udp-dst 4 ip-src ::1= @@ - > 4254,6 +4264,12 @@ IPv6 VXLAN outer header:: > testpmd> flow create 0 ingress pattern end actions vxlan_encap / > queue index 0 / end >=20 > + testpmd> set vxlan-tos-ttl ip-version ipv6 vni 4 udp-src 4 udp-dst 4 > + ip-tos 0 ip-ttl 255 ::1 ip-dst ::2222 eth-src 11:11:11:11:11:11 > + eth-dst 22:22:22:22:22:22 > + testpmd> flow create 0 ingress pattern end actions vxlan_encap / > + queue index 0 / end > + > Sample NVGRE encapsulation rule > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >=20 > -- > 1.8.3.1