I can send you mine, it’s a modified version of one I found
somewhere on the net to be able to limit bandwith on a linux router. I did no
cleaning up or anything #!/bin/bash # tc uses the following units when passed as a parameter. # kbps: Kilobytes per second # mbps: Megabytes per second # kbit: Kilobits per second # mbit: Megabits per second # bps: Bytes per second # Amounts of data can be
specified in: # kb or k: Kilobytes # mb or m: Megabytes # mbit: Megabits # kbit: Kilobits # To get the byte figure from bits, divide the number by 8
bit # # # Name of the traffic control command. TC=/sbin/tc IPTABLES=/sbin/iptables # The network interface we're planning on limiting bandwidth. IF1=eth1.106
# Interface IF2=eth0
# Interface # Download limit (in mega bits) DNLD=100mbit
# DOWNLOAD Limit # Upload limit (in mega bits) UPLD=100mbit
# UPLOAD Limit # IP address of the machine we are controlling #IP=81.18.0.0/24
#Host IP #IP=0.0.0.0/0
#Host IP # Filter options for limiting the intended interface. IN="$TC filter add dev $IF2 protocol ip parent 1:0 prio
1" OUT="$TC filter add dev $IF1 protocol ip parent 2:0 prio
1" start() { # All traffic originating from IF1 gets marked $IPTABLES -t mangle -D PREROUTING -i $IF1 -j
MARK --set-mark 106 >/dev/null 2>&1 $IPTABLES -t mangle -A PREROUTING -i $IF1 -j
MARK --set-mark 106 # INBOUND matches on fwmark 106 and gets shaped when it leaves
the IF2 interface $TC qdisc add dev $IF2 root handle 1: htb
default 30 $TC class add dev $IF2 parent 1: classid 1:1
htb rate $DNLD $IN handle 106 fw flowid 1:1 printf "\n" printf "Shaping traffic incoming on $IF1
==> $IF2 to max. $DNLD" # OUTBOUND matches all traffic heading out IF1 gets shaped, no
filter needed $TC qdisc add dev $IF1 root handle 2: htb
default 1 $TC class add dev $IF1 parent 2: classid 2:1
htb rate $UPLD # $OUT u32 match ip src $IP flowid 2:1 printf "\n" printf "Shaping traffic incoming on $IF2
==> $IF1 to max. $UPLD\n" # The first line creates the root qdisc, and the next line # creates a child qdiscs that respectively are used to shape
download # and upload bandwidth. The third line defines a filter if
required. } stop() { # Stop the bandwidth shaping. $TC qdisc del dev $IF1 root $TC qdisc del dev $IF2 root $IPTABLES -t mangle -D PREROUTING -i $IF1 -j
MARK --set-mark 106 } restart() { # Self-explanatory. stop sleep 1 start } show() { # Display status of traffic control status. # $TC -s qdisc ls dev $IF1 $TC -s qdisc ls dev $IF2 } case "$1" in start) echo -n "Starting bandwidth shaping:
" start echo "done" ;; stop) echo -n "Stopping bandwidth shaping:
" stop echo "done" ;; restart) echo -n "Restarting bandwidth shaping:
" restart echo "done" ;; show) echo "Bandwidth shaping status for
$IF2:" show echo "" ;; *) pwd=$(pwd) echo "Usage: tc.bash
{start|stop|restart|show}" ;; esac exit 0 From: lartc-bounces@xxxxxxxxxxxxxxx
[mailto:lartc-bounces@xxxxxxxxxxxxxxx] On Behalf Of Arman Hi, |
_______________________________________________ LARTC mailing list LARTC@xxxxxxxxxxxxxxx http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc