[LARTC] tc-htb traffic shaping script

Marco Aurelio marco.casaroli at gmail.com
Thu May 24 18:57:14 CEST 2007


http://lartc.org/wondershaper/

On 5/24/07, beere at vertis.nl <beere at 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 at mailman.ds9a.nl [mailto:lartc-bounces at mailman.ds9a.nl]
> On Behalf Of Arman
>  Sent: donderdag 24 mei 2007 12:46
>  To: lartc at 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 at mailman.ds9a.nl
> http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
>
>


-- 
Marco


More information about the LARTC mailing list