LINUX.IE, website of the Irish Linux Users' Group
Tux rules!

   
Home
New Users
Articles
Download
Projects
Community
Vendors

  Print Version
Email to...
 
Archives:


planetILUG

Recent News

News Archive


Join the
ILUG
on FaceBook


Join the
ILUG
on LinkedIn


Join the
ILUG SETI
Group



















 
 :: Mailing Lists

[ILUG] bandwidth limiting

[ILUG] bandwidth limiting

FRLinux frlinux at gmail.com
Fri Jun 8 16:21:03 IST 2007


On 6/7/07, Pete McEvoy <pete at yerma.org> wrote:
> so far, it seems squids delay pools or cbq seem to be the preferred
> methods, I especially like the look of the webcbq project.

Hello Pete,

Never used webcbq but been using tc for some control over SSH
especially, here's an example (which was found some time ago on the
web using your favorite search engine) :


-------------------------- BEGIN SCRIPT
#!/bin/bash
#
# All Rates are in Kbits, so in order to gets Bytes divide by 8
# e.g. 25Kbps == 3.125KB/s
#
TC=/sbin/tc
IPTABLES=/sbin/iptables
PORT=22
DNLD=1000Kbit           # DOWNLOAD Limit
DWEIGHT=100Kbit         # DOWNLOAD Weight Factor ~ 1/10 of DOWNLOAD Limit
UPLD=1000KBit           # UPLOAD Limit
UWEIGHT=100Kbit         # UPLOAD Weight Factor


# CHAIN=("POSTROUTING" "PREROUTING" "INPUT" "OUTPUT")
CHAIN=("POSTROUTING" "PREROUTING" "INPUT" "OUTPUT")

# PROTOCOL=("tcp" "udp")
PROTOCOL=("tcp")

# DIRECTION=("--sport" "--dport")
DIRECTION=("--sport" "--dport")

# PORT=("22")
PORT=("22")


tc_start() {

        $TC qdisc add dev eth0 root handle 11: cbq bandwidth 100Mbit
avpkt 1000 mpu 64
        $TC class add dev eth0 parent 11:0 classid 11:1 cbq rate $DNLD
weight $DWEIGHT allot 1514 prio 1 avpkt 1000 bounded
        $TC filter add dev eth0 parent 11:0 protocol ip handle 4 fw flowid 11:1

        for chain in ${CHAIN[@]}
        do
          for protocol in ${PROTOCOL[@]}
          do
            for direction in ${DIRECTION[@]}
            do
               for port in ${PORT[@]}
               do
                 ${IPTABLES} -t mangle -A ${chain} -p ${protocol}
${direction} ${port} -j MARK --set-mark 4
               done
            done
          done
        done

#       $TC qdisc add dev eth1 root handle 10: cbq bandwidth 10Mbit
avpkt 1000 mpu 64
#       $TC class add dev eth1 parent 10:0 classid 10:1 cbq rate $UPLD
weight $UWEIGHT allot 1514 prio 1 avpkt 1000 bounded
#       $TC filter add dev eth1 parent 10:0 protocol ip handle 3 fw flowid 10:1

}

tc_stop() {

        $TC qdisc del dev eth0 root

        for chain in ${CHAIN[@]}
        do
          for protocol in ${PROTOCOL[@]}
          do
            for direction in ${DIRECTION[@]}
            do
               for port in ${PORT[@]}
               do
                 ${IPTABLES} -t mangle -D ${chain} -p ${protocol}
${direction} ${port} -j MARK --set-mark 4
               done
            done
          done
        done


#       $TC qdisc del dev eth1 root

}

tc_restart() {

        tc_stop
        sleep 1
        tc_start
}

tc_show() {

        echo ""
        echo "eth0:"
        $TC qdisc show dev eth0
        $TC class show dev eth0
        $TC filter show dev eth0
        echo ""
        $IPTABLES -t mangle --list

#       echo "eth1:"
#       $TC qdisc show dev eth1
#       $TC class show dev eth1
#       $TC filter show dev eth1
#       echo ""

}

case "$1" in

 start)

        echo -n "Starting bandwidth shaping: "
        tc_start
        echo "done"
        ;;

 stop)

        echo -n "Stopping bandwidth shaping: "
        tc_stop
        echo "done"
        ;;

 restart)

        echo -n "Restarting bandwidth shaping: "
        tc_restart
        echo "done"
        ;;

 show)

        tc_show
        ;;

 *)

        echo "Usage: /etc/init.d/tc.sh {start|stop|restart|show}"
        ;;

esac

exit 0
-------------------------- BEGIN SCRIPT

Hope this helps,
Steph



More information about the ILUG mailing list
Read this without the formatting.
                                                                                                    

 

Hosted by HEAnet


Maintained by the ILUG website team. The aim of Linux.ie is to support and help commercial and private users of Linux in Ireland. You can display ILUG news in your own webpages, read backend information to find out how. Networking services kindly provided by HEAnet, server kindly donated by Dell. Linux is a trademark of Linus Torvalds, used with permission. No penguins were harmed in the production or maintenance of this highly praised website. Looking for the Indian Linux Users' Group? Try here. If you've read all this and aren't a lawyer: you should be!
RSS Version
Powered by Dell