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