[Click] Queue: overflow blocks click

Frederic Van Quickenborne frederic.vanquickenborne at intec.ugent.be
Thu Oct 14 12:26:13 EDT 2004


Hi all,

Im testing click, especially the PrioSchedulers and Queues in combination 
with the vlan-prio classes (CoS classes).

This is the used config file: (I left out the EthernetSwitch elements 
because I thought that element could be the reason of my problem)

PollDevice1 :: PollDevice(eth1,1);
PollDevice2 :: PollDevice(eth2,1);
ToHostSniffer1 :: ToHostSniffers(eth1); // used for GVRP support - not relevant
ToHostSniffer2 :: ToHostSniffers(eth2);
ToDevice1 :: ToDevice(eth1);
ToDevice2 :: ToDevice(eth2);
Classifier1 :: Classifier(0/0180C2000000,0/0180C2000020%111111111110, -); 
// used for GVRP support - not relevant
Classifier2 :: Classifier(0/0180C2000000,0/0180C2000020%111111111110, -);
w0 :: Queue();
w1 :: Queue();
in :: Suppressor();
out :: Suppressor();
Classifiereth1_prios :: Classifier(14/00%E0,14/20%E0,-);
Classifiereth2_prios :: Classifier(14/00%E0,14/20%E0,-);
qeth1_prio0 :: Queue();
qeth1_prio1 :: Queue();
qeth1_prio2 :: Queue();
qeth2_prio0 :: Queue();
qeth2_prio1 :: Queue();
qeth2_prio2 :: Queue();
PrioSchedeth1 :: PrioSched();
PrioSchedeth2 :: PrioSched();
PollDevice1[0] -> [0]Classifier1;
PollDevice2[0] -> [0]Classifier2;
Classifier1[0] -> [0]w0;
Classifier1[1] -> [0]ToHostSniffer1;
Classifier1[2] -> [0]in;
Classifier2[0] -> [0]w1;
Classifier2[1] -> [0]ToHostSniffer2;
Classifier2[2] -> [1]in;
w0[0] -> [0]PrioSchedeth1;
w1[0] -> [0]PrioSchedeth2;
in[0] -> [1]out;
in[1] -> [0]out;
out[0] -> [0]Classifiereth1_prios;
out[1] -> [0]Classifiereth2_prios;
Classifiereth1_prios[0] -> [0]qeth1_prio0;
Classifiereth1_prios[1] -> [0]qeth1_prio1;
Classifiereth1_prios[2] -> [0]qeth1_prio2;
Classifiereth2_prios[0] -> [0]qeth2_prio0;
Classifiereth2_prios[1] -> [0]qeth2_prio1;
Classifiereth2_prios[2] -> [0]qeth2_prio2;
qeth1_prio0[0] -> [1]PrioSchedeth1;
qeth1_prio1[0] -> [2]PrioSchedeth1;
qeth1_prio2[0] -> [3]PrioSchedeth1;
qeth2_prio0[0] -> [1]PrioSchedeth2;
qeth2_prio1[0] -> [2]PrioSchedeth2;
qeth2_prio2[0] -> [3]PrioSchedeth2;
PrioSchedeth1[0] -> [0]ToDevice1;
PrioSchedeth2[0] -> [0]ToDevice2;

When I send a flow of about 70Mbit/s through this machine (from eth1 to 
eth2), several (due to the several CoS classes) queues overflows: (from syslog)

Oct 14 18:08:53 nike7 kernel: chatter: qeth2_prio1 :: Queue: overflow
Oct 14 18:08:53 nike7 kernel: chatter: qeth2_prio2 :: Queue: overflow
Oct 14 18:08:53 nike7 kernel: chatter: qeth2_prio0 :: Queue: overflow

And click blocks completely, I have to quit it and restart it (by removing 
the config file, rmmod click and back insmod click). When click blocks, I 
can see that the ToDevices don't pull any packet anymore.

While quiting, I get the following in the syslog:

Oct 14 18:09:25 nike7 kernel: device eth2 left promiscuous mode
Oct 14 18:09:25 nike7 kernel: device eth1 left promiscuous mode
Oct 14 18:09:25 nike7 kernel: click: stopping router thread pid 162
Oct 14 18:09:25 nike7 kernel: poll d0937540: 2947/1676447 freed, 
3040/1676354 allocated
Oct 14 18:09:25 nike7 kernel: click module exiting
Oct 14 18:09:30 nike7 kernel: NETDEV WATCHDOG: eth2: transmit timed out

How can I prevent that an overflow blocks the system? Is this a bug or do I 
just have to make the queues bigger?

(click used as a linuxmodule and using the tulip driver for the polldevices)

Many regards,
Frederic.


==================================================================
Frederic Van Quickenborne
Department of Information Technology (INTEC)
Ghent University - IMEC
Sint-Pietersnieuwstraat 41, B-9000 Gent, Belgium
tel.: +32 (0)9-264 9957; tel. secr.: +32 (0)9-264 9970
fax: +32 (0)9-264 9960
Frederic.VanQuickenborne at intec.ugent.be
http://www.ibcn.intec.ugent.be


More information about the click mailing list