http://lartc.org/wondershaper/
On 5/24/07, beere@vertis.nl <beere@vertis.nl>
wrote:>
>
>
>
> 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@mailman.ds9a.nl [mailto:lartc-bounces@mailman.ds9a.nl]
> On Behalf Of Arman
> Sent: donderdag 24 mei 2007 12:46
> To: lartc@mailman.ds9a.nl
> Subject: [LARTC] tc-htb traffic shaping script
>
>
>
>
> Hi,
>
> Is there any tested good HTB script for traffic shaping available like
> as that of CBQ available at.
>
> http://freshmeat.net/projects/cbq.init
>
> I am n new bie and need to work on htb.
>
> --
> Regards,
> M Arman
> _______________________________________________
> LARTC mailing list
> LARTC@mailman.ds9a.nl
> http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
>
>
--
Marco