From: Florian Westphal <fw@strlen.de>
To: Yuchung Cheng <ycheng@google.com>
Cc: Florian Westphal <fw@strlen.de>, netdev <netdev@vger.kernel.org>,
Daniel Borkmann <dborkman@redhat.com>,
Glenn Judd <glenn.judd@morganstanley.com>
Subject: Re: [PATCH 4/5] net: tcp: more detailed ACK events, and events for CE marked packets
Date: Tue, 13 May 2014 12:26:24 +0200 [thread overview]
Message-ID: <20140513102624.GC13945@breakpoint.cc> (raw)
In-Reply-To: <CAK6E8=d4i+NR7_gE7HDYQWhgNSYPchZ7kKqoRH93M-ZhrXs86g@mail.gmail.com>
Yuchung Cheng <ycheng@google.com> wrote:
> On Mon, May 12, 2014 at 1:59 PM, Florian Westphal <fw@strlen.de> wrote:
> >
> > DataCenter TCP (DCTCP) determines cwnd growth based on ECN information
> > and ACK properties, e.g. ACK that updates window is treated differently
> > than DUPACK.
> >
> > Also DCTCP needs information whether ACK was delayed ACK. Furthermore,
> > DCTCP also implements a CE state machine that keeps track of CE markings
> > of incoming packets.
> >
> > Therefore, extend the congestion control framework to provide these
> > event types, so that DCTCP can be properly implemented as a normal
> > congestion algorithm module outside the core stack.
> >
> > Joint work with Daniel Borkmann and Glenn Judd.
> >
> > Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
> > Signed-off-by: Glenn Judd <glenn.judd@morganstanley.com>
> > Signed-off-by: Florian Westphal <fw@strlen.de>
> > ---
> > include/net/tcp.h | 9 ++++++++-
> > net/ipv4/tcp_input.c | 22 ++++++++++++++++++----
> > net/ipv4/tcp_output.c | 4 ++++
> > 3 files changed, 30 insertions(+), 5 deletions(-)
> >
> > diff --git a/include/net/tcp.h b/include/net/tcp.h
> > index 0d767d2..56bf383 100644
> > --- a/include/net/tcp.h
> > +++ b/include/net/tcp.h
> > @@ -754,10 +754,17 @@ enum tcp_ca_event {
> > CA_EVENT_CWND_RESTART, /* congestion window restart */
> > CA_EVENT_COMPLETE_CWR, /* end of congestion recovery */
> > CA_EVENT_LOSS, /* loss timeout */
> > + CA_EVENT_ECN_NO_CE, /* ECT set, but not CE marked */
> > + CA_EVENT_ECN_IS_CE, /* received CE marked IP packet */
> > + CA_EVENT_DELAYED_ACK, /* Delayed ack is sent */
> > + CA_EVENT_NON_DELAYED_ACK,
> do we need NON_DELAYED_ACK event? is there a third kind?
Could you elaborate? I am not sure what you mean.
> > @@ -3421,10 +3428,12 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
> > tp->snd_una = ack;
> > flag |= FLAG_WIN_UPDATE;
> >
> > - tcp_in_ack_event(sk, 0);
> > + tcp_in_ack_event(sk, CA_ACK_WIN_UPDATE);
> These CA_ACK_xxx are identical to the ACK flag so might as well just
> pass the flag to the event handler?
We felt that exposing all the FLAG_xxx values (which are private to
tcp_input.c) to congestion modules would be overkill, especially
since we would fail to notify the cong_ops module(s) about all of these.
I think if we were to expose all of them we'd also have to call
rename tcp_in_ack_event() (since most of the flags are not ack related)
and then consistently call that for all the flag changes (which is just
needless overhead since no cong_ops module would react to these).
We can update the tcp_ca_ack_event_flags to include
all FLAG_xxx values and then convert tcp_input.c to use them, but it
would mean that cong_ops modules could only rely on a selected few of
these flags to actually be set/propagated consistently.
next prev parent reply other threads:[~2014-05-13 10:26 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-12 20:59 [next PATCH 0/5] net: tcp: DCTCP congestion control algorithm Florian Westphal
2014-05-12 20:59 ` [PATCH 1/5] net: tcp: assign tcp cong_ops when tcp sk is created Florian Westphal
2014-05-12 20:59 ` [PATCH 2/5] net: tcp: add flag for ca to indicate that ECN is required Florian Westphal
2014-05-12 23:51 ` Eric Dumazet
2014-05-13 9:18 ` Florian Westphal
2014-05-12 20:59 ` [PATCH 3/5] net: tcp: split ack slow/fast events from cwnd_event Florian Westphal
2014-05-12 20:59 ` [PATCH 4/5] net: tcp: more detailed ACK events, and events for CE marked packets Florian Westphal
2014-05-13 4:41 ` Yuchung Cheng
2014-05-13 10:26 ` Florian Westphal [this message]
2014-05-12 20:59 ` [PATCH 5/5] net: tcp: add DCTCP congestion control algorithm Florian Westphal
2014-05-12 22:01 ` [next PATCH 0/5] net: tcp: " Cong Wang
2014-05-13 4:45 ` Stephen Hemminger
2014-05-13 9:34 ` Hagen Paul Pfeifer
2014-05-13 9:40 ` Eggert, Lars
2014-05-13 15:18 ` Stephen Hemminger
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=20140513102624.GC13945@breakpoint.cc \
--to=fw@strlen.de \
--cc=dborkman@redhat.com \
--cc=glenn.judd@morganstanley.com \
--cc=netdev@vger.kernel.org \
--cc=ycheng@google.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.