From: Ed W <lists@wildgooses.com>
To: Hagen Paul Pfeifer <hagen@jauu.net>
Cc: David Miller <davem@davemloft.net>,
rick.jones2@hp.com, davidsen@tmr.com,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: Raise initial congestion window size / speedup slow start?
Date: Wed, 14 Jul 2010 23:52:02 +0100 [thread overview]
Message-ID: <4C3E3F92.2090506@wildgooses.com> (raw)
In-Reply-To: <20100714221301.GI6682@nuttenaction>
>> Although section 3 of RFC 5681 is a great text, it does not say at all
>> that increasing the initial CWND would lead to fairness issues.
>>
> Because it is only one side of the medal, probing conservative the available
> link capacity in conjunction with n simultaneous probing TCP/SCTP/DCCP
> instances is another.
>
So lets define the problem more succinctly:
- New TCP connections are assumed to have no knowledge of current
network conditions (bah)
- We desire the connection to consume the maximum amount of bandwidth
possible, but staying ever so fractionally under the maximum link bandwidth
> Currently I know no working link capacity probing approach, without active
> network feedback, to conservatively probing the available link capacity with a
> high CWND. I am curious about any future trends.
>
Sounds like smarter people than I have played this game, but just to
chuck out one idea: How about attacking the idea that we have no
knowledge of network conditions? After all we have a bunch of
information about:
1) very good information about the size of the link to the first hop (eg
the modem/network card reported rate)
2) often a reasonably good idea about the bandwidth to the first
"restrictive" router along our default path (ie usually the situation is
there is a pool of high speed network locally, then a more limited
connectivity between our network and other networks. We can look at the
maximum flows through our network device to outside our subnet and infer
an approximate link speed from that)
3) often moderate quality information about the size of the link between
us and a specific destination IP
So here goes: the heuristic could be to examine current flows through
our interface, use this to offer hints to the remote end during SYN
handshake as to a recommended starting size, and additionally the client
side can examine the implied RTT of the SYN/ACK to further fine tune the
initial cwnd?
In practice this could be implemented in other ways such as examining
recent TCP congestion windows and using some heuristic to start "near"
those. Or remembering congestion windows recently used for popular
destinations? Also we can benefit the receiver of our data - if we see
some app open up 16 http connections to some poor server then some of
those connections will NOT be given large initial cwnd.
Essentially perhaps we can refine our initial cwnd heuristic somewhat if
we assume better than zero knowledge about the network link?
Out of curiousity, why has it taken so long for active feedback to
appear? If every router simply added a hint to the packet as to the max
bandwidth it can offer then we would appear to be able to make massively
better decisions on window sizes. Furthermore routers have the ability
to put backpressure on classes of traffic as appropriate. I guess the
speed at which ECN has been adopted answers the question of why nothing
more exotic has appeared?
>> But for all we know this side discussion about initial CWND settings
>> could have nothing to do with the issue being reported at the start of
>> this thread. :-)
>>
Actually the original question was mine and it was literally - can I
adjust the initial cwnd for users of my very specific satellite network
which has a high RTT. I believe Stephen Hemminger has been kind enough
to recently add the facility to experiment with this to the ip utility
and so I am now in a position to go do some testing - thanks Stephen
Cheers
Ed W
next prev parent reply other threads:[~2010-07-14 22:52 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-14 10:43 Raise initial congestion window size / speedup slow start? Ed W
2010-07-14 11:58 ` Alan Cox
2010-07-14 15:21 ` Bill Davidsen
2010-07-14 18:15 ` David Miller
2010-07-14 18:48 ` Ed W
2010-07-14 19:10 ` Stephen Hemminger
2010-07-14 21:47 ` Mitchell Erblich
2010-07-14 20:17 ` Rick Jones
2010-07-14 20:39 ` Hagen Paul Pfeifer
2010-07-14 21:55 ` David Miller
2010-07-14 22:13 ` Hagen Paul Pfeifer
2010-07-14 22:19 ` Rick Jones
2010-07-14 22:40 ` Hagen Paul Pfeifer
2010-07-14 22:52 ` Ed W [this message]
2010-07-14 23:01 ` Hagen Paul Pfeifer
2010-07-14 23:05 ` Ed W
2010-07-15 3:49 ` Bill Fink
2010-07-15 5:29 ` H.K. Jerry Chu
2010-07-15 19:51 ` Rick Jones
2010-07-15 20:48 ` Stephen Hemminger
2010-07-16 0:23 ` H.K. Jerry Chu
2010-07-16 9:03 ` Hagen Paul Pfeifer
2010-07-15 10:33 ` Alan Cox
2010-07-14 22:05 ` Ed W
2010-07-14 22:36 ` Hagen Paul Pfeifer
2010-07-14 23:01 ` Ed W
2010-07-15 4:12 ` Tom Herbert
2010-07-15 7:48 ` Ed W
2010-07-15 17:36 ` Jerry Chu
2010-07-15 5:09 ` H.K. Jerry Chu
2010-07-15 2:52 ` Bill Fink
2010-07-15 4:51 ` H.K. Jerry Chu
2010-07-16 17:01 ` Patrick McManus
2010-07-16 17:41 ` Ed W
2010-07-17 1:23 ` H.K. Jerry Chu
2010-07-17 0:36 ` H.K. Jerry Chu
2010-07-19 17:08 ` Rick Jones
2010-07-19 22:51 ` H.K. Jerry Chu
2010-07-19 23:42 ` Hagen Paul Pfeifer
2010-07-15 23:14 ` Bill Davidsen
2010-07-14 18:32 ` Ed W
2010-07-15 15:10 ` Bill Davidsen
2010-07-16 2:58 ` Henrique de Moraes Holschuh
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=4C3E3F92.2090506@wildgooses.com \
--to=lists@wildgooses.com \
--cc=davem@davemloft.net \
--cc=davidsen@tmr.com \
--cc=hagen@jauu.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rick.jones2@hp.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox