General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Alan Jenkins <alan.christopher.jenkins@gmail.com>
To: Benjamin Cronce <bcronce@gmail.com>
Cc: bloat <bloat@lists.bufferbloat.net>
Subject: Re: [Bloat] TCP congestion detection - random thoughts
Date: Sun, 21 Jun 2015 18:05:52 +0100	[thread overview]
Message-ID: <5586EEF0.7090302@gmail.com> (raw)
In-Reply-To: <CAJ_ENFHOO28_SxQXhvAc6W=WHhA6Lp4Gec5C1u0zGkWLH-LitQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3421 bytes --]

Hi Ben

Some possible Sunday reading relating to these thoughts :).

https://lwn.net/Articles/645115/ "Delay-gradient congestion control" 
[2015, Linux partial implementation]

our Dave's reply to a comment:

https://lwn.net/Articles/647322/

Quote "there is a huge bias (based on the experimental evidence) that 
classic delay based tcps lost out to loss based in an undeployable fashion"

- not to argue the quote either way.  But there's some implicit 
references there that are relevant.  Primarily a well-documented result 
on TCP Vegas.  AIUI Vegas uses increased delay as well as loss/marks as 
a congestion signal.  As a result, it gets a lower share of the 
bottleneck bandwidth when competing with other TCPs. Secondly uTP has a 
latency (increase) target (of 100ms :p), _deliberately_ to de-prioritize 
itself.  (This is called LEDBAT and has also been implemented as a TCP).

Alan


On 21/06/15 17:19, Benjamin Cronce wrote:
> Just a random Sunday morning thought that has probably already been 
> thought of before, but I currently can't think of hearing it before.
>
> My understanding of most TCP congestion control algorithms is they 
> primarily watch for drops, but drops are indicated by the receiving 
> party via ACKs. The issue with this is TCP keeps pushing more data 
> into the window until a drop is signaled, even if the rate received is 
> not increased. What if the sending TCP also monitors rate received and 
> backs off cramming more segments into a window if the received rate 
> does not increase.
>
> Two things to measure this. RTT which is part of TCP statistics 
> already and the rate at which bytes are ACKed. If you double the 
> number of segments being sent, but in a time frame relative to the 
> RTT, you do not see a meaningful increase in the rate at which bytes 
> are being ACKed, may want to back off.
>
> It just seems to me that if you have a 50ms RTT and 10 seconds of 
> bufferbloat, TCP is cramming data down the path with no care in the 
> world about how quickly data is actually getting ACKed, it's just 
> waiting for the first segment to get dropped, which would never happen 
> in an infinitely buffered network.
>
> TCP should be able to keep state that tracks the minimum RTT and 
> maximum ACK rate. Between these two, it should not be able to go over 
> the max path rate except when attempting to probe for a new max or 
> min. Min RTT is probably a good target because path latency should be 
> relatively static, however path free-bandwidth is not static. The 
> desirable number of segments in flight would need to change but would 
> be bounded by the max.
>
> Of course naggle type algorithms can mess with this because when ACKs 
> occur is no longer based entirely when a segment is received, but also 
> by some other additional amount of time. If you assume that naggle 
> will coalesce N segments into a single ACK, then you need to add to 
> the RTT, the amount of time at the current PPS, how long until you 
> expect another ACK assuming N number of segments will be coalesced. 
> This would be even important for low latency low bandwidth paths. 
> Coalesce information could be assumed, negotiated, or inferred. 
> Negotiated would be best.
>
> Anyway, just some random Sunday thoughts.
>
>
> _______________________________________________
> Bloat mailing list
> Bloat@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat


[-- Attachment #2: Type: text/html, Size: 4988 bytes --]

  reply	other threads:[~2015-06-21 17:05 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-21 16:19 Benjamin Cronce
2015-06-21 17:05 ` Alan Jenkins [this message]
2015-06-21 17:33   ` Jonathan Morton
2015-06-21 19:34   ` Benjamin Cronce
2015-06-21 17:53 ` G B
2015-06-22  1:50 ` Stephen Hemminger
2015-06-22 15:55 ` Juliusz Chroboczek
2015-06-22 16:12   ` Dave Taht
2015-06-23  5:20 Ingemar Johansson S

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

  List information: https://lists.bufferbloat.net/postorius/lists/bloat.lists.bufferbloat.net/

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

  git send-email \
    --in-reply-to=5586EEF0.7090302@gmail.com \
    --to=alan.christopher.jenkins@gmail.com \
    --cc=bcronce@gmail.com \
    --cc=bloat@lists.bufferbloat.net \
    /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