[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