1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
# u32 issues rules in correct order with multi-phase policers (1) -------------
tcsim | tcsim_filter -d tos | awk '{print $2}'
dev eth0 10Mbps {
$p = trTCM(cir 10bps,cbs 1B,pir 10bps,pbs 1B);
dsmark (mask 0,value 0) {
class (0) if raw[0] == 1 && __trTCM_green($p);
class (1) if raw[0] == 1 && __trTCM_yellow($p);
class (2) if raw[0] == 1 && __trTCM_red($p);
class (3,value 0xff) if 1;
}
}
send 1 0 x 19
end
EOF
D:00
# u32 issues rules in correct order with multi-phase policers (2) -------------
tcsim | tcsim_filter -c -d
dev eth0 10Mbps {
$p = trTCM(cir 10bps,cbs 1B,pir 10bps,pbs 1B);
egress {
class (<>) if raw[0] == 1 && __trTCM_green($p);
class (<>) if raw[0] == 1 && __trTCM_yellow($p);
class (<>) if raw[0] == 1 && __trTCM_red($p);
drop if 1;
}
}
send 1 0 x 19
end
EOF
D 1
# u32 issues rules in correct order with multi-phase policers (3) -------------
tcsim | tcsim_filter -c -d tos
dev eth0 10Mbps {
$p = trTCM(cir 10bps,cbs 1B,pir 10bps,pbs 1B);
dsmark {
class (1,value 1) if tcp_sport == 22 && __trTCM_green($p);
class (2,value 2) if tcp_sport == 22 && __trTCM_yellow($p);
class (3,value 3) if tcp_sport == 22 && __trTCM_red($p);
class (4,value 4) if 1;
}
}
send TCP_PCK($tcp_sport = 22)
end
EOF
D:03 1
# u32 issues rules in correct order with multi-phase policers (4) -------------
tcsim | tcsim_filter -c tos
/* see u32srtcm for details */
dev eth0 1Mbps {
egress {
$p = srTCM(cir 20kbps,cbs 50kB,ebs 25kB);
class (<>,mask 0,value 1) if tcp_dport == 100 && srTCM_green($p);
class (<>,mask 0,value 2) if tcp_dport == 100 && srTCM_yellow($p);
class (<>,mask 0,value 3) if tcp_dport == 100 && srTCM_red($p);
drop if 1;
}
}
every 0.005s send TCP_PCK($tcp_dport = 100) 0 x 85 /* 200 kbps */
time 5s
end
EOF
D:01 530
D:02 214
D:03 258
E:00 1002
|