From: Christoph Paasch <cpaasch at apple.com>
To: mptcp at lists.01.org
Subject: Re: [MPTCP] [RFC 0/9] Changes for implementing MPTCP
Date: Wed, 28 Feb 2018 14:32:35 -0800 [thread overview]
Message-ID: <20180228223235.GA15661@MacBook-Pro-4.local> (raw)
In-Reply-To: d3bd8da9-5e36-4dd4-f716-da198d8f009e@oracle.com
[-- Attachment #1: Type: text/plain, Size: 4225 bytes --]
Hello Rao,
On 28/02/18 - 14:01:09, Rao Shoaib wrote:
> On 02/23/2018 12:20 PM, Mat Martineau wrote:
> > On Thu, 22 Feb 2018, rao.shoaib(a)oracle.com wrote:
> > > From: Rao Shoaib <rao.shoaib(a)oracle.com>
> > >
> > > Following patches modify TCP code to enable implementation of MPTCP.
> > > MPTCP implementation requires sharing of TCP code with minor
> > > modification here and there. In order to keep the TCP code clean and
> > > easy to maintain, common code has been moved to new functions for
> > > use by both TCP and MPTCP. struct tcp_sock now has function pointers
> > > and based on the socket type (TCP/MPTCP) appropriate function is
> > > called.
> > >
> > > A basic implementation of MPTCP that works with IPv4/IPv6 and
> > > supports join has been tested based on these changes.
> > >
> > > The changes are being submitted as an RFC to get feedback from the
> > > community and to start a discussion on how to move forward.
> > >
> >
> > Hi Rao -
> >
> > I'd encourage you to closely read David Miller's response
> > (https://www.spinics.net/lists/netdev/msg481868.html) to the TCP-MD5 RFC
> > patch set that Christoph posted. We proposed some targeted indirect
> > calls to callbacks for handling TCP options. He said "Sorry, I'm really
> > not thrilled about this", and was focused on the performance
> > implications of those callbacks. Have you looked at the performance and
> > memory impact of adding indirection to a few dozen core TCP function
> > calls?
> Yes I have. There are several papers on this subject and the jury is out. In
> the case of the frame work I have not looked at the code but Dave says
>
> "I can already see in your patches that new overhead is added, new
> tests in the packet building fast paths that are completely
> unnecessary with the existing code, etc."
>
> In my changes there are no new tests and fast is completely untouched. The
> only change is to call functions via a pointer instead of having inline. The
> impact of that has been a topic of discussion for a long time because of
> c++.
The problem is in patch 5/9. For example, the change in
__tcp_push_pending_frames.
Accessing the function-pointer makes two memory-accesses which potentially
can have a cache-miss.
That's the fast-path cost that upstream is worried about.
> > To give some more background, when Christoph was crafting the MD5 patch
> > set I pushed to take out some static-branch code that needed some work
> > but eliminated the impact of the added callbacks for normal TCP. David
> > focused on exactly that issue and didn't dive in to other aspects of the
> > code. I can't fault him for that - he sorts through a staggering volume
> > of patches every day, and if there's an issue that's clear at a glance
> > it will pull all attention from the rest of the proposal. Also consider
> > that Christoph replied with a few more questions, but the discussion
> > stalled.
> >
> > I do have more to say about the proposed architecture and how to
> > structure the patch set for netdev - but I think the maintainer feedback
> > we already have about indirect callbacks is most critical to consider
> > and factor in to what we send to netdev in the future. We have the
> > shared goal to get MPTCP in to the upstream kernel and it's going to
> > take a coordinated community to get there!
> I agree that it will take a co-ordinated effort but we need to know what
> upstream will accept. I have not seen any code or a detailed proposal.
>
> I will be sending out modified MPTCP code that works with the IP changes.
>
> What are the other issues besides the direct calls ?
The list of function pointers is huge.
If we post this on netdev, it won't cast a good light on the MPTCP
upstreaming effort. DaveM wants the design to fit neatly into the TCP-stack
with minimal/zero performance impact.
We have to try to achieve that before we post on netdev.
The problem is also that the patches don't provide any context to netdev
as to why this is needed (e.g., why is a function-pointer for tcp_urg
needed?). Without the context, it will be hard for people to provide
feedback.
Christoph
next reply other threads:[~2018-02-28 22:32 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-28 22:32 Christoph Paasch [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-04-10 5:33 [MPTCP] [RFC 0/9] Changes for implementing MPTCP Rao Shoaib
2018-04-09 5:03 Christoph Paasch
2018-03-30 18:24 Rao Shoaib
2018-03-30 18:20 Rao Shoaib
2018-03-30 17:54 Krystad, Peter
2018-03-27 10:37 Christoph Paasch
2018-03-01 20:05 Rao Shoaib
2018-03-01 19:18 Christoph Paasch
2018-02-28 23:31 Rao Shoaib
2018-02-28 22:59 Mat Martineau
2018-02-28 22:57 Rao Shoaib
2018-02-28 22:20 Rao Shoaib
2018-02-28 22:01 Rao Shoaib
2018-02-23 20:20 Mat Martineau
2018-02-22 23:49 rao.shoaib
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=20180228223235.GA15661@MacBook-Pro-4.local \
--to=unknown@example.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.