All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
To: dccp@vger.kernel.org
Subject: Re: RTT measurement, CCID3 implementability
Date: Tue, 17 Apr 2007 11:07:40 +0000	[thread overview]
Message-ID: <200704171207.40680@strip-the-willow> (raw)
In-Reply-To: <46229A62.9010805@cs.ucla.edu>

|  - The DCCP specification does not require RTT measurements on every packet 
|  exchange.
|  
|  - It should be possible to use coarse grained timestamps (even jiffies) for 
|  most packets, with finer grained timestamps used on occasion, to improve the 
|  current estimate; for example, getting the time of day once per RTT.
This is not easily possible without at the same time revising the spec. If you e.g.
allow jiffie-based round-trip times, then you will need to set the minimum RTT value
to 1 jiffie, since otherwise divide-by-zero will be likely.

A further complication of jiffies is that the algorithm will have to work even when 
some unsuspecting user selects HZ\x100. That however makes the error in RTT measurement 
unbearably large - 10 milliseconds is in the order of a WAN connection within the same
country (see Perkin's slides below).


|  - Gerrit has come to strong conclusions about the "implementability" of CCID3. 
|    The evidence is supposedly here:
|  
|  http://www.erg.abdn.ac.uk/users/gerrit/dccp/docs/packet_scheduling/
|  http://www.erg.abdn.ac.uk/users/gerrit/dccp/docs/impact_of_tx_queue_lenghts/
|
You are mis-quoting. There is nothing in the pages about implementability of CCID3.

The pages show merely that with the given specification and given scheduling the present 
implementation operates like a non-congestion controlled raw socket above ca. 12 Mbits/sec. 

Which means that on 100Mbit ethernet it is 88% useless; on Gigabit ethernet it is 98.8% useless. 

Furthermore, isolating these measurements by insinuating that they must be somehow wrong is not 
really a good idea: you will meet the same problems in the user-space implementation of TFRC by 
Perkins et al ( http://www3.ietf.org/proceedings/06jul/slides/dccp-13.pdf ):
 
 * "Difficult to accurately schedule packets" (page 5)

 * "Timing inaccuracy in sender and receiver poses a _significant_ challenge to stable
    TFRC implementation" (page 6)

 * again the problem with shorter RTTs:
   "Have found stability difficult to achieve with RTT < 10-20 ms" (page 8)

 => The joke is on page 9 which assumes that a "Kernel implementation of TFRC is likely
    more accurate" :)


|  It's worth looking at these pages once again; the conclusions are far from the 
|  evidence.  A subset of strategies that have not been considered:
You are free to conduct your own measurements.

  
|     = Other methods of scheduling packet transmissions at sub-timer 
|  granularity, other than hrtimers.  For example, in response to ack arrival 
|  (would be helpful at low RTTs, where acks arrive quickly; in fact, if this was 
|  helpful, one might even have the CCID3 receiver send more acks than the 
|  minimum required by the spec).  Or in a kernel tasklet that might be scheduled 
|  only when a DCCP connection wants to send at high rates.
|
These may work, but would require further experimentation and testing; meaning
probably multiple experimental code revisions.  

  
|  Many of these have been mentioned at least once in previous emails, and 
|  summarily dismissed.  Time will tell.  It took months for "use the 
|  request/response exchange for an RTT measurement" to filter into the 
|  implementation, whereupon it was, as a predicted, a useful simplification.
Again the quoting is not fair. The "use the request/response exchange for an RTT measurement"
came up when a patch had just been completed to achieve compliance with existing
RFC 3448/4342. At that instance, the erratum suddenly came up, obsoleting the patch:
http://www.mail-archive.com/dccp@vger.kernel.org/msg00848.html

It is not that the erratum is bad, but it shows the whole point - the protocol
is not momentarily implementable -at least here- as if it were in a recipe book. 

There were other occurrences where the specification changes overtook the code.

It may be wiser and time-saving to move it to an experimental tree, concentrate fully on 
the outstanding issues, before submitting a half-finished implementation to the stable 
mainline kernel. This would also increase your freedom to experiment and test.

  
|  - On 4 October 2006 I sent mail to the other DCCP coauthors wondering whether 
|  "a rate as the basic unit of congestion control ...is just too much of a pain 
|  in the ass to implement".  We will keep thinking about this, and there are 
|  alternatives to rate-based CC.  As yet it is too early to tell. 
Thanks for sharing that with us so early.


|  On the other hand, had we been implementing a modern TCP, I bet Gerrit would declare 
|  TCP  unimplementable.
How about a bit more fairness in your argumentation, Dr. Kohler :)

  reply	other threads:[~2007-04-17 11:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-15 21:34 RTT measurement, CCID3 implementability Eddie Kohler
2007-04-17 11:07 ` Gerrit Renker [this message]
2007-04-17 13:42 ` Eddie Kohler

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=200704171207.40680@strip-the-willow \
    --to=gerrit@erg.abdn.ac.uk \
    --cc=dccp@vger.kernel.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 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.