From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B3C9841B8A; Tue, 31 Jan 2023 09:46:12 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9321740E28; Tue, 31 Jan 2023 09:46:12 +0100 (CET) Received: from mail-vs1-f52.google.com (mail-vs1-f52.google.com [209.85.217.52]) by mails.dpdk.org (Postfix) with ESMTP id 2109A40DFB for ; Tue, 31 Jan 2023 09:46:11 +0100 (CET) Received: by mail-vs1-f52.google.com with SMTP id i185so15319224vsc.6 for ; Tue, 31 Jan 2023 00:46:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Gk0NyQlV22Nid2+xGbLLx7+k9riCI3xA/3SqqwcYfHg=; b=avoJYKAoszwapGcd6BqLglSVxXqPcT+biSJ3x3U1T4P0I9QhSEjxwMERII+VmafIF2 4VkMzVgTbVDtZVKDDfnIUdMxEDdhMouHQ9pkxjbVJU48Ij96N4i/UOLq3kQtB5eRfAO0 i6UFQrhjfeu/L/YvskmUANKXoWOgYUjmuG+9jsRIK0juqioKIDFOvSesuYvwtSsDpRAv oEOkm7l3y4ANex1pf+vCZDXAmH9jy+QT7j/l73kJjZo2mbFNwRMf2A/7zgUkKnv3l5zi 2oTNdzE2fv4lAiy7QPiopg+C44e/0EzjZTBnex2EnoCOYObkj66NIhEmVbbhxSrm8nzS 0q+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Gk0NyQlV22Nid2+xGbLLx7+k9riCI3xA/3SqqwcYfHg=; b=Cwm+28ufxtY8q7ybVZ4cSOFS7r94upwdFDSja3rJUSzwqr6Ti7d8Gt+LQ7hLhQiWac VZq1/X5VnUKUyPrn3LPOJQHkg5p7tNw7wqQb2oFQezdoo56YjnTKKN504IW7H0avl4ga sXKa1gcVz6Q6gVEyxrDCLZ60xBXq39bPIntHw5qunQjKhQ19o/8GNyqYQtJDEX5JhnVF iLV0Vp2LthsE++CCuAtC66SEtJDyxpiAk633vH0dijR+MraJryO6IYgdIViCbHPx/SzB 06xtJzoILItB6RmayW4qI51FfUI/Ua27hgvTJZNFkKZw+EKwd6wGbI0D/QE2OobJQTSX q2pA== X-Gm-Message-State: AO0yUKVG2a8HYjd4Kf2rTBpmJMzzmgjfBB+jef+5AlJqmoWKhCX/wDaM OcE9MfmdOhUnXo39BdZqnkBg9kgiDvTw0pj/Cws= X-Google-Smtp-Source: AK7set8kMYmzap06nhmglXqo/yqJSxwN/UiDmOvP6QIhXu6eknUqZMuUDMwBNMjzysB/+sJyinGNcxVBXqiJlnJBITY= X-Received: by 2002:a05:6102:3642:b0:3fa:5334:55bd with SMTP id s2-20020a056102364200b003fa533455bdmr898672vsu.31.1675154770462; Tue, 31 Jan 2023 00:46:10 -0800 (PST) MIME-Version: 1.0 References: <20221221090017.3715030-2-rongweil@nvidia.com> <20230118154447.595231-1-rongweil@nvidia.com> <20230118154447.595231-4-rongweil@nvidia.com> In-Reply-To: From: Jerin Jacob Date: Tue, 31 Jan 2023 14:15:43 +0530 Message-ID: Subject: Re: [PATCH v4 3/3] ethdev: add standby flags for live migration To: Rongwei Liu Cc: "dev@dpdk.org" , Matan Azrad , Slava Ovsiienko , Ori Kam , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , "stephen@networkplumber.org" , Raslan Darawsheh , Ferruh Yigit , Andrew Rybchenko Content-Type: text/plain; charset="UTF-8" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Tue, Jan 31, 2023 at 8:23 AM Rongwei Liu wrote: > > HI Jerin: > > BR > Rongwei > > > -----Original Message----- > > From: Jerin Jacob > > Sent: Tuesday, January 31, 2023 01:10 > > To: Rongwei Liu > > Cc: dev@dpdk.org; Matan Azrad ; Slava Ovsiienko > > ; Ori Kam ; NBU-Contact- > > Thomas Monjalon (EXTERNAL) ; > > stephen@networkplumber.org; Raslan Darawsheh ; > > Ferruh Yigit ; Andrew Rybchenko > > > > Subject: Re: [PATCH v4 3/3] ethdev: add standby flags for live migration > > > > External email: Use caution opening links or attachments > > > > > > On Mon, Jan 30, 2023 at 8:17 AM Rongwei Liu wrote: > > > > > > Hi Jerin > > > > > > BR > > > Rongwei > > > > > > > -----Original Message----- > > > > From: Jerin Jacob > > > > Sent: Monday, January 23, 2023 21:20 > > > > To: Rongwei Liu > > > > Cc: dev@dpdk.org; Matan Azrad ; Slava Ovsiienko > > > > ; Ori Kam ; NBU-Contact- > > > > Thomas Monjalon (EXTERNAL) ; > > > > stephen@networkplumber.org; Raslan Darawsheh ; > > > > Ferruh Yigit ; Andrew Rybchenko > > > > > > > > Subject: Re: [PATCH v4 3/3] ethdev: add standby flags for live > > > > migration > > > > > > > > External email: Use caution opening links or attachments > > > > > > > > > > > > On Wed, Jan 18, 2023 at 9:15 PM Rongwei Liu > > wrote: > > > > > > > > > > Some flags are added to the process state API for live migration > > > > > in order to change the behavior of the flow rules in a standby process. > > > > > > > > > > Signed-off-by: Rongwei Liu > > > > > --- > > > > > lib/ethdev/rte_ethdev.h | 21 +++++++++++++++++++++ > > > > > 1 file changed, 21 insertions(+) > > > > > > > > > > diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h > > > > > index > > > > > 1505396ced..9ae4f426a7 100644 > > > > > --- a/lib/ethdev/rte_ethdev.h > > > > > +++ b/lib/ethdev/rte_ethdev.h > > > > > @@ -2260,6 +2260,27 @@ int rte_eth_dev_owner_get(const uint16_t > > > > > port_id, __rte_experimental int rte_eth_process_set_role(bool > > > > > standby, uint32_t flags); > > > > > > > > > > +/**@{@name Process role flags > > > > > + * used when migrating from an application to another one. > > > > > + * @see rte_eth_process_set_active */ > > > > > +/** > > > > > + * When set on a standby process, ingress flow rules will be > > > > > +effective > > > > > + * in active and standby processes, so the ingress traffic may be > > duplicated. > > > > > + */ > > > > > +#define RTE_ETH_PROCESS_FLAG_STANDBY_DUP_FLOW_INGRESS > > > > RTE_BIT32(0) > > > > > > > > > > > > How to duplicate if action has statefull items for example, > > > > rte_flow_action_security::security_session -> it store the live > > > > pointer rte_flow_action_meter::mtr_id; -> MTR object ID created with > > > > rte_mtr_create() > > > I agree with you, not all actions can be supported in the active/standby > > model. > > > > IMO, Where ever rules are not standalone (like QUEUE, RSS) etc, It will be > > architecturally is not possible to migrate with pointers. > > That's where I have concern generalizing this feature for this ethdev. > > > Not sure I understand your concern correctly. What' the pointer concept here? I meant, Any HW resource driver deals with "pointers" or "fixed ID" can not get the same value for the new application. That's where I believe this whole concepts works for very standalone rte_flow patterns and actions. > Queue RSS actions can be migrated per my local test. Active/Standby application have its fully own rxq/txq. Yes. It because it is standalone. > They are totally separated processes and like two members in pipeline. 2nd member can't be feed if 1st member alive and handle the traffic. > > > Also, I don't believe there is any real HW support needed for this. > > IMO, Having DPDK standard multiprocess can do this by keeping secondary > > application can migrate, keeping all the SW logic in the primary process by > > doing the housekeeping in the application. On plus side, it works with pointers > > too. > IMO, in multiple process model, primary process usually owns the hardware resources via mmap/iomap/pci_map etc. > Secondary process is not able to run if primary quits no matter gracefully or crashing. > This patch wants to introduce a "backup to alive" model. > Assume user wants to upgrade from DPDK version 22.03 to 23.03, 22.03 is running and active role while 23.03 comes up in standby. > Both DPDK processes have its own resources and doesn't rely on each other. > User can migrate the application following the steps in commit message with minimum traffic downtime. > SW logic like flow rules can be done following iptables-save/iptables-restore approach. > > > > I am not sure how much housekeeping offload to _HW_ in your case. In my > > view, it should be generic utils functions to track the flow and installing the > > rules using rte_flow APIs and keep the scope only for rte_flow. > For rules part, totally agree with you. Issue is there maybe millions of flow rules in field and each rule may take different steps to > re-install per vendor' implementations. I understand the desire for millon flow migrations. Which makes sense.IMO, It may be just easy to make this feature just for rte_flow name space. Just have APIs to export() existing rules for the given port and import() the rules exported rather than going to ethdev space and call it as "live migration". > This serial wants to propose a unified interface for upper layer application' easy use. > > > > That's just my view. I leave to ethdev maintainers for the rest of the review > > and decision on this series. > > > > > That' why we have return value checking and rollback. > > > In Nvidia driver doc, we suggested user to start from 'rss/queue/jump' > > actions. > > > Meter is possible, at least per my view. > > > Assume: "meter g_action queue 0 / y_action drop / r_action drop" > > > Old application: create meter_id 'A' with pre-defined limitation. > > > New application: create meter_id 'B' which has the same parameters with > > 'A'. > > > 1. 1st possible approach: > > > Hardware duplicates the traffic; old application use meter 'A' and new > > application uses meter 'B' to control traffic throughputs. > > > Since traffic is duplicated, so it can go to different meters. > > > 2. 2nd possible approach: > > > Meter 'A' and 'B' point to the same hardware resource, and traffic > > reaches this part first and if green, duplication happens.