Re: HTB: shaping internet bandwidth but don't shape local network traffic

Linux Advanced Routing and Traffic Control

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

 



Andreas Klauer escreveu:

On Thursday 30 June 2005 19:26, Jefri Lie wrote:
i got this problem, i want to shape my clients internet bw, but i
don't want to shape my local network traffic. For information, my
clients using wireless to connect to my router[192.168.1.254].

Common mistake is to use the internet class as root class on the LAN interface, which means everything (local traffic and internet traffic) gets shaped to internet class speed.

I solved it like this:

HTB Qdisc
|
\--- HTB root class (10MBit)
    |
    \--- HTB internet class (1Mbit)
    |    |
    |    \--- ... more classes for internet shaping ...
    |
    \--- HTB lan class (10-1=9Mbit)

This would be an example setup for a 10Mbit ethernet card, with a 1MBit internet connection, and local connections get what's left. You put your internet traffic into the internet class (or one of it's children), and everything else (local traffic) into the lan class.

HTH
Andreas
_______________________________________________
LARTC mailing list
LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
This is exactly what Im trying to do, without success.... I'm almost giving up.

I made a little test script, follows:

tc qdisc add dev eth0 root handle 1: htb default 22
# The LAN class:
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 89232kbit ceil 90mbit
# The internet class:
tc class add dev eth0 parent 1:0 classid 1:2 htb rate 768kbit
tc class add dev eth0 parent 1:2 classid 1:20 htb rate 384kbit ceil 768kbit
tc class add dev eth0 parent 1:2 classid 1:21 htb rate 256kbit ceil 768kbit
tc class add dev eth0 parent 1:2 classid 1:22 htb rate 128kbit ceil 768kbit
# filter for the LAN:
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw classid 1:10
#Filter for internet:
tc filter add dev eth0 protocol ip parent 1:0 prio 2 handle 11 fw classid 1:20 tc filter add dev eth0 protocol ip parent 1:0 prio 3 handle 12 fw classid 1:21 tc filter add dev eth0 protocol ip parent 1:0 prio 4 handle 13 fw classid 1:22
# iptables mark:
iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 192.168.1.254 --dport 3128 -j MARK --set-mark 10 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 192.168.1.254 --dport 445 -j MARK --set-mark 10 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 192.168.1.254 --dport 139 -j MARK --set-mark 10 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 0/0 --dport 143 -j MARK --set-mark 11 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 0/0 --dport 80 -j MARK --set-mark 11 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 0/0 --dport 22 -j MARK --set-mark 11 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 0/0 --dport 44 -j MARK --set-mark 11 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 0/0 --dport 443 -j MARK --set-mark 12 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -d 0/0 --dport 110 -j MARK --set-mark 12 iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 -j MARK --set-mark 13

No error messages, everything fine.
Analysis:
[root@samba htb]# tc filter show dev eth0
filter parent 1: protocol ip pref 1 fw
filter parent 1: protocol ip pref 1 fw handle 0xa classid 1:10
filter parent 1: protocol ip pref 2 fw
filter parent 1: protocol ip pref 2 fw handle 0xb classid 1:20
filter parent 1: protocol ip pref 3 fw
filter parent 1: protocol ip pref 3 fw handle 0xc classid 1:21
filter parent 1: protocol ip pref 4 fw
filter parent 1: protocol ip pref 4 fw handle 0xd classid 1:22

[root@samba htb]# iptables -L -t mangle -v
Chain PREROUTING (policy ACCEPT 565 packets, 134K bytes)
pkts bytes target prot opt in out source destination 0 0 MARK tcp -- any any 192.168.1.0/24 ns1.intranet.com.br tcp dpt:3128 MARK set 0xa 0 0 MARK tcp -- any any 192.168.1.0/24 ns1.intranet.com.br tcp dpt:microsoft-ds MARK set 0xa 0 0 MARK tcp -- any any 192.168.1.0/24 ns1.intranet.com.br tcp dpt:netbios-ssn MARK set 0xa 29 1821 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:imap2 MARK set 0xb 93 30816 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:www-http MARK set 0xb 101 7652 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:ssh MARK set 0xb 0 0 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:mpm-flags MARK set 0xb 1 44 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:https MARK set 0xc 44 2516 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:pop-3 MARK set 0xc 266 41637 MARK tcp -- any any 192.168.1.0/24 anywhere MARK set 0xd

Chain INPUT (policy ACCEPT 165 packets, 12979 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 400 packets, 121K bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 98 packets, 12143 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 498 packets, 133K bytes)
pkts bytes target prot opt in out source destination
[root@samba htb]# iptables -L -t mangle -v
Chain PREROUTING (policy ACCEPT 2979 packets, 303K bytes)
pkts bytes target prot opt in out source destination 2107 110K MARK tcp -- any any 192.168.1.0/24 ns1.intranet.com.br tcp dpt:3128 MARK set 0xa 0 0 MARK tcp -- any any 192.168.1.0/24 ns1.intranet.com.br tcp dpt:microsoft-ds MARK set 0xa 21 3733 MARK tcp -- any any 192.168.1.0/24 ns1.intranet.com.br tcp dpt:netbios-ssn MARK set 0xa 29 1821 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:imap2 MARK set 0xb 179 47088 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:www-http MARK set 0xb 121 8932 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:ssh MARK set 0xb 0 0 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:mpm-flags MARK set 0xb 3 176 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:https MARK set 0xc 44 2516 MARK tcp -- any any 192.168.1.0/24 anywhere tcp dpt:pop-3 MARK set 0xc 2518 176K MARK tcp -- any any 192.168.1.0/24 anywhere MARK set 0xd

Chain INPUT (policy ACCEPT 2389 packets, 138K bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 590 packets, 165K bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 4390 packets, 6339K bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 4980 packets, 6504K bytes)
pkts bytes target prot opt in out source destination

A configured Apache to listen on port 3128, to make tests, and in a machine in my Lan I do:

[william@whsm tmp]$ time wget samba.intranet.com.br:3128/768.txt
--12:34:22--  http://samba.intranet.com.br:3128/768.txt
          => `768.txt'
Resolving samba.intranet.com.br... 192.168.1.254
Connecting to samba.intranet.com.br[192.168.1.254]:3128... connected.
Requisição enviada ao servidor HTTP, esperando resposta... 200 OK
Tamanho: 7,864,320 [text/plain]

100%[================================================================================================================>] 7,864,320 91.59K/s ETA 00:00

12:35:46 (91.70 KB/s) - `768.txt' recebido [7864320/7864320]


real    1m23.817s
user    0m0.080s
sys     0m0.204s

As you can see, the download speed is 92KBps, the 768kbits in my script. but why the class 1:10 who haves garanteedrate 89232kbit wasn't used ? the fw mark is working, I see the traffic going correctly, but the correct filter is not applyed??!

Maybe some of you can give me a hand, I'm sure that something is misconfigured, but I can't figure out where. I'm new in htb, and I read the LARTC how to, and search google for a solution, but in vain, this is getting me crazy!! Help me!!

Regards,

--
William Henrique Siqueira Marques
wmarques@xxxxxxxxxxxxxx
Rio de Janeiro - Brasil


_______________________________________________
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