> On 25 May, 2015, at 07:31, Mikael Abrahamsson <[email protected]> wrote:
> 
> I don't understand the difference between AF1 and CS1. Please elaborate.


> On Sun, 24 May 2015, Simon Barber wrote:
> 
> I can't find reference to DSCP 000010 or 000110, where are they defined?


It’s important to remember that the DSCP field and, to a lesser extent, the ECN 
bits (which both reside in the IP-header TOS byte) overlap with the legacy 
Precedence and Type-Of-Service fields, and are only partly backwards-compatible 
with them.  Probably a lot of network (and network hardware) engineers still 
think in terms of the legacy definitions, even though DSCP and ECN together 
have been around for almost 15 years now.

Precedence and TOS used to be orthogonal concepts.  Precedence meant 
“priority”, and TOS was meant to influence routing decisions; the example given 
was satellite (high delay, high bandwidth) versus leased-line (low delay, low 
bandwidth), which just goes to show how assumptions about technology go 
obsolete over time.

CS0, CS1, CS2 … CS7 are DSCPs which correspond to the legacy Precedence field 
set to the given value, and the TOS field (not to be confused with the TOS 
*byte*) set to zero.  The legacy interpretation of these is that CS7 is highest 
priority, and CS0 is lowest priority; each was given military-style names which 
are mostly forgotten (and better so).  It is an unfortunate but understandable 
historical artefact that the default setting was the lowest priority.

AF1x and CS1 both set the legacy Precedence field to 001, which is all that 
many hardware priority systems look at.  However, a DSCP is a homogeneous field 
with all six bits significant, and they differ in the fourth and fifth bits 
(001xx0).  According to my cheat-sheet compiled from RFC4594, AF1x corresponds 
to “high throughput data” with three different “drop priority” levels (in 
common with the other three Assured Forwarding groups: AF2x, AF3x, AF4x).

DSCP 000010 has the shorthand TOS2, because it corresponds to the legacy 
Precedence 000, TOS 010.  It was the legacy method of specifying “high 
throughput”.

TOS1 (000001) meant “maximum reliability”, which doesn’t really correspond to 
any modern DSCP, and TOS4 (000100) meant “minimum delay”, which best 
corresponds to EF (101110).

AFAIK, there is no standardised meaning for DSCP 000110.  It also has ambiguous 
meaning in the legacy scheme, and is unlikely to have been used by well-behaved 
applications.  I would consider it an available spare.

All DSCPs matching xxxx11 are reserved for local and experimental use.  They do 
escape their environments on occasion.

There was also a fourth TOS bit which was meant to specify “minimum cost”.  
However, I understand it was specified rather late in the Precedence/TOS 
lifecycle, and in any case it overlaps with the ECN bits.  It sure would have 
been useful to still have that available - but having ECN is worth the trouble.

To me, it’s somewhat ambiguous whether “high throughput” should mean “low 
priority”.  It strikes me that many application developers would seize on it as 
meaning “faster”.  If they found that it actually made things slower (in a 
magical future where functional Diffserv support was ubiquitous), they might 
give up on Diffserv entirely as a bad job.

Nevertheless, when I worked out an eight-class Diffserv scheme as a modest 
simplification of the 12 classes described in RFC4594, I classed TOS2 / AF1x 
“high throughput” as lower than best-effort, but just above CS1 “background”.  
This was on the basis that throughput had to be traded off against latency, and 
Cake’s priority scheme thus gave “higher” classes more priority but less 
throughput.  In the four-class scheme that’s now the default in Cake, however, 
I lumped the “high throughput” classes in with “best effort”, with only CS1 
being distinct as “background".

Here’s my cheat-sheet, covering the 25 well-known DSCPs:

/*      List of traffic classes in RFC 4594:
                (roughly descending order of contended priority)
                (roughly ascending order of uncontended throughput)

        Network Control (CS6,CS7)      - routing traffic
        Telephony (EF,VA)         - aka. VoIP streams
        Signalling (CS5)               - VoIP setup
        Multimedia Conferencing (AF4x) - aka. video calls
        Realtime Interactive (CS4)     - eg. games
        Multimedia Streaming (AF3x)    - eg. YouTube, NetFlix, Twitch
        Broadcast Video (CS3)
        Low Latency Data (AF2x,TOS4)      - eg. database
        Ops, Admin, Management (CS2,TOS1) - eg. ssh
        Standard Service (CS0 & unrecognised codepoints)
        High Throughput Data (AF1x,TOS2)  - eg. web traffic
        Low Priority Data (CS1)           - eg. BitTorrent

        Total 12 traffic classes.
 */

It’s a mess, isn’t it?

 - Jonathan Morton

_______________________________________________
aqm mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/aqm

Reply via email to