xref: /aosp_15_r20/external/iproute2/examples/diffserv/README (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker
2*de1e4e89SAndroid Build Coastguard WorkerNote all these are mere examples which can be customized to your needs
3*de1e4e89SAndroid Build Coastguard Worker
4*de1e4e89SAndroid Build Coastguard WorkerAFCBQ
5*de1e4e89SAndroid Build Coastguard Worker-----
6*de1e4e89SAndroid Build Coastguard WorkerAF PHB built using CBQ, DSMARK,GRED (default in GRIO mode) ,RED for BE
7*de1e4e89SAndroid Build Coastguard Workerand the tcindex classifier with some algorithmic mapping
8*de1e4e89SAndroid Build Coastguard Worker
9*de1e4e89SAndroid Build Coastguard WorkerEFCBQ
10*de1e4e89SAndroid Build Coastguard Worker-----
11*de1e4e89SAndroid Build Coastguard WorkerEF PHB built using CBQ (for rate control and prioritization),
12*de1e4e89SAndroid Build Coastguard WorkerDSMARK( to remark DSCPs), tcindex  classifier and  RED for the BE
13*de1e4e89SAndroid Build Coastguard Workertraffic.
14*de1e4e89SAndroid Build Coastguard Worker
15*de1e4e89SAndroid Build Coastguard WorkerEFPRIO
16*de1e4e89SAndroid Build Coastguard Worker------
17*de1e4e89SAndroid Build Coastguard WorkerEF PHB using the PRIO scheduler, Token Bucket to rate control EF,
18*de1e4e89SAndroid Build Coastguard Workertcindex classifier, DSMARK to remark, and RED for the BE traffic
19*de1e4e89SAndroid Build Coastguard Worker
20*de1e4e89SAndroid Build Coastguard WorkerEDGE scripts
21*de1e4e89SAndroid Build Coastguard Worker==============
22*de1e4e89SAndroid Build Coastguard Worker
23*de1e4e89SAndroid Build Coastguard WorkerCB-3(1|2)-(u32/chains)
24*de1e4e89SAndroid Build Coastguard Worker======================
25*de1e4e89SAndroid Build Coastguard Worker
26*de1e4e89SAndroid Build Coastguard Worker
27*de1e4e89SAndroid Build Coastguard WorkerThe major differences are that the classifier is u32 on -u32 extension
28*de1e4e89SAndroid Build Coastguard Workerand IPchains on the chains extension. CB stands for color Blind
29*de1e4e89SAndroid Build Coastguard Workerand 31 is for the mode where only a CIR and CBS are defined whereas
30*de1e4e89SAndroid Build Coastguard Worker32 stands for a mode where a CIR/CBS + PIR/EBS are defined.
31*de1e4e89SAndroid Build Coastguard Worker
32*de1e4e89SAndroid Build Coastguard WorkerColor Blind (CB)
33*de1e4e89SAndroid Build Coastguard Worker==========-----=
34*de1e4e89SAndroid Build Coastguard WorkerWe look at one special subnet that we are interested in for simplicty
35*de1e4e89SAndroid Build Coastguard Workerreasons to demonstrate the capability. We send the packets from that
36*de1e4e89SAndroid Build Coastguard Workersubnet to AF4*, BE or end up dropping depending on the metering results.
37*de1e4e89SAndroid Build Coastguard Worker
38*de1e4e89SAndroid Build Coastguard Worker
39*de1e4e89SAndroid Build Coastguard WorkerThe algorithm overview is as follows:
40*de1e4e89SAndroid Build Coastguard Worker
41*de1e4e89SAndroid Build Coastguard Worker*classify:
42*de1e4e89SAndroid Build Coastguard Worker
43*de1e4e89SAndroid Build Coastguard Worker**case: subnet X
44*de1e4e89SAndroid Build Coastguard Worker----------------
45*de1e4e89SAndroid Build Coastguard Worker  if !exceed meter1 tag as AF41
46*de1e4e89SAndroid Build Coastguard Worker	else
47*de1e4e89SAndroid Build Coastguard Worker	    if !exceed meter2  tag as AF42
48*de1e4e89SAndroid Build Coastguard Worker	        else
49*de1e4e89SAndroid Build Coastguard Worker		  if !exceed meter 3 tag as AF43
50*de1e4e89SAndroid Build Coastguard Worker		      else
51*de1e4e89SAndroid Build Coastguard Worker			 drop
52*de1e4e89SAndroid Build Coastguard Worker
53*de1e4e89SAndroid Build Coastguard Workerdefault case: Any other subnet
54*de1e4e89SAndroid Build Coastguard Worker-------------------------------
55*de1e4e89SAndroid Build Coastguard Worker  if !exceed meter 5 tag as AF43
56*de1e4e89SAndroid Build Coastguard Worker      else
57*de1e4e89SAndroid Build Coastguard Worker	 drop
58*de1e4e89SAndroid Build Coastguard Worker
59*de1e4e89SAndroid Build Coastguard Worker
60*de1e4e89SAndroid Build Coastguard WorkerOne Egress side change the DSCPs of the packets to reflect AF4* and BE
61*de1e4e89SAndroid Build Coastguard Workerbased on the tags from the ingress.
62*de1e4e89SAndroid Build Coastguard Worker
63*de1e4e89SAndroid Build Coastguard Worker-------------------------------------------------------------
64*de1e4e89SAndroid Build Coastguard Worker
65*de1e4e89SAndroid Build Coastguard WorkerColor Aware
66*de1e4e89SAndroid Build Coastguard Worker===========
67*de1e4e89SAndroid Build Coastguard Worker
68*de1e4e89SAndroid Build Coastguard WorkerDefine some meters with + policing and give them IDs eg
69*de1e4e89SAndroid Build Coastguard Worker
70*de1e4e89SAndroid Build Coastguard Workermeter1=police index 1 rate $CIR1 burst $CBS1
71*de1e4e89SAndroid Build Coastguard Workermeter2=police index 2 rate $CIR2 burst $CBS2   etc
72*de1e4e89SAndroid Build Coastguard Worker
73*de1e4e89SAndroid Build Coastguard WorkerGeneral overview:
74*de1e4e89SAndroid Build Coastguard Workerclassify based on the DSCPs and use the policer ids to decide tagging
75*de1e4e89SAndroid Build Coastguard Worker
76*de1e4e89SAndroid Build Coastguard Worker
77*de1e4e89SAndroid Build Coastguard Worker*classify on ingress:
78*de1e4e89SAndroid Build Coastguard Worker
79*de1e4e89SAndroid Build Coastguard Workerswitch (dscp) {
80*de1e4e89SAndroid Build Coastguard Worker    case AF41: /* tos&0xfc == 0x88 */
81*de1e4e89SAndroid Build Coastguard Worker	if (!exceed meter1) break;
82*de1e4e89SAndroid Build Coastguard Worker    case AF42: /* tos&0xfc == 0x90 */
83*de1e4e89SAndroid Build Coastguard Worker	if (!exceed meter2) {
84*de1e4e89SAndroid Build Coastguard Worker	    tag as AF42;
85*de1e4e89SAndroid Build Coastguard Worker	    break;
86*de1e4e89SAndroid Build Coastguard Worker	}
87*de1e4e89SAndroid Build Coastguard Worker    case AF43: /* tos&0xfc == 0x98 */
88*de1e4e89SAndroid Build Coastguard Worker	if (!exceed meter3) {
89*de1e4e89SAndroid Build Coastguard Worker	    tag as AF43;
90*de1e4e89SAndroid Build Coastguard Worker	    break;
91*de1e4e89SAndroid Build Coastguard Worker	} else
92*de1e4e89SAndroid Build Coastguard Worker	  drop;
93*de1e4e89SAndroid Build Coastguard Worker    default:
94*de1e4e89SAndroid Build Coastguard Worker	if (!exceed meter4) tag as BE;
95*de1e4e89SAndroid Build Coastguard Worker	else drop;
96*de1e4e89SAndroid Build Coastguard Worker}
97*de1e4e89SAndroid Build Coastguard Worker
98*de1e4e89SAndroid Build Coastguard WorkerOn the Egress side mark the proper AF tags
99