www large package catch / ADSL HTB script

Linux Advanced Routing and Traffic Control

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

 



Hi i send this script that i build for ADSL
512Kbps Downstream
128Kbps Upstream

It works perfect but i have a problem with the WWW badnwidth management.
I am using bering 1.2 for NAT Router. So i cant't use IMQ.

Well the problem in fact is that i prioritize the ACK, ICMP, DNS, TELNET,
Counter Strike
and the most important WWW (well here is the problem).

If anybody on my network start downloading with something like DAP (Download
Accelerator)
then it consume the total bandwidth. The idea is that for small www access
it use this class but
for large download use other class. This the policy i'm useing for mark the
www access to internet.



############################################################################
#
        # WWW
        iptables -t mangle -A PREROUTING -p tcp --sport 80 \
                -j MARK --set-mark 8

############################################################################
#

        tc filter add dev eth0 parent 1: protocol ip prio 3 handle 8 fw
flowid 1:13

        tc class add dev eth0 parent 1:1 classid 1:13 htb rate 30kbps ceil
$BW burst 3k prio 2

I was thinking to set down the
    rate 30Kbps ceil 56Kbps ($BW)
    to
    rate 15Kbps ceil 30Kbps

but this is not the best performance.

So, anybody know how to catch the large package to www port?

Thanks in advance, and i hope this script help you.

Sebastian A. Aresca





#! /bin/sh
#

############################################################################
#
# Parametros
#
############################################################################
#

# r2q = lower_rate / 1500
#R2Q=15

# Total Bandwidth
BW=56Kbps
OUTBW=14Kbps

# Definicion de clase padre

tc qdisc del dev eth0 root
tc qdisc del dev eth0 ingress

iptables -t mangle -F

if [ "$1" = "stop" ]
then
 echo 'Stop'
 exit
fi

tc qdisc add dev eth0 root handle 1: htb default 19

############################################################################
#
# Clases
#
############################################################################
#
tc class add dev eth0 parent 1: classid 1:1 htb rate $BW ceil $BW

# Max prioridad (dns, icmp, ack, telnet, sshd)
tc class add dev eth0 parent 1:1 classid 1:10 htb rate $BW ceil $BW burst 3k
prio 0

# Counter Strike
tc class add dev eth0 parent 1:1 classid 1:11 htb rate $BW ceil $BW burst 3k
prio 1

# Terminals
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 40kbps  ceil $BW
burst 3k prio 2

# Ports
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 30kbps ceil $BW burst
3k prio 2

# Others
tc class add dev eth0 parent 1:1 classid 1:19 htb rate 15kbps ceil $BW burst
3k prio 3
############################################################################
#


############################################################################
#
# SFQ Queueing

tc qdisc add dev eth0 parent 1:11 handle 11: sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 13: sfq perturb 10
tc qdisc add dev eth0 parent 1:19 handle 19: sfq perturb 10
############################################################################
#


############################################################################
#
# Filters
#
############################################################################
#

# IPTABLES

tc filter add dev eth0 parent 1: protocol ip prio 1 handle 2 fw flowid 1:10
tc filter add dev eth0 parent 1: protocol ip prio 2 handle 9 fw flowid 1:11
tc filter add dev eth0 parent 1: protocol ip prio 3 handle 3 fw flowid 1:12
tc filter add dev eth0 parent 1: protocol ip prio 3 handle 8 fw flowid 1:13

############################################################################
######################################
# PORTS Filters


############################################################################
#
 # ICMP

         iptables -t mangle -A PREROUTING -p icmp \
                 -j MARK --set-mark 1
         iptables -t mangle -A OUTPUT -p icmp \
                 -j MARK --set-mark 2
        iptables -t mangle -A PREROUTING -p icmp -j RETURN
        iptables -t mangle -A OUTPUT -p icmp -j RETURN

############################################################################
#



############################################################################
#
        # Telnet
        iptables -t mangle -A PREROUTING -p tcp --sport 23 \
                -j MARK --set-mark 1
        iptables -t mangle -A OUTPUT -p tcp --sport 23 \
                -j MARK --set-mark 1
        iptables -t mangle -A PREROUTING -p tcp --sport 23 -j RETURN
        iptables -t mangle -A OUTPUT -p tcp --sport 23 -j RETURN

############################################################################
#


############################################################################
#
        # SSH
        iptables -t mangle -A PREROUTING -p tcp --sport 22 \
                -j MARK --set-mark 1
        iptables -t mangle -A OUTPUT -p tcp --sport 22 \
               -j MARK --set-mark 1
        iptables -t mangle -A PREROUTING -p tcp --sport 22 -j RETURN
        iptables -t mangle -A OUTPUT -p tcp --sport 22 -j RETURN

############################################################################
#


############################################################################
#
        # DNS
        iptables -t mangle -A PREROUTING -p udp --sport 53 \
          -j MARK --set-mark 1
        #iptables -t mangle -A OUTPUT -p udp --sport 53 \
TESTING
        # -j MARK --set-mark 1
        iptables -t mangle -A PREROUTING -p udp --sport 53 -j RETURN
        #iptables -t mangle -A OUTPUT -p udp --sport 53 -j RETURN

############################################################################
#


############################################################################
#
        # WWW
        iptables -t mangle -A PREROUTING -p tcp --sport 80 \
                -j MARK --set-mark 8

############################################################################
#


############################################################################
#
        # Counter Strike Ports

        iptables -t mangle -A PREROUTING -p udp --dport 27010:27019 \
        -j MARK --set-mark 9

        iptables -t mangle -A PREROUTING -p udp --sport 27010:27019 -j
RETURN

############################################################################
#

############################################################################
######################################




############################################################################
######################################
# PC Filters

        # PC firewall

        # iptables -t mangle -A OUTPUT -s 192.168.0.101 \
        #         -j MARK --set-mark 1

        # PC funcomputer2

        # iptables -t mangle -A POSTROUTING -o eth0 -d 192.168.0.1 \
        #         -j MARK --set-mark 11

        # PC funcomputer1

        # iptables -t mangle -A POSTROUTING -o eth0 -d 192.168.0.3 \
        #        -j MARK --set-mark 13

        # PC wkswindowsxp

        iptables -t mangle -A PREROUTING -s 192.168.1.4 \
                -j MARK --set-mark 3

############################################################################
######################################


############################################################################
#
# Results
#
############################################################################
#

#echo 'Cola:'
#tc qdisc show dev eth0
#echo ''
#echo ''
#echo 'Clases:'
#tc class show dev eth0
#echo ''
#echo ''
echo 'Filtros:'
tc filter show dev eth0


############################################################################
#
# OUT
#
############################################################################
#

tc qdisc add dev eth0 handle ffff: ingress

tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 match ip \
src 0.0.0.0 police rate $OUTBW burst 3k drop flowid :1

_______________________________________________
LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

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