problem with wrr+prio

Linux Advanced Routing and Traffic Control

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

 



I have set up wrr successfully on my bridge/shaper machine. That much
works fine. I originally used sfq in the inner classes. However, there
was a problem with high-bandwidth connections (web downloads,
bittorrent) starving low-bandwidth low-latency connections like ssh. I
would like to use prio or similar to prioritize the interactive traffic,
but it does not seem to work. I have tested with "ping -Q 0x10" and
qualitative evaluation of ssh latency. Both tests get very bad (~ 0.5-1
sec) as soon as I start a web download. I have checked with tcpdump that
the TOS is set to 0x10. The machine is 2.4.23, with ebtables and wrr
patches. Any ideas?

Thanks.

Here is my script:

shape () {

   DEV=$1
   WRR_DIRECTION=$2

   # clean existing down- and uplink qdiscs, hide errors
   tc qdisc del dev $DEV root 2> /dev/null > /dev/null

   # install root HTB
   tc qdisc add dev $DEV root handle 8000: htb default 1

   tc class add dev $DEV parent 8000:0 classid 8000:1 htb \
      rate ${RATE}kbit prio 2

   # add wrr for correct direction, matching ip, # classes, no proxy
   # remap
   tc qdisc add dev $DEV parent 8000:1 handle 8001: \
      wrr $WRR_DIRECTION ip $WRR_MAX_CLASSES 0

   declare -i NUM=$WRR_MAX_CLASSES;
   while [ $NUM -ge 1 ]; do
      HNUM=$(printf %X $NUM)
      tc qdisc add dev $DEV parent 8001:$HNUM handle $HNUM: prio
      NUM=$NUM-1
   done

   tc class add dev $DEV parent 8000:0 classid 8000:2 htb prio 1 \
      rate ${RATE}kbit
   tc filter add dev $DEV parent 8000: protocol ip pref 10 \
      u32 match ip src $LOCAL_ADDR flowid 8000:2
   tc filter add dev $DEV parent 8000: protocol ip pref 10 \
      u32 match ip dst $LOCAL_ADDR flowid 8000:2
   tc qdisc add dev $DEV parent 8000:2 handle 8002: pfifo

   tc qdisc change handle 8001 dev $DEV wrr qdisc \
      wmode1=3 wmode2=0

   declare -i NUM=$WRR_MAX_CLASSES;
   while [ $NUM -ge 1 ]; do
      HNUM=$(printf %X $NUM)
      tc class change classid 8001:$HNUM dev $DEV \
         wrr min1=0.5 max1=1.0 decr1=0.0000000254 \
                incr1=0.00083333333 weight1=1.0 \
             min2=0.1 max2=1.0 decr2=0 incr2=0 weight2=1.0
      NUM=$NUM-1
   done

}

shape $IFACE_IN dest
shape $IFACE_OUT sour


_______________________________________________
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