User Tools

Site Tools


doc:howto:packet.scheduler:packet.scheduler.example1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
doc:howto:packet.scheduler:packet.scheduler.example1 [2012/11/20 23:39]
uvray313
doc:howto:packet.scheduler:packet.scheduler.example1 [2012/11/20 23:39] (current)
uvray313
Line 1: Line 1:
 +====== Example1: Traffic Prioritizing with PRIO ======
  
 +<code bash>
 +#!/bin/sh
 +# A single user has 1000kbit upload for himself. But they want prioritizing.
 +
 +# Variables
 +TC=$(which tc)
 +IPT=$(which iptables)
 +IPTMO="​$IPT -t mangle -A POSTROUTING"​
 +DEV=pppoe-dsl
 +
 +insmod sch_prio
 +
 +# The PRIO qdisc is a non-shaping container for a configurable number of classes
 +# which are dequeued in order. This allows for easy prioritization of traffic,
 +# where lower classes are only able to send if higher ones have no packets
 +# available.
 +
 +$TC qdisc add dev $DEV root       ​handle 1:    prio default 30
 +$TC class add dev $DEV parent 1:  classid 1:1  prio rate 1000kbit?
 +$TC class add dev $DEV parent 1:1 classid 1:10 prio ??? #-- ssh, ACKs, VoIP, gaming
 +$TC class add dev $DEV parent 1:1 classid 1:20 prio ??? #-- http
 +$TC class add dev $DEV parent 1:1 classid 1:30 prio ??? #-- bulk, default, mails, etc
 +
 +# Filter
 +# Since PRIO honors the TOS/​QoS-Field by default, we should be concerned with our
 +# applications setting the right QoS for every packet they create. Additionally we
 +# can not blindly trust the set TOS and change it:
 +
 +$IPTMO -N CHKTOS #​-------------------------------create custom chain for this issue
 +$IPTMO -o $DEV -j CHKTOS #----every packet immediately jumps to custom-chain:​ CHKTOS
 +$IPTMO -A CHKTOS -m tos ! --tos Normal-Service -j RETURN #---if TOS is set, leave it
 +$IPTMO -A CHKTOS -p udp -j TOS --set-tos Minimize-Delay #-----UDP gets high priority
 +$IPTMO -A CHKTOS -p udp -m length --length :160 -j TOS --set-tos Minimize-Delay
 +#-- small udp packets
 +$IPTMO -A CHKTOS -p tcp -m length --length :128 -j TOS --set-tos Minimize-Delay
 +#-- small tcp packets get high priority
 +# If bulk traffic gets tunneled through ssh connections,​ change their TOS 
 +# (some programs do this by themselves, but not all):
 +$IPTMO -o $DEV -p tcp --dport 22 -m tos --tos Minimize-Delay -m connrate \
 +--connrate 20000:inf -j TOS --set-tos Maximize-Throughput
 +
 +</​code>​
doc/howto/packet.scheduler/packet.scheduler.example1.txt · Last modified: 2012/11/20 23:39 by uvray313