DCCP protocol discussions
 help / color / mirror / Atom feed
From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
To: dccp@vger.kernel.org
Subject: Re: [PATCH 2/5]: DCCP Recalc on non-loss intervals
Date: Mon, 08 Jan 2007 15:05:14 +0000	[thread overview]
Message-ID: <200701081505.14882@strip-the-willow> (raw)
In-Reply-To: <200612201545.39441.ian.mcdonald@jandi.co.nz>

Hi Eddie

thanks for the clarification. I think this makes clear what Ian's recalculate-loss optimization
does. I am copying this to dccp@ietf as well since a related question was posed there.

What made the analysis so confusing is that [RFC 3448, 5.4] was used as reference, such as in 
the following commment.

    /* This code implements the part of section 5.4 of RFC3448 which says we should
     * recalculate the average loss interval if we have a sufficient long loss
     * interval.

It is now, with the below, however clear that the relevant section is not 5.4, but rather 
section 6.1 - whichstates that the receiver has to recompute p on reception of each data packet.
And it seems to be the point of Ian's patch to relax this requirement somehow. 

Hence you are right, it is not a new technique but rather an attempt to optimise the implementation.

Thanks again for the references.

Gerrit
|  Chapter and verse, all from RFC 3448.
|  
|  5.4: "When calculating the average loss interval we need to decide whether
|      to include the interval since the most recent packet loss event.  We
|      only do this if it is sufficiently large to increase the average loss
|      interval."
|  
|      => If the time since the last loss interval will increase the average 
|  loss interval, then it should be included.
|      => Note that the time since the last loss interval will increase on every 
|  successful packet receipt.
|      => Therefore we may need to recalculate the average loss interval after 
|  every successful packet receipt (or, at the sender, on every feedback packet).
|  
|  5.4: "I_0 being the interval since the most recent loss event"
|  
|      => I_0 is the time since the last loss interval.
|  
|  5.5: "As described in Section 5.4 the average loss interval is calculated
|      using the n previous loss intervals I_1, ..., I_n, and the interval
|      I_0 that represents the number of packets received since the last
|      loss event."
|  
|      => thus I_0 means the same thing in 5.4 and 5.5
|  
|  5.5: "I_0 [is] the number of packets received since the last loss event"
|  
|      => yet another way to say the same thing
|  
|  5.5: "Note that with each new packet arrival, I_0 will increase further"
|  
|      => YET ANOTHER way to say the same thing.
|  
|  In summary
|  - I_0 is the interval since the most recent loss event
|  - I_0 increases with every packet received
|  - The average loss interval calculation depends on I_0
|  - The average loss interval should be recalculated whenever I_0 changes
|  - I_0 changes with every packet received
|  - What more can I say here?????
|  - All of this average loss interval calculation applies equally to sender and 
|  receiver; it is in section 5, a general section on "calculating loss event 
|  rate"; and as the intro to section 5 says, "Loss rate measurement is performed 
|  at the receiver"
|  
|  Ian's patch is NOT experimental; Ian is attempting to implement standard 
|  compliant behavior; Ian's change is documented in the RFCs; etc.; etc.; etc.
|  
|  Can we put this to bed?
|  
|  If you still don't understand, please be clearer about why not.
|  
|  Eddie
|  
|  
|  
|  
|  Gerrit Renker wrote:
|  > |  Um, you misunderstand.  The problem that Ian's patch addresses seems 
|  > |  entirely within the purview of RFC 3448/4342.  He is not trying to 
|  > |  innovate.  Recalculating the loss rate after a longer period of non-loss 
|  > |  is NOT EXPERIMENTAL it is REQUIRED.  The loss event rate is NOT 
|  > |  calculated ONLY when losses are detected.  It must be calculated on 
|  > |  every feedback packet.  I don't have time at the moment to look up 
|  > |  chapter and verse, maybe later.
|  > Please take another look at the patch: what you are saying is true but applies to the _sender_, but Ian's
|  > code is entirely within the _receiver_. We are not at 4342 yet, at the moment the receiver calculates
|  > the loss event rate and then contacts the receiver.
|  > 
|  > Can you please look up chapter and verse -- I have read all related documents and can only identify
|  > section 5.4 of RFC 3448. With regard to this, we are in agreement: this needs to be audited to be conform.
|  > 
|  > But with regard to recalculating the loss rate after a longer period of non-loss: 
|  > 
|  >  => either there is indeed a reference for this in the current RFCs (it is not [RFC 3448, 5.4] and not the
|  >      corresponding section in 3448bis) but then neither Ian nor I have found this
|  > 
|  >  => or there is no such reference and then we should clearly separate the issues into (a) making sure that
|  >      the code complies to [RFC 3448, 5.4] and (b) what do we do with the "recalculating the loss rate after
|  >      a longer period of non-loss" ?
|  > 
|  > 
|  > |  I think (for what it's worth) his patch should be accepted as is, and 
|  > |  maybe he, or someone, will simplify the recalc_recalcloss part later.
|  > I agree with the points you raised, but disagree with adding an experimental part. The reason is that
|  > the CCID 3 module is still seriously broken:
|  > 
|  > 	* from the output of dccp_probe one can see that the entire system is oscillating and not
|  >           reaching a stable fixed point; even under ideal, non-loss conditions
|  >         * the behaviour using tools such as iperf is unpredictable
|  >         * performance is very poor: sometimes, on a good day one gets 50% of the bandwidth, but at other
|  >           test runs the speed goes down to only a couple of Mbits/sec (and this with a loss rate of 0)
|  > 
|  > Therefore my suggestion is for the moment to only put in changes which are documented in the RFCs, fix
|  > all these bugs, and add everything else once the basic problems have been sorted out.
|  
|  

  parent reply	other threads:[~2007-01-08 15:05 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-20  2:45 [PATCH 2/5]: DCCP Recalc on non-loss intervals Ian McDonald
2006-12-21 13:20 ` Gerrit Renker
2006-12-21 22:48 ` Ian McDonald
2007-01-03 12:56 ` Gerrit Renker
2007-01-03 22:22 ` Ian McDonald
2007-01-04 23:25 ` Eddie Kohler
2007-01-04 23:31 ` Ian McDonald
2007-01-04 23:45 ` [dccp] " Eddie Kohler
2007-01-04 23:58 ` Ian McDonald
2007-01-05  0:10 ` Eddie Kohler
2007-01-05  0:24 ` Ian McDonald
2007-01-05  0:34 ` Eddie Kohler
2007-01-05 14:47 ` Gerrit Renker
2007-01-05 16:00 ` Eddie Kohler
2007-01-05 16:31 ` Gerrit Renker
2007-01-05 16:36 ` [dccp] " Gerrit Renker
2007-01-05 21:38 ` Eddie Kohler
2007-01-08 15:05 ` Gerrit Renker [this message]
2007-01-10  1:39 ` Ian McDonald

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=200701081505.14882@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