From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by dpdk.org (Postfix) with ESMTP id 3685A1BEA9 for ; Thu, 5 Jul 2018 22:16:58 +0200 (CEST) Received: by mail-wr1-f68.google.com with SMTP id h10-v6so2051764wrq.8 for ; Thu, 05 Jul 2018 13:16:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=yrQP4Qdc8eEU1tqH4/lv2x2OsMKQzzFxi/ykRF2vhSE=; b=WJP4VNZwa0YoCHbgvyOLzNZuB2FPUCtiLolv4ZWHFOwOacrNoxNz1cbu7IN1E65l20 LhAm8vXG8A0i2/gBIkcOTU+CIe2G/0vACjQAJdQKMNzG8RFS9CznM9PrSlOuHsbxbJXU mx6lLAUtwsbsK9okhZVKJ4oz9ECU6q+q0nz469CkfregjBPaBZdWxT9hsxW/avw6GVL+ NmucTlSoVT+uyxIsNmVFuCvk7kPHYmawQ5wDDKZVSsB7jlLbmnBDV3yM1GqRHV9Hhn4R N20Kc3/9/o40n4hEe/DBfrkpivBEmNbD1hASH3oiuUqNq/Kr8KX/zIBY+03vMHqJtPZc Rqzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=yrQP4Qdc8eEU1tqH4/lv2x2OsMKQzzFxi/ykRF2vhSE=; b=o5nlFuf09pjzJ8wCGtu6I+g2/Nz48BThf5UvbCIwpQtLoukdpqQqKgAZ2lOb6GWliy novd5O8AxfakwwzBgKOrohFtZoqaWPehFhE706xLlsQSy5DXDU8STyUlTerb2IfrdI+g KzzTKheo/o/gbmqyYcApdMpI1urdEsHffJB5jUaq8XG1/0LAVsRrB3yIeoCZ4RiiKC/S 6Uc6n1HgZNZiZT24QVuJD2beesW2SwOc5VTDFXEHow4dF4Z9Hf3jN0ytbHNNPFhryBcy 2T4Vsq9gZw6d1C4D9rwM4luL8MHVVuNzuWoVU19lkPBhrKiFYPC2XK126Q2XY/7SaQKB gREA== X-Gm-Message-State: APt69E158p3mYjqm6S+4jsFxG88T/kdv01PAvk+NOgoAj0jSHGiyqDdt ptsRJQJe6htWeyLOA1hU5+H4qw== X-Google-Smtp-Source: AAOMgpcJZwWf4LCFO2LxjPcjzmQELhnVjVfbVsPbyklCzA3XikMo2A8QZvyUAoJTUpNmAHA84NBz3g== X-Received: by 2002:a5d:6550:: with SMTP id z16-v6mr5356688wrv.194.1530821817905; Thu, 05 Jul 2018 13:16:57 -0700 (PDT) Received: from 6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id s41-v6sm12569017wrc.5.2018.07.05.13.16.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 05 Jul 2018 13:16:56 -0700 (PDT) Date: Thu, 5 Jul 2018 22:16:40 +0200 From: Adrien Mazarguil To: Rahul Lakkireddy Cc: Jack Min , "dev@dpdk.org" , Shagun Agarwal , Indranil Choudhury , Nirranjan Kirubaharan , Shahaf Shuler , "Xueming(Steven) Li" Message-ID: <20180705201640.GR4025@6wind.com> References: <20180702120421.GA28446@chelsio.com> <20180703133920.GA15447@chelsio.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180703133920.GA15447@chelsio.com> Subject: Re: [dpdk-dev] [RFC 0/3] ethdev: add IP address and TCP/UDP port rewrite actions to flow API 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: Thu, 05 Jul 2018 20:16:58 -0000 On Tue, Jul 03, 2018 at 07:09:22PM +0530, Rahul Lakkireddy wrote: > On Tuesday, July 07/03/18, 2018 at 07:57:55 +0530, Jack Min wrote: > > Hey Rahul, > > > > Thank you, those two are the ways to achieve that. > > > > Personally I prefer the option 1 but with a little bit difference, something like: > > > > struct rte_flow_action_of_set_nw_ipv4 { > > uint32_t ipv4_addr; > > uint8_t level; /* 0 - outer (default), 1 - inner, 2 -255 deeper if available */ > > }; > > > > What do you think ? > > > > Looks good. I'll update the API and use the above approach in v2. I still haven't looked at the original proposal (will get there eventually), however keep in mind the presence of "OF" in action names stands for "OpenFlow". Since you chose this route, these actions must be implemented exactly as defined by the OpenFlow specification, which comprises their name, input parameters and behavior. For instance there is no support/distinction for IPv6. NW actions must be named OF_SET_NW_SRC and OF_SET_NW_DST, only support IPv4 (a single be32) and not have the ability to tell inner from outer as it's unspecified (note a safe approach would be to interpret this as "outermost" given the tendency of OpenFlow actions to prepend empty headers and modify them afterward). In short you can't be creative if you want to keep the OF prefix. My suggestion would be to stick with OF if your target use case is OVS and implement these actions exactly as defined by OpenFlow, even if it means limitations due to API (not HW) constraints. Not having to spend time to figure how to map OF actions to rte_flow and handle quirks on both sides should be much more convenient to users, particularly so if these actions bear the same name. > > > -----Original Message----- > > > From: Rahul Lakkireddy > > > Sent: July 2, 2018 20:04 > > > To: Jack Min > > > Cc: dev@dpdk.org; Shagun Agarwal ; Indranil Choudhury > > > ; Nirranjan Kirubaharan ; Shahaf > > > Shuler ; Xueming(Steven) Li > > > Subject: Re: [dpdk-dev] [RFC 0/3] ethdev: add IP address and TCP/UDP port > > > rewrite actions to flow API > > > > > > Hi Jack, > > > > > > On Monday, July 07/02/18, 2018 at 14:39:06 +0530, Jack Min wrote: > > > > Hey, > > > > > > > > I've one question: > > > > > > > > Do those APIs support modify inner IP headers? > > > > > > > > > > I'm afraid not. These API only modify outer IP addresses. > > > > > > I can think of two ways to achieve this: > > > > > > 1. Enhance these API to accept an additional flag to indicate > > > inner or outer. For example, to set inner IPv4 address, we can > > > set inner to 1 in following structure. > > > > > > struct rte_flow_action_of_set_nw_ipv4 { > > > uint32_t inner:1; /* 1 - Inner, 0 - Outer */ > > > uint32_t reserved:31; > > > uint32_t ipv4_addr; > > > }; > > > > > > 2. Add new actions to indicate inner IP addresses; i.e. > > > > > > RTE_FLOW_ACTION_TYPE_OF_SET_INNER_NW_IPV4_SRC > > > RTE_FLOW_ACTION_TYPE_OF_SET_INNER_NW_IPV4_DST > > > RTE_FLOW_ACTION_TYPE_OF_SET_INNER_NW_IPV6_SRC > > > RTE_FLOW_ACTION_TYPE_OF_SET_INNER_NW_IPV6_DST > > > > > > Thanks, > > > Rahul > > > > > > > In our scenarios, we need to specific that NAT action is on inner or outer IP > > > header. > > > > > > > > Thanks, > > > > -Jack > > > > > > > > > -----Original Message----- > > > > > From: dev On Behalf Of Rahul Lakkireddy > > > > > Sent: June 22, 2018 17:56 > > > > > To: dev@dpdk.org > > > > > Cc: shaguna@chelsio.com; indranil@chelsio.com; nirranjan@chelsio.com > > > > > Subject: [dpdk-dev] [RFC 0/3] ethdev: add IP address and TCP/UDP > > > > > port rewrite actions to flow API > > > > > > > > > > This series of patches add support for actions: > > > > > - OF_SET_NW_IPV4_SRC - set a new IPv4 source address. > > > > > - OF_SET_NW_IPV4_DST - set a new IPv4 destination address. > > > > > - OF_SET_NW_IPV6_SRC - set a new IPv6 source address. > > > > > - OF_SET_NW_IPV6_DST - set a new IPv6 destination address. > > > > > - OF_SET_TP_SRC - set a new TCP/UDP source port number. > > > > > - OF_SET_TP_DST - set a new TCP/UDP destination port number. > > > > > > > > > > These actions are useful in Network Address Translation use case to > > > > > edit IP address and TCP/UDP port numbers before switching the > > > > > packets out to the destination device port. > > > > > > > > > > The IP address and TCP/UDP port rewrite actions are based on > > > > > OFPAT_SET_NW_SRC, OFPAT_SET_NW_DST, OFPAT_SET_TP_SRC, and > > > > > OFPAT_SET_TP_DST actions from OpenFlow Specification [1]. > > > > > > > > > > Patch 1 adds support for IP address rewrite to rte_flow and testpmd. > > > > > > > > > > Patch 2 adds support for TCP/UDP port rewrite to rte_flow and testpmd. > > > > > > > > > > Patch 3 shows CXGBE PMD example to offload these actions to hardware. > > > > > > > > > > Feedback and suggestions will be much appreciated. > > > > > > > > > > Thanks, > > > > > Rahul > > > > > > > > > > [1] > > > > > https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fww > > > > > w.open > > > > > networking.org%2Fimages%2Fopenflow-switch- > > > > > > > > v1.5.1.pdf&data=02%7C01%7Cxuemingl%40mellanox.com%7C74c8ce3b79954b2f > > > > > > > > 123208d5d8268617%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C1%7C636 > > > > > > > > 652582334142929&sdata=uoFc1KjVTkGI9fdaPNXvXYRmh%2F6HLMKT79IwgvDSH > > > > > 0k%3D&reserved=0 > > > > > > > > > > Shagun Agrawal (3): > > > > > ethdev: add flow api actions to modify IP addresses > > > > > ethdev: add flow api actions to modify TCP/UDP port numbers > > > > > net/cxgbe: add flow actions to modify IP and TCP/UDP port address > > > > > > > > > > app/test-pmd/cmdline_flow.c | 150 > > > > > ++++++++++++++++++++++++++++ > > > > > app/test-pmd/config.c | 12 +++ > > > > > doc/guides/prog_guide/rte_flow.rst | 102 +++++++++++++++++++ > > > > > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 24 +++++ > > > > > drivers/net/cxgbe/base/common.h | 1 + > > > > > drivers/net/cxgbe/base/t4fw_interface.h | 50 ++++++++++ > > > > > drivers/net/cxgbe/cxgbe_filter.c | 23 ++++- > > > > > drivers/net/cxgbe/cxgbe_filter.h | 26 ++++- > > > > > drivers/net/cxgbe/cxgbe_flow.c | 127 +++++++++++++++++++++++ > > > > > drivers/net/cxgbe/cxgbe_main.c | 10 ++ > > > > > lib/librte_ethdev/rte_flow.c | 12 +++ > > > > > lib/librte_ethdev/rte_flow.h | 92 +++++++++++++++++ > > > > > 12 files changed, 625 insertions(+), 4 deletions(-) > > > > > > > > > > -- > > > > > 2.14.1 > > > > -- Adrien Mazarguil 6WIND