]> git.proxmox.com Git - mirror_iproute2.git/blame - README.iproute2+tc
ll_map: Add function to remove link cache entry by index
[mirror_iproute2.git] / README.iproute2+tc
CommitLineData
aba5acdf
SH
1iproute2+tc*
2
3It's the first release of Linux traffic control engine.
4
5
6NOTES.
7* csz scheduler is inoperational at the moment, and probably
8 never will be repaired but replaced with h-pfq scheduler.
9* To use "fw" classifier you will need ipfwchains patch.
10* No manual available. Ask me, if you have problems (only try to guess
11 answer yourself at first 8)).
12
13
14Micro-manual how to start it the first time
15-------------------------------------------
16
17A. Attach CBQ to eth1:
18
19tc qdisc add dev eth1 root handle 1: cbq bandwidth 10Mbit allot 1514 cell 8 \
20avpkt 1000 mpu 64
21
22B. Add root class:
23
24tc class add dev eth1 parent 1:0 classid 1:1 cbq bandwidth 10Mbit rate 10Mbit \
25allot 1514 cell 8 weight 1Mbit prio 8 maxburst 20 avpkt 1000
26
27C. Add default interactive class:
28
29tc class add dev eth1 parent 1:1 classid 1:2 cbq bandwidth 10Mbit rate 1Mbit \
30allot 1514 cell 8 weight 100Kbit prio 3 maxburst 20 avpkt 1000 split 1:0 \
31defmap c0
32
33D. Add default class:
34
35tc class add dev eth1 parent 1:1 classid 1:3 cbq bandwidth 10Mbit rate 8Mbit \
36allot 1514 cell 8 weight 800Kbit prio 7 maxburst 20 avpkt 1000 split 1:0 \
37defmap 3f
38
39etc. etc. etc. Well, it is enough to start 8) The rest can be guessed 8)
40Look also at more elaborated example, ready to start rsvpd,
41in rsvp/cbqinit.eth1.
42
43
44Terminology and advices about setting CBQ parameters may be found in Sally Floyd
e5cd5a51 45papers.
aba5acdf
SH
46
47
6c513a00 48Pairs X:Y are class handles, X:0 are qdisc handles.
aba5acdf 49weight should be proportional to rate for leaf classes
5cc46394 50(I repeated it ten times less, but it is not necessary)
aba5acdf
SH
51
52defmap is bitmap of logical priorities served by this class.
53
54E. Another qdiscs are simpler. F.e. let's join TBF on class 1:2
55
56tc qdisc add dev eth1 parent 1:2 tbf rate 64Kbit buffer 5Kb/8 limit 10Kb
57
58F. Look at all that we created:
59
60tc qdisc ls dev eth1
61tc class ls dev eth1
62
63G. Install "route" classifier on root of cbq and map destination from realm
641 to class 1:2
65
66tc filter add dev eth1 parent 1:0 protocol ip prio 100 route to 1 classid 1:2
67
68H. Assign routes to 10.11.12.0/24 to realm 1
69
70ip route add 10.11.12.0/24 dev eth1 via whatever realm 1
71
72etc. The same thing can be made with rules.
73I still did not test ipchains, but they should work too.
74
6256f8c9
DB
75
76Setup and code example of BPF classifier and action can be found under
77examples/bpf/, which should explain everything for getting started.
78
79
aba5acdf
SH
80Setup of rsvp and u32 classifiers is more hairy.
81If you read RSVP specs, you will understand how rsvp classifier
82works easily. What's about u32... That's example:
83
84
aba5acdf
SH
85#! /bin/sh
86
87TC=/home/root/tc
88
89# Setup classifier root on eth1 root (it is cbq)
90$TC filter add dev eth1 parent 1:0 prio 5 protocol ip u32
91
92# Create hash table of 256 slots with ID 1:
93$TC filter add dev eth1 parent 1:0 prio 5 handle 1: u32 divisor 256
94
95# Add to 6th slot of hash table rule to select tcp/telnet to 193.233.7.75
96# direct it to class 1:4 and prescribe to fall to best effort,
97# if traffic violate TBF (32kbit,5K)
98$TC filter add dev eth1 parent 1:0 prio 5 u32 ht 1:6: \
99 match ip dst 193.233.7.75 \
100 match tcp dst 0x17 0xffff \
101 flowid 1:4 \
102 police rate 32kbit buffer 5kb/8 mpu 64 mtu 1514 index 1
103
104# Add to 1th slot of hash table rule to select icmp to 193.233.7.75
105# direct it to class 1:4 and prescribe to fall to best effort,
106# if traffic violate TBF (10kbit,5K)
107$TC filter add dev eth1 parent 1:0 prio 5 u32 ht 1:: \
108 sample ip protocol 1 0xff \
109 match ip dst 193.233.7.75 \
110 flowid 1:4 \
111 police rate 10kbit buffer 5kb/8 mpu 64 mtu 1514 index 2
112
113# Lookup hash table, if it is not fragmented frame
114# Use protocol as hash key
115$TC filter add dev eth1 parent 1:0 prio 5 handle ::1 u32 ht 800:: \
116 match ip nofrag \
117 offset mask 0x0F00 shift 6 \
118 hashkey mask 0x00ff0000 at 8 \
119 link 1:
120
121
122Alexey Kuznetsov
123kuznet@ms2.inr.ac.ru