DCCP protocol discussions
 help / color / mirror / Atom feed
From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
To: dccp@vger.kernel.org
Subject: Re: CCID 3 question: length of the `open' loss interval I_0
Date: Thu, 11 Jan 2007 10:49:28 +0000	[thread overview]
Message-ID: <200701111049.28942@strip-the-willow> (raw)
In-Reply-To: <200701091321.00592@strip-the-willow>

Eddie,

many thanks for the answer; which does clarify an issue which has cost quite
a lot of reading RFC 3448 / 4342. In particular the example you give below,
where I_0 is promoted to I_1, makes quite clear that - despite the wording in 
RFC 3448 - it is indeed better to use the distance from X_prev to measure
the interval I_0. It is also more consistent with the way I_1 ... I_k are 
computed, so I think the Linux implementation is heading in the right direction.

Cheers
Gerrit

Quoting Eddie Kohler:
|  Hi Gerrit,
|  
|  Strictly speaking one can identify a loss event with a single ECN-marked 
|  packet, so I_0 might be < 3, but let that pass.  The RFC occasionally 
|  uses "lost" to mean "lost or marked".
|  
|  The correct answer is simply to subtract X_prev from the sequence number 
|  of the currently received packet.  This is certainly what we were 
|  thinking while writing RFC4342, although I don't have time now to check 
|  whether the text actually defines this explicitly.
|  
|  I'm almost certain but am cc'ing the IETF list for possible correction.
|  
|  Among the reasons for this choice is that if you measure it the other 
|  way, I_0 will use different units from every other loss interval length.
|  
|  However, to be honest, I'd say that RFC3448 appears to define it as 
|  "number of packets received since last loss event".  I think this is a 
|  misstatement in RFC3448 and should be considered for fixing in 
|  RFC3448bis.  Every other loss interval is defined as a length in 
|  sequence space INCLUDING lost and marked packets (RFC3448 5.3).  There 
|  seems no reason to EXCLUDE lost and marked packets for I_0; this might 
|  lead to weird rate hiccups where the TFRC rate INCREASED after a loss 
|  (because I_0 got longer when it became I_1)!  I would define I_0 as "the 
|  most recent interval, which includes the most recent loss event and all 
|  packets thereafter" (5.4), and say later that I_0 "includes the packets 
|  received since the last loss event" (rather than REPRESENTS the number 
|  of packets received since the last loss event) (5.5).
|  
|  Eddie
|  
|  
|  
|  
|  Gerrit Renker wrote:
|  > Eddie, 
|  > 
|  > sorry to trouble you with yet another question, but it is extremely important to get this
|  > right. This concerns the length of I_0, the interval since the most recent loss event.
|  > 
|  > In the current implementation, we are relying on the highest sequence numbers received
|  > before a loss occurred. Using the terminology from [RFC 4342, 10.2], this corresponds
|  > to X_prev and Y_prev.
|  > 
|  > For subsequent loss intervals (assuming that more than 1 RTT lies between X_prev/Y_prev),
|  > we can compute the loss interval length [RFC 3448, 5.3] as modulo-2^48 distance between
|  > X_prev and Y_prev.
|  > ( Strictly speaking, the first packet known to be lost - starting the loss event - 
|  >   has sequence number (X_prev + 1) % 2^48. Since the next loss event begins at sequence 
|  >   number (Y_prev + 1) % 2^48, the distance is however the same as from X_prev to Y_prev. )
|  > 
|  > With the open loss interval I_0, however, the situation is different. In [RFC 3448, 5.5],
|  > I_0 is defined as "the number of packets received since the last loss event". Taking this 
|  > literally means the following:
|  > 
|  >   * at the instant this loss is detected,              I_0 = 3 
|  >     (since NUMDUPACK=3 packets need to be received to identify a loss event)
|  >   * when the first data packet after the loss arrives, I_0 = 4,
|  >   * when the i-th  data packet after the loss arrives, I_0 = 3 + i
|  >   * ... and so on until the next loss is detected 
|  > 
|  > Question: Is this reasoning correct, or is the intention to determine the number of 
|  >           data packets in I_0 by using X_prev and simply subtracting X_prev from the
|  >           sequence number of the currently received packet (modulo 2^48)? 
|  >           
|  > 
|  > The first variant seems to be conform with the RFC, the latter is conform with the way 
|  > the other loss intervals are computed.
|  > 
|  > Resolving this will help to clear up the loss detection algorithm we are currently using.
|  > 
|  > Gerrit
|  -
|  To unsubscribe from this list: send the line "unsubscribe dccp" in
|  the body of a message to majordomo@vger.kernel.org
|  More majordomo info at  http://vger.kernel.org/majordomo-info.html
|  
|  

  parent reply	other threads:[~2007-01-11 10:49 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-09 13:21 CCID 3 question: length of the `open' loss interval I_0 Gerrit Renker
2007-01-10 17:03 ` Eddie Kohler
2007-01-11 10:49 ` Gerrit Renker [this message]
2007-03-05  4:06 ` [dccp] " Sally Floyd

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=200701111049.28942@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox