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