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