[Click] Queues and notifications

Mike Wilson mlw2 at arl.wustl.edu
Thu Jan 25 16:36:18 EST 2007


Yes, checked out yesterday morning.  (I just confirmed that there have 
been no changes since then.)

-Mike

On Thu, 25 Jan 2007, Beyers Cronje wrote:

> Hi Mike,
>
> Are you using the latest version from CVS?
>
>
> On 1/25/07, Mike Wilson <mlw2 at arl.wustl.edu> wrote:
>> 
>> I've got a large, complex click config where I read from UDP sockets and
>> write to a raw socket, routing packets from UDP tunnels.  Unfortunately, I
>> can't seem to get notifications working in the Queues.
>> 
>> I've stripped the config down to a fairly simple case that replicates the
>> problem, at least on my system.  If I use Queue or NotifierQueue
>> components for the queues, I either get nothing out the interface, or I
>> get 1-2 packets and then nothing.  If I use a SimpleQueue, everything
>> works just fine.
>> 
>> My limited understanding is that the SimpleQueue doesn't do notifiers, so
>> the pull components downstream must use polling.  In other words, it's a
>> massive CPU hog - I get 99% utilization to click with a SimpleQueue.  With
>> Queue, I don't even see click in my top(1) list.
>> 
>> Am I mis-using the queue components somehow, or is this a bug?  Do
>> RawSockets use notifiers?
>> 
>> -Mike Wilson
>> 
>> ---replication example---
>> 
>> // Warning, this config will send bogus UDP packets to 172.16.46.20.
>> // Unfortunately, the problem doesn't manifest with a Discard at the end.
>> 
>> AddressInfo(myip  128.252.160.209,
>>              NetRtr 172.16.46.12,
>>              HostRtr 172.16.46.20,
>>              NetRoute 172.16.46.0/24);
>> 
>> PortInfo(NetTun 0xA121,
>>           HostTun 0xA122);
>> 
>> out :: RawSocket("UDP");
>> rt :: RangeIPLookup(NetRoute  0, HostRtr 1);
>> sched :: DRRSched();
>> 
>> TimedSource -> UDPIPEncap(HostRtr, 5005, HostRtr, 5005) ->
>> IPPrint("Injecting Packet") -> check :: CheckIPHeader;
>> Idle -> rt;
>> 
>> check[1] -> Print("Injected Bad packet") -> Discard;
>> check[0] -> IPPrint("Injected Valid Packet") -> GetIPAddress(16) -> rt;
>> 
>> rt[0] -> UDPIPEncap(myip, NetTun, NetRtr, NetTun) -> IPPrint("Net Route")
>> -> SimpleQueue -> [0]sched;
>> rt[1] -> UDPIPEncap(myip, HostTun, HostRtr, HostTun) -> IPPrint("Host
>> Route") -> SimpleQueue -> [1]sched;
>> 
>> sched -> IPPrint("Sending") -> out;
>> 
>> _______________________________________________
>> click mailing list
>> click at amsterdam.lcs.mit.edu
>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>> 
>


More information about the click mailing list