[Click] Queue: overflow blocks click

Frederic Van Quickenborne frederic.vanquickenborne at intec.ugent.be
Fri Oct 15 08:30:20 EDT 2004


All,

I did the same test as described below but with epro100 drivers for the 
polldevices and the queue overflows, but he does not block. So I get a 
throughput of approx. 495000 packets of 64 bytes. Apparently the problem 
must be found in the tulip drivers, because when I test another 
configuration with other elements like prioscheduler and extetherswitch on 
epro100 poll devices, click doesn't block when the queue(s) overflow(s).

Quite annoying, because we are also using machines with tulip polling devices.

Many regards.

At 11:36 14/10/2004 -0700, you wrote:
>Frederic,
>
>What happens if you get rid of the PrioScheds?  Please try that and let us 
>know.  (That is, have one Queue per output device.)
>
>Eddie
>
>
>On Oct 14, 2004, at 9:26 AM, Frederic Van Quickenborne wrote:
>
>>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
>>_______________________________________________
>>click mailing list
>>click at amsterdam.lcs.mit.edu
>>https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>
>_______________________________________________
>click mailing list
>click at amsterdam.lcs.mit.edu
>https://amsterdam.lcs.mit.edu/mailman/listinfo/click

==================================================================
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