====== Traffic Shaping ====== * Limit a single app with the ''trickle'' package * See https://github.com/meermanr/adsl for my wondershaper script designed for a host with a single network adaptor (assumes you have control of your ADSL box) ===== Force shaping onto someone else's network ===== Here's a quick-and-dirty guide to how I hijacked my home network when I lived with some other students to force traffic shaping onto the entire network, since two of my housemates had gone away for the weekend and left their torrent clients running. # Install fragrouter wget https://launchpad.net/ubuntu/hoary/+source/fragrouter/1.6-2.2/+files/fragrouter_1.6.orig.tar.gz wget https://launchpad.net/ubuntu/hoary/+source/fragrouter/1.6-2.2/+files/fragrouter_1.6-2.2.diff.gz tar zxvf fragrouter_1.6.orig.tar.gz cd fragrouter-1.6/ zcat ../fragrouter_1.6-2.2.diff.gz | patch sudo apt-get install dsniff # Install arpspoof / tcpdump et al echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward # Enable IP forwarding route -n # Find gateway IP Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0 sudo arpsoof 192.168.1.254 # Poison network to think we're the gateway # Open a new terminal sudo apt-get install wondershaper sudo wondershaper eth0 $((8273*8*1024)) $((1209*8*1024)) # Configure eth0 with 8MBit downlink and 1MBit uplink (converting kB to kbit, and using numbers from my ADSL router web-interface) wondershaper eth0 qdisc cbq 1: root rate 10000Kbit (bounded,isolated) prio no-transmit Sent 789925764 bytes 2324442 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 borrowed 0 overactions 0 avgidle 781 undertime 0 qdisc sfq 10: parent 1:10 limit 127p quantum 1514b perturb 10sec Sent 72932324 bytes 1002607 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc sfq 20: parent 1:20 limit 127p quantum 1514b perturb 10sec Sent 716598100 bytes 1312423 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc ingress ffff: parent ffff:fff1 ---------------- Sent 742688346 bytes 2210761 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 class cbq 1: root rate 10000Kbit (bounded,isolated) prio no-transmit Sent 395340 bytes 9412 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 borrowed 0 overactions 0 avgidle 781 undertime 0 class cbq 1:1 parent 1: rate 9904Mbit (bounded,isolated) prio 5 Sent 789530142 bytes 2315028 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 borrowed 0 overactions 0 avgidle 781 undertime 0 class cbq 1:10 parent 1:1 leaf 10: rate 9904Mbit prio 1 Sent 72932270 bytes 1002606 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 borrowed 0 overactions 0 avgidle 781 undertime 0 class cbq 1:20 parent 1:1 leaf 20: rate 8914Mbit prio 2 Sent 716597872 bytes 1312422 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 borrowed 0 overactions 0 avgidle 781 undertime 0 class cbq 1:30 parent 1:1 leaf 30: rate 7923Mbit prio 2 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 borrowed 0 overactions 0 avgidle 781 undertime 0