1*768cf841SOleksij Rempel /* SPDX-License-Identifier: GPL-2.0 */ 2*768cf841SOleksij Rempel /* Copyright (c) 2024 Pengutronix, Oleksij Rempel <kernel@pengutronix.de> */ 3*768cf841SOleksij Rempel 4*768cf841SOleksij Rempel #ifndef __DSCP_H__ 5*768cf841SOleksij Rempel #define __DSCP_H__ 6*768cf841SOleksij Rempel 7*768cf841SOleksij Rempel /* 8*768cf841SOleksij Rempel * DSCP Pools and Codepoint Space Division: 9*768cf841SOleksij Rempel * 10*768cf841SOleksij Rempel * The Differentiated Services (Diffserv) architecture defines a method for 11*768cf841SOleksij Rempel * classifying and managing network traffic using the DS field in IPv4 and IPv6 12*768cf841SOleksij Rempel * packet headers. This field can carry one of 64 distinct DSCP (Differentiated 13*768cf841SOleksij Rempel * Services Code Point) values, which are divided into three pools based on 14*768cf841SOleksij Rempel * their Least Significant Bits (LSB) patterns and intended usage. Each pool has 15*768cf841SOleksij Rempel * a specific registration procedure for assigning DSCP values: 16*768cf841SOleksij Rempel * 17*768cf841SOleksij Rempel * Pool 1 (Standards Action Pool): 18*768cf841SOleksij Rempel * - Codepoint Space: xxxxx0 19*768cf841SOleksij Rempel * This pool includes DSCP values ending in '0' (binary), allocated via 20*768cf841SOleksij Rempel * Standards Action. It is intended for globally recognized traffic classes, 21*768cf841SOleksij Rempel * ensuring interoperability across the internet. This pool encompasses 22*768cf841SOleksij Rempel * well-known DSCP values such as CS0-CS7, AFxx, EF, and VOICE-ADMIT. 23*768cf841SOleksij Rempel * 24*768cf841SOleksij Rempel * Pool 2 (Experimental/Local Use Pool): 25*768cf841SOleksij Rempel * - Codepoint Space: xxxx11 26*768cf841SOleksij Rempel * Reserved for DSCP values ending in '11' (binary), this pool is designated 27*768cf841SOleksij Rempel * for Experimental or Local Use. It allows for private or temporary traffic 28*768cf841SOleksij Rempel * marking schemes not intended for standardized global use, facilitating 29*768cf841SOleksij Rempel * testing and network-specific configurations without impacting 30*768cf841SOleksij Rempel * interoperability. 31*768cf841SOleksij Rempel * 32*768cf841SOleksij Rempel * Pool 3 (Preferential Standardization Pool): 33*768cf841SOleksij Rempel * - Codepoint Space: xxxx01 34*768cf841SOleksij Rempel * Initially reserved for experimental or local use, this pool now serves as 35*768cf841SOleksij Rempel * a secondary standardization resource should Pool 1 become exhausted. DSCP 36*768cf841SOleksij Rempel * values ending in '01' (binary) are assigned via Standards Action, with a 37*768cf841SOleksij Rempel * focus on adopting new, standardized traffic classes as the need arises. 38*768cf841SOleksij Rempel * 39*768cf841SOleksij Rempel * For pool updates see: 40*768cf841SOleksij Rempel * https://www.iana.org/assignments/dscp-registry/dscp-registry.xhtml 41*768cf841SOleksij Rempel */ 42*768cf841SOleksij Rempel 43*768cf841SOleksij Rempel /* Pool 1: Standardized DSCP values as per [RFC8126] */ 44*768cf841SOleksij Rempel #define DSCP_CS0 0 /* 000000, [RFC2474] */ 45*768cf841SOleksij Rempel /* CS0 is some times called default (DF) */ 46*768cf841SOleksij Rempel #define DSCP_DF 0 /* 000000, [RFC2474] */ 47*768cf841SOleksij Rempel #define DSCP_CS1 8 /* 001000, [RFC2474] */ 48*768cf841SOleksij Rempel #define DSCP_CS2 16 /* 010000, [RFC2474] */ 49*768cf841SOleksij Rempel #define DSCP_CS3 24 /* 011000, [RFC2474] */ 50*768cf841SOleksij Rempel #define DSCP_CS4 32 /* 100000, [RFC2474] */ 51*768cf841SOleksij Rempel #define DSCP_CS5 40 /* 101000, [RFC2474] */ 52*768cf841SOleksij Rempel #define DSCP_CS6 48 /* 110000, [RFC2474] */ 53*768cf841SOleksij Rempel #define DSCP_CS7 56 /* 111000, [RFC2474] */ 54*768cf841SOleksij Rempel #define DSCP_AF11 10 /* 001010, [RFC2597] */ 55*768cf841SOleksij Rempel #define DSCP_AF12 12 /* 001100, [RFC2597] */ 56*768cf841SOleksij Rempel #define DSCP_AF13 14 /* 001110, [RFC2597] */ 57*768cf841SOleksij Rempel #define DSCP_AF21 18 /* 010010, [RFC2597] */ 58*768cf841SOleksij Rempel #define DSCP_AF22 20 /* 010100, [RFC2597] */ 59*768cf841SOleksij Rempel #define DSCP_AF23 22 /* 010110, [RFC2597] */ 60*768cf841SOleksij Rempel #define DSCP_AF31 26 /* 011010, [RFC2597] */ 61*768cf841SOleksij Rempel #define DSCP_AF32 28 /* 011100, [RFC2597] */ 62*768cf841SOleksij Rempel #define DSCP_AF33 30 /* 011110, [RFC2597] */ 63*768cf841SOleksij Rempel #define DSCP_AF41 34 /* 100010, [RFC2597] */ 64*768cf841SOleksij Rempel #define DSCP_AF42 36 /* 100100, [RFC2597] */ 65*768cf841SOleksij Rempel #define DSCP_AF43 38 /* 100110, [RFC2597] */ 66*768cf841SOleksij Rempel #define DSCP_EF 46 /* 101110, [RFC3246] */ 67*768cf841SOleksij Rempel #define DSCP_VOICE_ADMIT 44 /* 101100, [RFC5865] */ 68*768cf841SOleksij Rempel 69*768cf841SOleksij Rempel /* Pool 3: Standardized assignments, previously available for experimental/local 70*768cf841SOleksij Rempel * use 71*768cf841SOleksij Rempel */ 72*768cf841SOleksij Rempel #define DSCP_LE 1 /* 000001, [RFC8622] */ 73*768cf841SOleksij Rempel 74*768cf841SOleksij Rempel #define DSCP_MAX 64 75*768cf841SOleksij Rempel 76*768cf841SOleksij Rempel #endif /* __DSCP_H__ */ 77