Packets are labeled for service handling by means of the DS octet, which is placed in the Type of Service field of an IPv4 header or the Traffic Class field of an IPv6 header. RFC 2474 defines the DS octet as having the following format: The leftmost 6 bits form a DS codepoint and the rightmost 2 bits are currently unused. The DS codepoint is the DS label used to classify packets for differentiated services.
With a 6-bit codepoint, there are in principle 64 different classes of traffic that could be defined. These 64 codepoints are allocated across three pools of codepoints, as follows:
Codepoints of the form xxxxx0, where x is either 0 or 1, are reserved for assignment as standards.
Codepoints of the form xxxx11 are reserved for experimental or local use.
Codepoints of the form xxxx01 are also reserved for experimental or local use, but may be allocated for future standards action as needed.
Within the first pool, several assignments are made in RFC 2474. The codepoint 000000 is the default packet class. The default class is the best-effort forwarding behavior in existing routers. Such packets are forwarded in the order in which they are received, as soon as link capacity becomes available. If other, higher-priority packets in other DS classes are available for transmission, these are given preference over best-effort default packets.
Codepoints of the form xxx000 are reserved to provide backward compatibility with the IPv4 precedence service. To explain this requirement, we need to digress to an explanation of the IPv4 precedence service. The IPv4 type of service (TOS) field includes two subfields: a 3-bit precedence subfield and a 4-bit TOS subfield. These subfields serve complementary functions. The TOS subfield provides guidance to the IP entity (in the source or router) on selecting the next hop for this datagram, and the precedence subfield provides guidance about the relative allocation of router resources for this datagram.
The precedence field is set to indicate the degree of urgency or priority to be associated with a datagram. If a router supports the precedence subfield, there are three approaches to responding:
Route selection. A particular route may be selected if the router has a smaller queue for that route or if the next hop on that route supports network precedence or priority (for example, a token ring network supports priority).
Network service. If the network on the next hop supports precedence, that service is invoked.
Queuing discipline. A router can use precedence to affect how queues are handled. For example, a router may give preferential treatment in queues to datagrams with higher precedence.
RFC 1812, Requirements for IP Version 4 Routers, provides recommendations for queuing discipline that fall into two categories:
Routers SHOULD implement precedence-ordered queue service. Precedence-ordered queue service means that when a packet is selected for output on a (logical) link, the packet of highest precedence that has been queued for that link is sent.
Any router MAY implement other policy-based throughput management procedures that result in other than strict precedence ordering, but it MUST be configurable to suppress them (i.e., use strict ordering).
Congestion control. When a router receives a packet beyond its storage capacity, it must discard it or some other packet or packets.
A router MAY discard the packet it has just received; this is the simplest but not the best policy.
Ideally, the router should select a packet from one of the sessions most heavily abusing the link, given that the applicable QoS policy permits this. A recommended policy in datagram environments using FIFO queues is to discard a packet randomly selected from the queue. An equivalent algorithm in routers using fair queues is to discard from the longest queue. A router MAY use these algorithms to determine which packet to discard.
If precedence-ordered queue service is implemented and enabled, the router MUST NOT discard a packet whose IP precedence is higher than that of a packet that is not discarded.
A router MAY protect packets whose IP headers request the maximize reliability TOS, except where doing so would be in violation of the previous rule.
A router MAY protect fragmented IP packets, on the theory that dropping a fragment of a datagram may increase congestion by causing all fragments of the datagram to be retransmitted by the source.
To help prevent routing perturbations or disruption of management functions, the router MAY protect packets used for routing control, link control, or network management from being discarded. Dedicated routers (i.e., routers that are not also general purpose hosts, terminal servers, etc.) can achieve an approximation of this rule by protecting packets whose source or destination is the router itself.
The DS codepoints of the form xxx000 should provide a service that at minimum is equivalent to that of the IPv4 precedence functionality.