I've attached a cheat-sheet (view/print with monospace font).
There is a little bit of historical context that's useful to understand
ToS, though. For example, Michael shows that some flows have ToS 2. That
could either be an antique "min-montetary-cost" host or, more likely,
a modern ECN-compliant host.
ECN (RFC 3168) is an emerging issue for traditional netflow collection
and processing. The jist of ECN is that an intermediary router can,
after sensing congestion, change the lower two bits of ToS to indicate
congestion so that the hosts can slow themselves down. It's a L3
implementation of frame-relay FECN, essentially. Unfortunately, since
the ToS field changes packet-to-packet and hop-to-hop, it also disrupts
the traditional netflow 7-tuplet key (protocol, src/dst IP, src/dst port,
ToS, input interface).
If you can, exclude ToS as a flow key on your netflow sources. Recent
cisco IOS versions let you do this with flexible netflow while still
exporting netflow v5.
-Craig
On Sat, 5 Dec 2009, [email protected] wrote:
> > Various flow-stat and flow-report output include Type of Service
> > reports. I'm finally on a network where we use ToS, and I need to
> > make sense of the results.
> >
> > Can anyone point me to any documentation on the ToS values flow-tools
> > reports? How can I map these results to, say, DSCP? Here's a snippet
> > of flow-stat output for reference:
>
> There's no magic here. ToS is the whole 8 bit ToS field. Divide by 4
> (or right shift 2) to get DSCP, since DSCP is the 6 most significant
> bits of the ToS field.
>
> Steinar Haug, Nethelp consulting, [email protected]
> _______________________________________________
> Flow-tools mailing list
> [email protected]
> http://mailman.splintered.net/mailman/listinfo/flow-tools
>
**** Pre-1998
The IPv4 ToS byte was part of the original 1981 definition of Internet Protocol
in RFC 791, which specified a 3-bit precedence value and 3-bits of ToS
attributes. In the tables below, "tos" values refer to the entire byte. In
1992, RFC 1349 added a fourth ToS attribute.
0x80 0x40 0x20 0x10 0x08 0x04 0x02 0x01
+-----+-----+-----+-----+-----+-----+-----+-----+
| PRECEDENCE | TOS attributes | - |
+-----+-----+-----+-----+-----+-----+-----+-----+
PRECEDENCE TOS attributes
name dec tos bin name dec tos bin
network 7 224 111 min-delay 8 16 1000
internet 6 192 110 max-throughput 4 8 0100
critical 5 160 101 max-reliability 2 4 0010
flash-override 4 128 100 min-monetary-cost 1 2 0001
flash 3 96 011 normal 0 0 0000
immediate 2 64 010
priority 1 32 001
routine 0 0 000
**** Post-1998
RFC 2474 reworked the ToS as a 6-bit Differentiated Services Code Point (DSCP)
and, soon after, RFC 3168 allocated the lowest two bits for Error Congestion
Notification (ECN, an IP analogy of frame-relay FECN and ATM EFCI).
0x80 0x40 0x20 0x10 0x08 0x04 0x02 0x01
+-----+-----+-----+-----+-----+-----+-----+-----+
| DSCP | ECN |
+-----+-----+-----+-----+-----+-----+-----+-----+
DSCP
name dec tos binary name dec tos binary
AF11 10 40 001010 CS1 8 32 001000
AF12 12 48 001100 CS2 16 64 010000
AF13 14 56 001110 CS3 24 96 011000
AF21 18 72 010010 CS4 32 128 100000
AF22 20 80 010100 CS5 40 160 101000
AF23 22 88 010110 CS6 48 192 110000
AF31 26 104 011010 CS7 56 224 111000
AF32 28 112 011100 EF 46 184 101110
AF33 30 120 011110 default 0 0 000000
AF41 34 136 100010
AF42 36 144 100100 AF = assured forwarding
AF43 38 152 100110 EF = expedited forwarding
CS = class selector
ECN (unrelated to QoS)
00 Not-ECT Not ECN-Capable Transport
01 ECT(0) ECN-Capable Transport
10 ECT(1) ECN-Capable Transport
11 CE Congestion Experienced
**** Notes on interpreting the ToS byte
The two definitions are complimentary for the upper 3-bits. This is good, since
those three bits are often copied to/from the 3-bit class-of-service (CoS)
field of layer-2 802.1p frames and the 3-bit experimental (EXP) field of MPLS
frames. Bits 3-5, however, are fairly incompatible..
Thus, it's important not to oversimplify precedence/DSCP as a simple pecking
order. In reality, each unique precedence/DSCP value conveys a packet's
requirements for throughput, latency, and packet loss, three traits that are
somewhat at odds with each other. And, any value can be assigned to any
organizationally-unique purposes. For example,
* Packets with precedence 5 and/or DSCP EF are often serviced by priority
queues, so they may delay packets with higher precedence/DSCP values.
* Within each AF level (e.g., AF2x includes AF21, AF22, and AF23), the
higher values indicate a higher tolerance to packet loss. I.e., a congested
interface should drop AF22 packets earlier than AF21 packets. In Cisco IOS,
this behavior is implemented with DiffServ-complaint WRED ('random-detect dscp'
on a class-map).
* Any DSCP value under CS6 can be assigned for any organizationally-unique
use. For example, Precedence 1/DSCP CS1 is often assigned for use as a
less-than-best-effort class called scavenger. To successfully implement the
scavenger class, all network devices must agree to treat CS1 traffic worse than
Precedence 0/DSCP default.
_______________________________________________
Flow-tools mailing list
[email protected]
http://mailman.splintered.net/mailman/listinfo/flow-tools