]>
Commit | Line | Data |
---|---|---|
d8f7cf1c JR |
1 | |
2 | Traffic Shaper For Linux | |
3 | ||
4 | This is the current ALPHA release of the traffic shaper for Linux. It works | |
5 | within the following limits: | |
6 | ||
7 | o Minimum shaping speed is currently about 9600 baud (it can only | |
8 | shape down to 1 byte per clock tick) | |
9 | ||
10 | o Maximum is about 256K, it will go above this but get a bit blocky. | |
11 | ||
12 | o If you ifconfig the master device that a shaper is attached to down | |
13 | then your machine will follow. | |
14 | ||
15 | o The shaper must be a module. | |
16 | ||
17 | ||
18 | Setup: | |
19 | ||
20 | A shaper device is configured using the shapeconfig program. | |
21 | Typically you will do something like this | |
22 | ||
23 | shapecfg attach shaper0 eth1 | |
24 | shapecfg speed shaper0 64000 | |
25 | ifconfig shaper0 myhost netmask 255.255.255.240 broadcast 1.2.3.4.255 up | |
26 | route add -net some.network netmask a.b.c.d dev shaper0 | |
27 | ||
28 | The shaper should have the same IP address as the device it is attached to | |
29 | for normal use. | |
30 | ||
31 | Gotchas: | |
32 | ||
33 | The shaper shapes transmitted traffic. It's rather impossible to | |
34 | shape received traffic except at the end (or a router) transmitting it. | |
35 | ||
36 | Gated/routed/rwhod/mrouted all see the shaper as an additional device | |
37 | and will treat it as such unless patched. Note that for mrouted you can run | |
38 | mrouted tunnels via a traffic shaper to control bandwidth usage. | |
39 | ||
40 | The shaper is device/route based. This makes it very easy to use | |
41 | with any setup BUT less flexible. You may well want to combine this patch | |
42 | with Mike McLagan 's patch to allow routes to be | |
43 | specified by source/destination pairs. | |
44 | ||
45 | There is no "borrowing" or "sharing" scheme. This is a simple | |
46 | traffic limiter. I'd like to implement Van Jacobson and Sally Floyd's CBQ | |
47 | architecture into Linux one day (maybe in 2.1 sometime) and do this with | |
48 | style. | |
49 | ||
50 |