RE: tc-htb traffic shaping script

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
Sent: donderdag 24 mei 2007 12:46
To: lartc@xxxxxxxxxxxxxxx
Subject: 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@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux