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: Wed, 03 Jan 2007 12:56:11 +0000	[thread overview]
Message-ID: <200701031256.11671@strip-the-willow> (raw)
In-Reply-To: <200612201545.39441.ian.mcdonald@jandi.co.nz>

Hi Ian,

I appreciate the work you have put into this patch and have no doubt that
it may have cost a lot of time, but the problem here is one of perspective.

Let's separate the issues:

|  The RFC is a little confusing but I think I have carried out it's
|  intention correctly. I'll quote verbatim here the relevant parts:
|  
|     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.
|  
|     Thus if the most recent loss intervals are I_0 to I_n, with I_0 being
|     the interval since the most recent loss event, then we calculate the
|     average loss interval I_mean as:
|  
|  Notice here the "interval since the most recent packet loss event".
|  This implies (but would help if explicit) that this is an interval
|  with no loss. We only use if it would increase the average.
|  
|  Backing up my implications is that we have intervals from I_0 to I_n
|  which is actually n+1 intervals so therefore I read I_0 to be the
|  interval of non-loss. Does this help? Once you see that it all falls
|  into place.
|  
|  > If you mean this, then the patch is not necessary. The reason is that this statement
|  > refers to I_tot0 versus I_tot1. The statement
|  >
|  >   I_tot = max(I_tot0, I_tot1);
|  >
|  > takes care of using the `interval since the most recent packet loss event' only if
|  > it is sufficiently large. It is not explicit to see, but is implicitly contained in the
|  > way the two weighted averages are compared against each other: it boils down to
|  > comparing I_0 against the oldest 5 loss intervals.
|  >
|  > [ For a more detailed explanation, cf. the MSc thesis by Widmer, I also have a set of
|  >   notes on this case ]
|  >
|  I didn't mean that but someone had tried to implement it and had done
|  it incorrectly. The intent as I read is not to compare the calculation
|  with and without the most recent loss interval but to compare with and
|  without the non-loss interval.
 1) see previous posting - I think we are still having a misunderstanding here and
    I do think that what you cite above is already covered by the condition 
    I_tot = max(I_tot0, I_tot1)". That would mean, as soon as we implement [RFC 3448, 5.4],
    we have this sorted out (and this method has been tested for 7 years).

|  The implementation in the kernel, which was wrong logic, also had
|  wrong implementation! The code was taken over from FreeBSD (relicensed
|  under GPL) and we actually didn't analyse properly and were excluding
|  the wrong item from the loop as linked lists ran the opposite
|  direction in FreeBSD to Linux in this case!!
 2) if you think this has not been implemented correctly, then can you please point out
    > where <. The situation at the moment is: you are saying "X has been implemented
    wrongly, so I use Y to solve the problem". Y however has not much in common with X, so
    we are left with a broken method X and a non-standard method Y. 

|  > As far as I can see, it is non-standard.
|  
|  I believe it is standard as per earlier. It does boost performance but
|  correctly so. Search the archives for Burak and you will see what it
|  solves. It is particularly applicable to links like satellite with
|  fixed bandwidth. Think about say a 128 Kbits link and you get a loss
|  when you are at 40 Kbits per second. If you get no more loss then you
|  can never achieve your link speed as i_mean is not recalculated.
 3) I have a suggestion: you seem to be sure of the merits of this solution and report on 
    test results. My suggestion would be to offer using this method via a configuration
    option (same as per the nofeedback timer threshold). You could put detailed advice into
    the kernel configuration menu, and we would have the best of both worlds - a standards-
    compliant TFRC implementation and a configurable Ian's nifty solution. Would that settle
    things?


|  All this is is a method of not having to call calc_i_mean for EVERY
|  packet which would be very expensive on CPU. It is new but is a very
 4) This code is only invoked when ccid3_hc_rx_detect_loss() returns true, hence it is not
    invoked for every packet. 

  parent reply	other threads:[~2007-01-03 12:56 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 [this message]
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
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=200701031256.11671@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