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.
next prev 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