These tc commands used to work... what's broken them?

Linux Advanced Routing and Traffic Control

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

 



I have a Gentoo Linux (kernel 2.6.11) server.  Several months ago, I
made a traffic shaping setup for my box (running a 2.4 kernel then)
that worked beautifully.  It gave high priority to SSH and RealAudio
traffic, and put HTTP downloading traffic on a lower prio so they could
only use what bandwidth was left.

However, I've only just realized that tc is no longer accepting the
commands I setup in a script to start it.  I don't know when it stopped
working.

I can post the tcng script if anyone wants to see how I generated my tc 
commands, but I suspect it may not be relevant since tc is bombing out 
so early in the process.  Here's what I get:

------------------------------------------------------------
> tc -s qdisc show dev eth0

qdisc pfifo_fast 0: bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1   
 Sent 455120063 bytes 553706 pkt (dropped 0, overlimits 0 requeues 25)
 rate 0bit 0pps backlog 0b 0p requeues 25

> tc -s class show dev eth0

> tc qdisc add dev eth0 handle 1:0 root dsmark indices 8 default_index 0

RTNETLINK answers: Invalid argument
------------------------------------------------------------

Now this is such a basic command... and yet tc is already choking on   
it.  If I try something else, like this random example, then it works:

------------------------------------------------------------
> tc qdisc add dev eth0 handle 1:0 root cbq bandwidth 90000bps avpkt 1000

> tc -s class show dev eth0

class cbq 1: root rate 720000bit (bounded,isolated) prio no-transmit
 Sent 19872 bytes 36 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0
  borrowed 0 overactions 0 avgidle 11377 undertime 0
------------------------------------------------------------

Ok, so I said to myself "Aha, maybe when Gentoo upgraded its iproute2
package not too long ago, it didn't compile in DSMARK support that the
old iproute2 had!" So I dug into the iproute2 package.  But as best I
can tell, the latest iproute2 (at least the Gentoo variant) doesn't
even need the old TC_CONFIG_DIFFSERV=y directive in the Config file any
more.  It appears to compile dsmark support in in by default.  Just to
check, I tried this:

> strings /sbin/tc | grep dsmark

dsmark_qdisc_util
dsmark
dsmark: indices too short
dsmark: empty mask
dsmark: empty value
Usage: dsmark indices INDICES [ default_index DEFAULT_INDEX ] [
set_tc_index ]
Usage: ... dsmark [ mask MASK ] [ value VALUE ]
dsmark: default_index too short

So, it definitely looks like dsmark support is in there...

Next I thought "Maybe I forgot to compile in dsmark support when I
upgraded from a 2.4 to 2.6 kernel".  But no, that doesn't seem to be
the case:

Device Drivers ->
  Networking Support ->
    Networking Options ->
      QoS and/or fair queueing ->

        [*] QoS and/or fair queueing                               
        <M>   CBQ packet scheduler                                 
        <M>   HTB packet scheduler                                 
        <M>   HFSC packet scheduler                                
        <M>   The simplest PRIO pseudoscheduler                    
        <M>   RED queue                                            
        <M>   SFQ queue                                            
        <M>   TEQL queue                                           
        <M>   TBF queue                                            
        <M>   GRED queue                                           
        <M>   Diffserv field marker                                
        <M>   Network emulator                                     
        <M>   Ingress Qdisc                                        
        [*]   QoS support                                          
        [*]     Rate estimator                                     
        [*]   Packet classifier API                                
        <M>     TC index classifier                                
        <M>     Routing table based classifier                     
        <M> Firewall based classifier                              
        <M> U32 classifier                                         
        [ ]   U32 classifier performance counters                  
        [ ] classify input device (slows things u32/fw)            
        [ ] Use nfmark as a key in U32 classifier                  
        <M> Special RSVP classifier                                
        <M> Special RSVP classifier for IPv6                       
        [ ] Packet ACTION                                          
        [*] Traffic policing (needed for in/egress)                

So I'm stumped.  Can anyone see anything obvious that would cause tc to
be choking on commands that used to work fine?

I'll be happy to provide any further information (tcng script, full
list of tc commands, etc.) if it'll help.  I hope someone has an idea,
because I don't know where else to look.
_______________________________________________
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