[Cerowrt-devel] SQM: tracking some diffserv related internet drafts better
Black, David
david.black at emc.com
Fri Nov 14 15:23:02 EST 2014
Sebastian,
Summarizing, as opposed to extending the inline responses ...
> > And this is complementary:
> >
> > http://tools.ietf.org/html/draft-ietf-tsvwg-rtcweb-qos-03
>
> Oha, that's 15 priority levels (out of ~64 possible?) right there for a
> browser to mark packets with depending on media type. Now, not all need to map
> to real queues but that seems a lot, so that I would expect in real life a
> bunch of those will map to the same queues.
Yes, that's completely realistic, and reasonable, IMHO.
> > -1) They still think the old style tos imm bit is obsolete. Sigh. Am I
> > the last person that uses ssh or plays games?
Actually, in the form of CS2, it is very definitely not obsolete ...
> Are we free in cerowrt/SQM to just ignore this and just keep imm (CS2?)
> above the best effort queue?
Yes - that rtcweb-qos draft is only applicable to the DSCPs that the browser
will use with WebRTC application. It is not supposed to tell the networks
to not support other DSCPs - in addition to CS2, CS6 and CS7 are important
as mentioned further below.
Beyond that, we can do better - that rtcweb-qos draft has a number of
significant open issues and could well change quite a bit. Could you and
Dave T. put your heads together and send me a paragraph on what that draft
should say about CS2 and why?
A specific example is that the DSCP table in Section 5 of that draft
does not use CS2 - if you could suggest where CS2 should appear in that
table, I will (wearing my tsvwg WG co-chair "hat") ensure that the draft
authors do something about that input.
FWIW, independent of grousing about the overall importance of "running
code" to IETF, I do my best to pay attention, as specs that can't or
won't be implemented just waste everyone's time.
> > 0) Key to this draft is expecting that the AF code points on a single
> > 5-tuple not be re-ordered, which means dumping AF41 into a priority
> > queue and AF42 into the BE queue is incorrect.
Yes, that's definitely incorrect ... and this situation is not new -
see RFC 2597.
> So what about sticking to the class selectors only in SQM? If I
> understand correctly we can match on the CS bits only and ignore the other
> bits; I think each AFNx map to the same CS(M) class.
IMHO, that's reasonable, and DiffServ was designed to accommodate existing
implementations that do that, so I don't see a problem with a new
implementation decision to do something like that in pursuit of simplicity, etc.
One request - please describe this as "mapping the CCCxxx codepoints to one
queue, for all values of xxx" rather than "ignoring xxx" even if the results
are the same, and even if the code winds up masking off those bits instead
of using a full mapping table, as "mapping" language goes over better
than "masking" ...
> > 1a) Certainly only doing AF42 in sqm is pretty wrong (that was left
> > over from my test patches against mosh - mosh ran with AF42 for a
> > while until they crashed a couple routers with it)
>
> Why? We could just switch to stash all CS4 packets into this queue and
> be compliant again to the recommendation to treat packets in each AFN set
> equally?
I see no problems with that approach.
> > 3) Squashing inbound dscp should still be the default option.
>
> My interpretation of http://tools.ietf.org/html/draft-ietf-dart-dscp-rtp-10
> section 3.2's " When DiffServ is used, the edge or boundary nodes of a network
> are responsible for ensuring that all traffic entering that network conforms
> to that network's policies for DSCP and PHB usage, and such nodes may change
> DSCP markings on traffic to achieve that result." is anything goes including
> remapping to all zeros aka squashing.
That's correct, and there's a lot of "remapping to all zeros aka squashing"
deployed out there - it's definitely ok wrt these drafts and the DiffServ RFCs.
> http://tools.ietf.org/html/rfc2474 talks
> about a MUST to put CS 6 and 7 into a higher priority class than CS0, but I
> really doubt that any ISP will allow me to label all my traffic CS7 an will
> treat it accordingly, so remapping to zero is okay if not by standard then by
> cause of reality ;).
That RFC 2474 statement is primarily about the internal operation of a diffserv
domain, e.g., one probably wants OSPF traffic prioritized over web traffic sot
that routing converges faster after a disruption. I would be very surprised to
see ISPs accept customer traffic at CS6 or CS7 w/o remarking at the edge unless
that traffic is immediately shoved into a tunnel that hides those codepoint
values from the ISPs network.
When networks peer, CS6 is appropriate for use across peering interfaces/
intereconnects but the traffic that uses CS6 is likely to terminate at or
close to the edge of the receiving network - see Section 3.2 of draft-geib:
http://tools.ietf.org/html/draft-geib-tsvwg-diffserv-intercon-08#section-3
I welcome any suggestions for improving that text.
Thanks,
--David
> -----Original Message-----
> From: Sebastian Moeller [mailto:moeller0 at gmx.de]
> Sent: Friday, November 14, 2014 9:02 AM
> To: Dave Täht
> Cc: cerowrt-devel at lists.bufferbloat.net; Black, David
> Subject: Re: [Cerowrt-devel] SQM: tracking some diffserv related internet
> drafts better
>
> Hi Dave,
>
> I probably do not understand the topic fully, but...
>
> On Nov 13, 2014, at 18:26 , Dave Taht <dave.taht at gmail.com> wrote:
>
> > This appears to be close to finalization, or finalized:
> >
> > http://tools.ietf.org/html/draft-ietf-dart-dscp-rtp-10
> >
> > And this is complementary:
> >
> > http://tools.ietf.org/html/draft-ietf-tsvwg-rtcweb-qos-03
>
> Oha, that's 15 priority levels (out of ~64 possible?) right there for a
> browser to mark packets with depending on media type. Now, not all need to map
> to real queues but that seems a lot, so that I would expect in real life a
> bunch of those will map to the same queues.
> If I understand correctly we already have a problems getting decent AQM
> implemented at core switching/routing equipment, how realistic is it to expect
> that these devices implement differential packet drop probabilities per
> diffserv markings? I f the answer is not realistic the last three DS bits
> become functionally equal. . Also CS1 for audio/video? I thought this to be
> the scavenger class and hence not suitable for anything but bulk background
> traffic if there is even the slightest contention on the path. (on second
> thought this will allow to turn a CS1 internet radio in a decent congestion
> monitor, if the audio skips you know the network is starting to develop
> issues.).
>
> >
> > While wading through all this is tedious, and much of the advice
> contradictory,
> > there are a few things that could be done more right in the sqm system
> > that I'd like to discuss. (feel free to pour a cup of coffee and read
> > the drafts)
> >
> > -1) They still think the old style tos imm bit is obsolete. Sigh. Am I
> > the last person that uses ssh or plays games?
>
> Are we free in cerowrt/SQM to just ignore this and just keep imm (CS2?)
> above the best effort queue?
>
> >
> > 0) Key to this draft is expecting that the AF code points on a single
> > 5-tuple not be re-ordered, which means dumping AF41 into a priority
> > queue and AF42 into the BE queue is incorrect.
>
> So what about sticking to the class selectors only in SQM? If I
> understand correctly we can match on the CS bits only and ignore the other
> bits; I think each AFNx map to the same CS(M) class. Looking at section
> "4.2.2.3 Using the Class Selector PHB Requirements for IP Precedence
> Compatibility" of http://tools.ietf.org/html/rfc2474#page-11 seems to confirm
> that interpretation.
>
>
> >
> > 1) SQM only prioritizes a few diffserv codepoints (just the ones for
> > which I had tools doing classification, like ssh). Doing so with tc
> > rules is very inefficient presently. I had basically planned on
> > rolling a new tc and/or iptables filter to "do the right thing" to map
> > into all 64 codepoints via a simple lookup table (as what is in the
> > wifi code already), rather than use the existing mechanism... and
> > hesitated
> > as nobody had nailed down the definitions of each one.
>
> Well, "tc filter" hurts us badly as I figured out implementing filters
> to look into PPP encapsulated packets to get to the TOS bits. But in theory
> all tests for the individual code points can be turned into a hawh operation
> in tc filter so that we only pay the price for each encapsulation type (IPv4
> IPv6, IPv$ in PPP, IPv6 in PPP, to poke through the PPP layer costs a few
> additional ANDed match tests, but I really really hope that tc filter is smart
> enough to stop filter processing on the first mismatch.) On my TODO list for
> SQM is to use tc filter's hash functionality to process all code points in one
> operation per packet. This should also allow/require mapping each of the 64
> diffserve markings to our queues so that any "ietf-recommendation-of-the-day"
> can be a easily implemented by changing our mapping table...
>
> >
> > That said, I have not measured recently the impact of the extra tc
> > filters and iptables rules required.
>
> As far as I can tell tc filter is costly, in a "non-scientific" test
> with netperf-wrapper's RRUL test I saw the ICMP-CDF "robust-range" (the delay
> span in which the CDF went from ~5% to 95%) incase from 10ms to 30ms. No idea
> about the iptables rules (well, the internet seems to argue iptables being
> much cheaper than tc filter).
>
> >
> > 1a) Certainly only doing AF42 in sqm is pretty wrong (that was left
> > over from my test patches against mosh - mosh ran with AF42 for a
> > while until they crashed a couple routers with it)
>
> Why? We could just switch to stash all CS4 packets into this queue and
> be compliant again to the recommendation to treat packets in each AFN set
> equally?
>
> >
> > The relevant lines are here:
> >
> > https://github.com/dtaht/ceropackages-3.10/blob/master/net/sqm-
> scripts/files/usr/lib/sqm/functions.sh#L411
> >
> > 1b) The cake code presently does it pretty wrong, which is eminately
> fixable.
> >
> > 1c) And given that the standards are settling, it might be time to
> > start baking them into a new tc or iptables filter. This would be a
> > small, interesting project for someone who wants to get their feet wet
> > writing this sort of thing, and examples abound of how to do it.
>
> So what I plan on doing until the end of the year is getting the hashed
> tc filter set up for SQM than implementing/testing different mappings will be
> a piece of cake just change 64 values and you are done...
>
> >
> > 2) A lot of these diffserv specs - notably all the AFxx codepoints -
> > are all about variable drop probability. (Not that this concept has
> > been proven to work in the real world) We don't do variable drop
> > probability... and I haven't the slightest clue as to how to do it in
> > fq_codel. But keeping variable diffserv codepoints in order on the
> > same 5 tuple seems to be the way things are going. Still I have
> > trouble folding these ideas into the 3 basic queue system fq_codel
> > uses, it looks to me as most of the AF codepoints end up in the
> > current best effort queue, as the priority queue is limited to 30% of
> > the bandwidth by default.
>
> Is this really relevant for the wider internet at all? As you argue
> below (and as is argued in the drafts cited above) each network can do what
> ever it likes with code points so the relevant question, as I see it is not
> what could we do with the code points if we had all 6 bits for us end to end,
> but rather how many and which bits actually survive a trip over the open
> internet ;)
>
> >
> >
> > 3) Squashing inbound dscp should still be the default option.
>
> My interpretation of http://tools.ietf.org/html/draft-ietf-dart-dscp-rtp-10
> section 3.2's " When DiffServ is used, the edge or boundary nodes of a network
> are responsible for ensuring that all traffic entering that network conforms
> to that network's policies for DSCP and PHB usage, and such nodes may change
> DSCP markings on traffic to achieve that result." is anything goes including
> remapping to all zeros aka squashing. http://tools.ietf.org/html/rfc2474 talks
> about a MUST to put CS 6 and 7 into a higher priority class than CS0, but I
> really doubt that any ISP will allow me to label all my traffic CS7 an will
> treat it accordingly, so remapping to zero is okay if not by standard then by
> cause of reality ;).
>
>
>
>
> >
> > 4) My patch set to the wifi code for diffserv support disables the VO
> > queue almost entirely in favor of punting things to the VI queue
> > (which can aggregate), but I'm not sure if I handled AFxx
> > appropriately.
> >
> > 5) So far as I know, no browser implements any of this stuff yet. So
> > far as I know nobody actually deployed a router that tries to do smart
> > things with this stuff yet.
>
> I would love to know whether the proposed markings actually survive a
> trip through the open internet at all. I would like to argue that until that
> actually happens this a nicely academic discussion (cerowrt does a fine job
> already with its nice fq_codel hierarchy, and if all the new fancy stuff will
> be wiped directly by my ISP I am not sure that implementing the proposal in
> sam is going to change anything, especially nothing that can be measured. As
> they say, "measurement data or it did not happen" ;) )
>
> >
> > 6) I really wish there were more codepoints for background traffic than cs1.
>
> But isn't that what AF1x is all about?. I agree the range of the 6 DS
> bits is not used to its fullest extend: rather than bits treat is as a number
> and do: current priority = (DS - 32) so we have a range from -32 to 31 (or so)
> and simply require that higher values are not treated with less priority than
> smaller numbers. (Heck maybe special case CS0 to also mean zero for
> backward/reality compatibility ;) )
> But most likely I just have misunderstood the whole issue..
>
> Best Regards
> Sebastian
>
>
>
> >
> > --
> > Dave Täht
> >
> > thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks
> > _______________________________________________
> > Cerowrt-devel mailing list
> > Cerowrt-devel at lists.bufferbloat.net
> > https://lists.bufferbloat.net/listinfo/cerowrt-devel
More information about the Cerowrt-devel
mailing list