Re: [aqm] I-D Action: draft-ietf-aqm-recommendation-04.txt

2015-05-12 Thread Wesley Eddy
On 5/8/2015 11:42 PM, Simon Barber wrote:
 I have a couple of concerns with the recommendations of this document as
 they stand. Firstly - implementing AQM widely will reduce or even
 possibly completely remove the ability to use delay based congestion
 control in order to provide a low priority or background service. I
 think there should be a recommendation that if you are implementing AQM
 then you should also implement a low priority service using DSCP, e.g.
 CS1. This will enable these low priority applications to continue to
 work in an environment where AQM is increasingly deployed. Unlike DSCPs
 that give higher priority access to the network, a background or low
 priority DSCP is not going to be gamed to get better service!
 
 Secondly, there is a recommendation that AQM be implemented both within
 classes of service, and across all classes of service. This does not
 make sense. If you are implementing AQM across multiple classes of
 service, then you are making marks or drops while ignoring what class
 the data belongs to. This destroys the very unfairness that you wanted
 to achieve by implementing the classes in the first place.
 


Hi Simon, thanks for your comments.

These comments appear to be in response to version -04 of the document,
from around 1 year ago.  The document is currently on version -11, has
past working group last call and IESG evaluation, and is in the RFC
Editor's queue.  I mention this, because it isn't clear to me how
applicable your comments are with regard to the current copy.

The current copy can be found at:
https://datatracker.ietf.org/doc/draft-ietf-aqm-recommendation/

The current revision does mention the impact to delay-based end-host
algorithms as an area for future research.

While I agree that in a lot of cases it seems like logically a good
idea to have a DiffServ configuration like you mention, I don't think
we have seen data on this yet in the working group.  Looking into this
could be part of that mentioned future work, though not something I'd
want to see hacked into this document today, so late in its publication
process.

-- 
Wes Eddy
MTI Systems

___
aqm mailing list
aqm@ietf.org
https://www.ietf.org/mailman/listinfo/aqm


Re: [aqm] draft-ietf-aqm-pie-01: review

2015-05-12 Thread Bob Briscoe

Greg,

At 23:44 12/05/2015, Greg White wrote:

Bob,

I haven't had a chance to fully read your review (though what I've read
looks to be insightful), but there was one comment in the email thread
that compelled me to respond.

You wrote:  There really is no point in employing control
theory experts to work out the stability limits
for how fast a control algorithm can respond, if
implementers then add in extra arbitrary limits
on the responsiveness like this.

I would personally truncate/modify that statement to something more like:
There really is no point in employing control theory experts to work out
the stability limits for how fast an AQM control algorithm can respond.  :)


I disagree in this respect: the control theory 
analysis gave the designer of the algorithm 
(Rong) a feel for what autotuning would be 
needed, to keep it far enough away from 
instability (given the idealised assumptions, 
i.e. only TCP Reno etc.) That's the whole point 
of a gain and phase /margin/. Not gospel, but a 
better insight into how much 'margin of error' 
there is under idealised conditions that are 
something close to those expected to be common.


My comment was in response to discovering an 
arbitrary limit had been added to the Linux 
implementation: Limit the change in p per 
T_UPDATE to 2%. The whole point of the rest of 
the PIE algorithm is to automatically limit how 
rapidly p changes, by steering a mid-course far 
enough away from two cliffs known to be out there 
somewhere (probably not where the theory says 
they are, but at least it gives a feel).


So to write in a hard-coded limit that completely 
overrides all the autotuning is IMO just plain 
ignorant (I'll eat my words if someone like Rong 
wrote that code!). It will make PIE unnecessarily 
sluggish when conditions are changing fast and 
the rest of the code has judged that it will be quite safe to react fast.


And, I should add here that 'safe' only means 
'unlikely to harm utilisation'. Even if PIE 
becomes unstable, the oscillations only hurt 
utilisation. It's not like we're dealing with nitroglycerin or something.


No. Actually, I will push back harder. This 
community needs skilled mathmaticians, skilled 
designers, skilled evangelists and skilled 
implementers. And we all need humility, to listen 
carefully to the others. And yes, agreed, we also 
need to be wary that someone who sounds like an 
expert could be pushing inapplicable theory.




Real networks aren't LTI systems, and I actually think it is disingenuous
to present classical control theoretical analyses of AQMs that are
intended to be deployed in real networks.  PIE borrows from classical
control theory, and that is fine, but I think that is about as far as one
should take it.


I'm not sure what you're saying. How can it be fine, but not be taken?

I found reading the stability analysis in the 
HPSR paper on PIE useful for understanding how to 
improve PIE autotuning over a wide range. I think 
you're criticism assumes the analysis is trying 
to claim something about the solution. Whereas I 
saw it as providing insight for those who 
designed it, and for those wanting to understand (and improve) the design.


As long as you know how much weight to give such 
analysis and what it's limits are, it is much 
much better than the Dilbert rule of thumb: 87% 
of made up numbers are better than those derived 
from analysis. I assume whoever wrote that 2% 
limit in the Linux code must live by Dilbertisms like this.




To me PIE has always seemed like a steampunk AQM in that there are a lot
of knobs, gears and wires that make it look arcane.  All of those
knobs/gears/wires were added for a reason, and they do make for a system
that works well* in comparative testing.  But, is all of the algorithmic
complexity needed?  Maybe not.


And when you read my review (pls do) you will get 
a feel for my assessment of PIE: it looks to me 
like the implementation (by which I mean the 
pseudocode on which other implementations are 
based) has failed to realise the intent of the 
design. In places this is because there are still 
holes in the design, and the implementation has 
made a mess of filling them. But it's often 
because the implementation has introduced a lot 
of bad practices (e.g. abitrary constants). Most 
importantly, too little deep thought and care has gone into the pseudocode.



Is there a more streamlined version that
would work equally well (or better)?  Probably.


We are nearly finished testing a very simple AQM 
that doesn't use any of theose steampunk PI 
controls. But only having understood the control 
stuff could we build up the confidence and 
intuition to understand where it's probably not necessary.


It's aimed at cost-reduction more than perfection 
for very large numbers of low stat-mux queues 
within a larger scheduling hierarchy. Not really 
your scenario (cable modems), but it's possible 
it could be retargeted at residential gateways 
and be as good as PIE, or 

Re: [aqm] draft-ietf-aqm-pie-01: review

2015-05-12 Thread Greg White
Bob,

I haven't had a chance to fully read your review (though what I've read
looks to be insightful), but there was one comment in the email thread
that compelled me to respond.

You wrote:  There really is no point in employing control
theory experts to work out the stability limits
for how fast a control algorithm can respond, if
implementers then add in extra arbitrary limits
on the responsiveness like this.

I would personally truncate/modify that statement to something more like:
There really is no point in employing control theory experts to work out
the stability limits for how fast an AQM control algorithm can respond.  :)

Real networks aren't LTI systems, and I actually think it is disingenuous
to present classical control theoretical analyses of AQMs that are
intended to be deployed in real networks.  PIE borrows from classical
control theory, and that is fine, but I think that is about as far as one
should take it. 


To me PIE has always seemed like a steampunk AQM in that there are a lot
of knobs, gears and wires that make it look arcane.  All of those
knobs/gears/wires were added for a reason, and they do make for a system
that works well* in comparative testing.  But, is all of the algorithmic
complexity needed?  Maybe not.  Is there a more streamlined version that
would work equally well (or better)?  Probably.  One of the most
compelling arguments in favor of PIE for the cable industry was that
nearly all of the control-law functions could be done in CPU as opposed to
being burned into gates (in a cost-constained high-performance mass-market
chip). So, it is relatively easy to make changes if further studies point
out improvements that can be made.  I'm happy that it is getting another
set of smart eyes looking at it and suggesting improvements.  I would be
especially pleased if we could show equivalent or better performance
across a broader range of scenarios with a simplified algorithm.

*works well when integrated with the DOCSIS MAC layer, in simulation.
We'll have real equipment at some point to do validation testing with.

Note, some of the comments in your review are arising from a few
errors/omissions in the pseudocode that were pointed out by others and
that Rong will have fixed in the next draft (e.g. status_update() runs
every 16ms regardless of packet arrivals, the T_UPDATE check was probably
not the best way to explain this. In DOCSIS the updates are suppressed
when in sleep mode, and resume with initialized state upon exit from
sleep).  But in my view many of the others look like good suggestions that
would warrant further study.

Your comment on queue sampling comes close to one of my lingering mental
issues with PIE.  CoDel's insight was that it isn't the current queue
latency (or moving average queue latency) that matters as much as the
minimum queue latency over a recent window. PIE doesn't take advantage of
this insight.  (CoDel, however, misses that it probably does matter how
big that minimum queue latency is and how fast it is growing/shrinking).

-Greg


On 5/9/15, 11:13 AM, Bob Briscoe bob.bris...@bt.com wrote:

Dave,

At 00:51 09/05/2015, Dave Taht wrote:
Dear Bob:

  I now understand the linux codebase for pie a lot better, as well as
some of the experimental data I have. It  looks like I could make
several of the changes you describe and put them in my next series of
tests, and based on your parameters I should be able to exercise some
edge cases across those changes. Wow, thx!

I'd like to allow the authors a chance to think
and respond before anyone does any changes to
implementations - they may have their reasons that I didn't understand.


I have not actually read the latest pie draft, but would like to make
a few comments on your comments quickly:

re: 3.1: in linux, params-ecn is presently a boolean, and could
easily be modified to mean anything and compare anything you want.
What would be a good default?

The ECN support in the linux code on enqueue looks like:

 if (!drop_early(sch, skb-len)) {
 enqueue = true;
 } else if (q-params.ecn  (q-vars.prob = MAX_PROB / 10) 

INET_ECN_set_ce(skb)) {

 /* If packet is ecn capable, mark it if drop probability

  * is lower than 10%, else drop it.

  */
 

Next mail I'll send an email I sent to Fred offlist on this subject.


Re: 5.0: will look over that code

My review didn't have a section 5.0
:?


re: 5.1,  linux code:

 /* Non-linear drop in probability: Reduce drop probability
quickly if
  * delay is 0 for 2 consecutive Tupdate periods.
  */

 if ((qdelay == 0)  (qdelay_old == 0)  update_prob)
 q-vars.prob = (q-vars.prob * 98) / 100;

Ooh joy. The great thing about open source is
that it allows everyone to assert their human
right to add their own made-up numbers.
http://dilbert.com/strip/2008-05-08

Looking at the Linux code, I just found 

Re: [aqm] I-D Action: draft-ietf-aqm-recommendation-04.txt

2015-05-12 Thread Simon Barber

Hi Wesley,

Thanks for considering my comments, and apologies for being so late in 
the process - I've only recently been able to put time into this area, 
and I understand it may be too late in the process to hack things in. I 
replied to John with where I'm concerned with the current -11 text.


Re: background / low priority streams. There are other ways to achieve a 
'lower priority', such as changing the AIMD parameters. Does not help if 
FQ is involved though. My concern is that implementing AQM removes a 
capability from the network, so doing so without providing a mechanism 
to support low priority is a negative for certain applications (backups, 
updates - and the impact these have on other applications). Would be 
good for this to be at least common knowledge. Is there any other 
document this could go in?


Simon


On 5/12/2015 5:11 PM, Wesley Eddy wrote:

On 5/8/2015 11:42 PM, Simon Barber wrote:

I have a couple of concerns with the recommendations of this document as
they stand. Firstly - implementing AQM widely will reduce or even
possibly completely remove the ability to use delay based congestion
control in order to provide a low priority or background service. I
think there should be a recommendation that if you are implementing AQM
then you should also implement a low priority service using DSCP, e.g.
CS1. This will enable these low priority applications to continue to
work in an environment where AQM is increasingly deployed. Unlike DSCPs
that give higher priority access to the network, a background or low
priority DSCP is not going to be gamed to get better service!

Secondly, there is a recommendation that AQM be implemented both within
classes of service, and across all classes of service. This does not
make sense. If you are implementing AQM across multiple classes of
service, then you are making marks or drops while ignoring what class
the data belongs to. This destroys the very unfairness that you wanted
to achieve by implementing the classes in the first place.



Hi Simon, thanks for your comments.

These comments appear to be in response to version -04 of the document,
from around 1 year ago.  The document is currently on version -11, has
past working group last call and IESG evaluation, and is in the RFC
Editor's queue.  I mention this, because it isn't clear to me how
applicable your comments are with regard to the current copy.

The current copy can be found at:
https://datatracker.ietf.org/doc/draft-ietf-aqm-recommendation/

The current revision does mention the impact to delay-based end-host
algorithms as an area for future research.

While I agree that in a lot of cases it seems like logically a good
idea to have a DiffServ configuration like you mention, I don't think
we have seen data on this yet in the working group.  Looking into this
could be part of that mentioned future work, though not something I'd
want to see hacked into this document today, so late in its publication
process.



___
aqm mailing list
aqm@ietf.org
https://www.ietf.org/mailman/listinfo/aqm


Re: [aqm] I-D Action: draft-ietf-aqm-recommendation-04.txt

2015-05-12 Thread Simon Barber

Hi John,

Where would be the best place to see if it would be possible to get 
agreement on a global low priority DSCP?


In the latest draft:

https://tools.ietf.org/html/draft-ietf-aqm-recommendation-11

Top of page 16, line 3 it says AQM should be applied across the classes 
or flows as well as within each class or flow


It does also say AQM mechanisms need to allow combination with other 
mechanisms, such as scheduling, to allow implementation of policies for 
providing fairness between different flows.


But I'm still not happy with the statement that AQM should be applied 
'across the classes'.


Simon


On 5/9/2015 6:58 PM, John Leslie wrote:

Simon Barber si...@superduper.net wrote:

I have a couple of concerns with the recommendations of this document as
they stand. Firstly - implementing AQM widely will reduce or even
possibly completely remove the ability to use delay based congestion
control in order to provide a low priority or background service.

I agree that if AQM succeeds in reducing delay, that will reduce
the delay variation that low priority services depend upon.

However, that strikes me a a problem that delay-based congestion-
control services will have to deal with regardless of AQM.

Wouldn't we be better off to figure out how AQMs could signal what
these delay-based services actually care about?


I think there should be a recommendation that if you are implementing
AQM then you should also implement a low priority service using DSCP,
e.g. CS1.

I don't follow how that could help in practice, except for the case
where the AQM is implemented _very_ near the sender. (DSCP gets lost
pretty quickly at Autonomous System boundaries.)


This will enable these low priority applications to continue to
work in an environment where AQM is increasingly deployed. Unlike
DSCPs that give higher priority access to the network, a background
or low priority DSCP is not going to be gamed to get better service!

(I wish I believed we could get agreement to do this!)


Secondly, there is a recommendation that AQM be implemented both within
classes of service, and across all classes of service.

I'm not finding this in the document: Quality of Service is found
in Section 2.1; but that's not class of service. Traffic class is
found in Sections 2.1 and 4.4, neither of which mentions across all
classes.

???


This does not make sense.

Agreed.


If you are implementing AQM across multiple classes of service, then you
are making marks or drops while ignoring what class the data belongs to.

Alas, that doesn't make sense either. :^(


This destroys the very unfairness that you wanted to achieve by
implementing the classes in the first place.

That's a funny way to phrase it...

--
John Leslie j...@jlc.net


___
aqm mailing list
aqm@ietf.org
https://www.ietf.org/mailman/listinfo/aqm


Re: [aqm] I-D Action: draft-ietf-aqm-recommendation-04.txt

2015-05-12 Thread Fred Baker (fred)

 On May 12, 2015, at 9:06 PM, Simon Barber si...@superduper.net wrote:
 
 Where would be the best place to see if it would be possible to get agreement 
 on a global low priority DSCP?

I’d suggest

https://tools.ietf.org/html/rfc4594
4594 Configuration Guidelines for DiffServ Service Classes. J.
 Babiarz, K. Chan, F. Baker. August 2006. (Format: TXT=144044 bytes)
 (Updated by RFC5865) (Status: INFORMATIONAL)

It refers to

   [QBSS] QBone Scavenger Service (QBSS) Definition, Internet2
  Technical Report Proposed Service Definition, March 2001.

(http://mgoutell.free.fr/gridftp/QBSS/qbss-definition.txt) and states that

 Within QBone, traffic marked with DSCP 001000 (binary) shall be
 considered in the QBSS class and should be given the service described
 in this document.  Notice that while DSCP values generally have only
 local significance we are assigning global significance to this
 particular codepoint within QBone.  We refer to packets marked
 with DSCP 001000 as being marked with the QBSS code point”.


That’s where we came up with recommending CS1 (001000) for the traffic class.

I’m pretty sure the latter ultimately resulted in an RFC, but for some reason 
I’m not finding it. The closest thing I see is

https://tools.ietf.org/html/rfc6297
6297 A Survey of Lower-than-Best-Effort Transport Protocols. M. Welzl,
 D. Ros. June 2011. (Format: TXT=46532 bytes) (Status: INFORMATIONAL)


signature.asc
Description: Message signed with OpenPGP using GPGMail
___
aqm mailing list
aqm@ietf.org
https://www.ietf.org/mailman/listinfo/aqm