DPDK patches and discussions
 help / color / mirror / Atom feed
From: Chintan Inbay <chintaninbay@outlook.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] Fwd: Disable receiving new flows on a core
Date: Mon, 5 Nov 2018 19:06:10 +0000	[thread overview]
Message-ID: <MWHPR22MB09411CCE6BD21F940022AF81D6CA0@MWHPR22MB0941.namprd22.prod.outlook.com> (raw)
In-Reply-To: <20181105173757.GA25968@bricha3-MOBL.ger.corp.intel.com>

Thank you for your response. My guess was that to implement this feature in hardware isn't straightforward and would require support for:

 - allocating additional memory and keeping track of flow hashes per core
 - parsing TCP packets for SYN flag
 - If flow hash matches for a core, send it to a core only if it is non-SYN
 - Send the SYN packet with a hash that matches the disabled core to a new core.

Which probably needs a lot of work. It would be a great feature for roadmap if Intel decides to provide it. However I don't know how difficult it would be and if dpdk framework can eventually support it.

I foresee it as very useful feature for micro-upgrades or per-core software upgrades. When upgrading software on a core-by-core basis without losing connection state. Enabling this feature would let a core drain the flows, then perform a restart with new software.

-Chintan
________________________________
From: Bruce Richardson <bruce.richardson@intel.com>
Sent: Monday, November 5, 2018 9:37 AM
To: Chintan Inbay
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] Fwd: Disable receiving new flows on a core

On Mon, Nov 05, 2018 at 12:08:48AM +0000, Chintan Inbay wrote:
>
>
>
> Begin forwarded message:
>
> From: chintaninbay@outlook.com<mailto:chintaninbay@outlook.com>
> Date: November 1, 2018 at 6:19:49 PM PDT
> To: users@dpdk.org<mailto:users@dpdk.org>
> Subject: Disable receiving new flows on a core
>
> Hi,
>
> We use RSS for distributing flows across cores. Sometimes, in special cases we want to disable receiving new flows to a core. Only new flows. So say if RETA is programmed to receive on cores (0,1,2,3), then the new set would be (0,1,2).  Existing flows going to (3) should be retained and forwarded. Only new flows should not be sent to (3).
>
> Eventually when core (3) is ready again, we need to re program RETA so that all four cores can take flows. So new set of cores would be (0,1,2,3)
>
> Is this possible?

Not really, no. RSS does not track flows individually, only the hashes of
the flow's key fields. Therefore there is no way to separate old and new
flows, all you can do is move all flows that hash to value X to a new core.
Some of those may be old flows and some of them new. Note too that the size
of the RETA table limits the number of bits of that hash that are checked.
It's generally less than 10 bits.

/Bruce

>
> Also if the process on core 3 goes down or crashes, is there a way to notify RSS hardware or you’d have to reprogram RETA in a signal handler?
>
> Thanks,
> Chintan

      reply	other threads:[~2018-11-05 19:06 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <MWHPR22MB09415D9C6F5DF969A628B3F6D6CF0@MWHPR22MB0941.namprd22.prod.outlook.com>
2018-11-05  0:08 ` Chintan Inbay
2018-11-05 17:37   ` Bruce Richardson
2018-11-05 19:06     ` Chintan Inbay [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MWHPR22MB09411CCE6BD21F940022AF81D6CA0@MWHPR22MB0941.namprd22.prod.outlook.com \
    --to=chintaninbay@outlook.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).