File: htbng

package info (click to toggle)
tcng 10b-2
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 3,636 kB
  • ctags: 2,515
  • sloc: ansic: 19,040; pascal: 4,640; yacc: 2,619; sh: 1,914; perl: 1,546; lex: 772; makefile: 756
file content (78 lines) | stat: -rw-r--r-- 2,814 bytes parent folder | download | duplicates (5)
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
75
76
77
78
BEGIN CONDITIONAL
tcsim
dev eth0
tc qdisc add dev eth0 root htb
EOF
# HTB in tcng -----------------------------------------------------------------
tcc
dev "eth0" {
    egress { 
	$base = 100 * 1kBps;

	class (<$cl1_2>)  if (raw[6] & 0xfe) == 0;
	class (<$cl1_12>) if raw[6] == 2;
	class (<$cl1_10>) if raw[6] == 0;
	class (<$cl1_11>) if raw[6] == 1;

	htb (r2q 100, ceil 18 * $base) {
	    class(rate 10 * $base) {
		$cl1_2 = class (rate 4 * $base, ceil 8 * $base,) {
		    $cl1_10 = class (rate 3 * $base, ceil 10 * $base, prio 1) {
			fifo(limit 8p);
		    }
		    $cl1_11 = class (rate 1 * $base, ceil 10 * $base, prio 0) {
			fifo(limit 8p);
		    }
		}
	    }
	    $cl1_12 = class (rate 6 * $base, ceil 10 * $base, prio 1, default) {
		fifo(limit 8p);
	    }
	}
    }
}
EOF
tc qdisc add dev eth0 handle 1:0 root dsmark indices 8 default_index 0
tc qdisc add dev eth0 handle 2:0 parent 1:0 htb default 5 r2q 100
tc class add dev eth0 parent 2:0 classid 2:1 htb rate 1000000bps ceil 1800000bps
tc class add dev eth0 parent 2:1 classid 2:2 htb rate 400000bps ceil 800000bps
tc class add dev eth0 parent 2:2 classid 2:3 htb rate 300000bps ceil 1000000bps prio 1
tc qdisc add dev eth0 handle 3:0 parent 2:3 pfifo limit 8
tc class add dev eth0 parent 2:2 classid 2:4 htb rate 100000bps ceil 1000000bps prio 0
tc qdisc add dev eth0 handle 4:0 parent 2:4 pfifo limit 8
tc class add dev eth0 parent 2:0 classid 2:5 htb rate 600000bps ceil 1000000bps prio 1
tc qdisc add dev eth0 handle 5:0 parent 2:5 pfifo limit 8
tc filter add dev eth0 parent 2:0 protocol all prio 1 tcindex mask 0x7 shift 0
tc filter add dev eth0 parent 2:0 protocol all prio 1 handle 4 tcindex classid 2:4
tc filter add dev eth0 parent 2:0 protocol all prio 1 handle 3 tcindex classid 2:3
tc filter add dev eth0 parent 2:0 protocol all prio 1 handle 2 tcindex classid 2:5
tc filter add dev eth0 parent 2:0 protocol all prio 1 handle 1 tcindex classid 2:2
tc filter add dev eth0 parent 1:0 protocol all prio 1 u32 match u8 0x0 0xfe at 6 classid 1:1
tc filter add dev eth0 parent 1:0 protocol all prio 1 u32 match u8 0x2 0xff at 6 classid 1:2
tc filter add dev eth0 parent 1:0 protocol all prio 1 u32 match u8 0x0 0xff at 6 classid 1:3
tc filter add dev eth0 parent 1:0 protocol all prio 1 u32 match u8 0x1 0xff at 6 classid 1:4
# HTB example 1, in tcng ------------------------------------------------------
tcsim -k 3
dev eth0 {
    egress {
	class (<$a_web>) if ip_src == 1.2.3.4 && tcp_dport == PORT_HTTP;
	class (<$a_nonweb>) if ip_src == 1.2.3.4;
	class (<$other>) if 1;

	htb (ceil 100kBps) {
	    class (rate 100kBps) {
		$a_web = class (rate 30kBps) {
		    fifo(limit 5p);
		}
		$a_nonweb = class (rate 10kBps) {
		    fifo(limit 5p);
		}
		$other = class (rate 60kBps) {
		    sfq(perturb 10s);
		}
	    }
	}
    }
}
EOF
END CONDITIONAL