Re: pfifo_fast behavior.

Linux Advanced Routing and Traffic Control

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

 



On 05/12, dE wrote:
> Hello everyone!
> 
> I was trying to do some traffic shaping to make http pages more responsive
> while torrenting. So I decided to modify TOS value of packets to have an
> affect on the default pfifo_fast qdisc.
> 
> I've the following iptable rules --
> 
> #DNS request
> iptables -t mangle -A OUTPUT -o eth1 -p udp -m multiport --dports 53 -j TOS
> --set-tos 0x10
> 
> #DNS response
> iptables -t mangle -A PREROUTING -i eth1 -p udp -m multiport --sports 53 -j
> TOS --set-tos 0x10
> 
> #Incoming torrent connections
> iptables -t mangle -A PREROUTING -i eth1 -p tcp -m multiport --dports 2000
> -j TOS --set-tos 0x2
> iptables -t mangle -A PREROUTING -i eth1 -p udp -m multiport --dports
> 2000,1900,2001 -j TOS --set-tos 0x2
> 
> #Mail server
> iptables -t mangle -A OUTPUT -o eth1 -p tcp -d imap.googlemail.com -m
> multiport --dports 993 -j TOS --set-tos 0x10
> 
> #HTTP(S)
> iptables -t mangle -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443 -j
> TOS --set-tos 0x14
> #iptables -t mangle -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443 -j
> TOS --set-tos 0x10
> iptables -t mangle -A PREROUTING -i eth1 -p tcp -m multiport --sport 80,443
> -j TOS --set-tos 0x14
> #iptables -t mangle -A PREROUTING -i eth1 -p tcp -m multiport --sport 80,443
> -j TOS --set-tos 0x10

There are several issues with your configuration. First, setting the
(deprecated ToS) bits on incoming packets if you don't plan to forward
these packets is senseless. Second, all *fifo* qdiscs are
work-conserving, i.e. will dequeue packets at line speed. As the
bandwidth of your local LAN is usually quite a bit higher than your
internet uplink packets will still pile up at your DSL/cable/... modem.
To actually prioritize services you need to own the queue by limiting
your egress packet rate to slughtly lower than your modems rate. Be
aware that most ISPs overcommit bandwidth in the order of 1:15-1:50 and
your setup will still be ineffective if the shaped rate is higher than
the modems rate.

> But is there a difference between all TOS values which fall in a single
> band?

Nope. 

> I mean, does the behavior of pfifo_fast change if I change from 0x12 to
> 0x16? Cause I thought the qdisc to be simple, and a different behavior for
> all of the above TOS values means pfifo_fast does a lot more than just
> placing packets in 3 different queues.

Nope.

> Another question -- how do you get these TOS values?

They are derived from [0]. Again ToS bits are deprecated.

> and what does -j TOS --set-tos <HEX/DEC> do? Does it modify the 4 bits
> or the whole 8 bit TOS value in the header, or does something
> completely different?

Citing the manpage: "This module sets the Type of Service field in the
IPv4 header (including the "precedence" bits) or the Priority field in
the IPv6 header." It accesses the whole byte. Again ToS is deprecated.
If you want to explicitely mark packet priorities in your network use
DSCP (but don't forget admission control), otherwise just use iptables
to match hosts/protocols directly to HTB/HFSC/DRR/... classes.

Regards,
Ben

[0] https://tools.ietf.org/html/rfc1349

Attachment: pgpuhcNFoIJ8e.pgp
Description: PGP signature


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