linux/include/net/dscp.h

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2024 Pengutronix, Oleksij Rempel <[email protected]> */

#ifndef __DSCP_H__
#define __DSCP_H__

/*
 * DSCP Pools and Codepoint Space Division:
 *
 * The Differentiated Services (Diffserv) architecture defines a method for
 * classifying and managing network traffic using the DS field in IPv4 and IPv6
 * packet headers. This field can carry one of 64 distinct DSCP (Differentiated
 * Services Code Point) values, which are divided into three pools based on
 * their Least Significant Bits (LSB) patterns and intended usage. Each pool has
 * a specific registration procedure for assigning DSCP values:
 *
 * Pool 1 (Standards Action Pool):
 * - Codepoint Space: xxxxx0
 *   This pool includes DSCP values ending in '0' (binary), allocated via
 *   Standards Action. It is intended for globally recognized traffic classes,
 *   ensuring interoperability across the internet. This pool encompasses
 *   well-known DSCP values such as CS0-CS7, AFxx, EF, and VOICE-ADMIT.
 *
 * Pool 2 (Experimental/Local Use Pool):
 * - Codepoint Space: xxxx11
 *   Reserved for DSCP values ending in '11' (binary), this pool is designated
 *   for Experimental or Local Use. It allows for private or temporary traffic
 *   marking schemes not intended for standardized global use, facilitating
 *   testing and network-specific configurations without impacting
 *   interoperability.
 *
 * Pool 3 (Preferential Standardization Pool):
 * - Codepoint Space: xxxx01
 *   Initially reserved for experimental or local use, this pool now serves as
 *   a secondary standardization resource should Pool 1 become exhausted. DSCP
 *   values ending in '01' (binary) are assigned via Standards Action, with a
 *   focus on adopting new, standardized traffic classes as the need arises.
 *
 * For pool updates see:
 * https://www.iana.org/assignments/dscp-registry/dscp-registry.xhtml
 */

/* Pool 1: Standardized DSCP values as per [RFC8126] */
#define DSCP_CS0
/* CS0 is some times called default (DF) */
#define DSCP_DF
#define DSCP_CS1
#define DSCP_CS2
#define DSCP_CS3
#define DSCP_CS4
#define DSCP_CS5
#define DSCP_CS6
#define DSCP_CS7
#define DSCP_AF11
#define DSCP_AF12
#define DSCP_AF13
#define DSCP_AF21
#define DSCP_AF22
#define DSCP_AF23
#define DSCP_AF31
#define DSCP_AF32
#define DSCP_AF33
#define DSCP_AF41
#define DSCP_AF42
#define DSCP_AF43
#define DSCP_EF
#define DSCP_VOICE_ADMIT

/* Pool 3: Standardized assignments, previously available for experimental/local
 * use
 */
#define DSCP_LE

#define DSCP_MAX

#endif /* __DSCP_H__ */