[Click] Re: small bug--? in SimpleQueue element

Eddie Kohler kohler at cs.ucla.edu
Sun Nov 6 11:18:06 EST 2005


Yuliang,

Thanks for sending the configuration.  But do not send Word files to me or 
this list in future.  Plaintext would have been much better.

Your code is still wrong.  It is not correct.  It is a bad idea, completely 
erroneous, and horribly, tragically wrong.  It will cause any Queue to drop 
*all future packets* after receiving CAPACITY packets, no matter how many 
packets are drained from the queue.  That is wrong wrong wrong wrong wrong. 
Just trying to be clear :)

I think you're missing the fact that the Discard element in this configuration 
is active.  That is, it is actively trying to empty the queue.  Do you 
understand about push and pull?  (If not, it is explained in our papers.) 
Discard is actively trying to empty the queue by removing packets from the 
queue's head.  It throws away any packets that it pulls.  That is why your 
first configuration has no drops; the Queue never gets a chance to drop them, 
because the Discard drops them first.

Here are two things to try.

RatedSource(DATASIZE 1000, RATE 4294967295) -> Print(OK) -> SimpleQueue(2) -> 
Print(ABOUT TO DROP) -> Discard;

RatedSource(DATASIZE 1000, RATE 4294967295) -> Print(OK) -> SimpleQueue(2) -> 
Idle;

Eddie


Yuliang Li, Electrical & Electronic Engineering wrote:
> Dear Eddie:
> Sorry for my last unclear mail. Comparing next and _capacity is what I 
> have changed. The original is the next comparing with _head.
> 
> A more clear specification has been attached with this mail.
> 
> Thank you again.
> 
> 
> 
> 
> --On 04 November 2005 10:31 -0800 Eddie Kohler <kohler at cs.ucla.edu> wrote:
> 
>> Hi Yuliang,
>>
>> I don't understand the problem you're referring to, but your fix is
>> certainly wrong.  Click's queues store packets in a circular array;
>> comparing next and _capacity is correct.
>>
>> Eddie
>>
>>
>> Yuliang Li, Electrical & Electronic Engineering wrote:
>>
>>> Dear Eddie:
>>> Thank you very much for your Click. It is really interesting and
>>> powerful.
>>>
>>> My name is Yuliang Li. I am a third year PhD student from the University
>>> of Bristol, UK. I am using Click to do some implementation in the area
>>> of Congestion Control.
>>>
>>> I found a small problem when I am using the SimpleQueue element. It
>>> never gives me the number of packets which have been dropped at whatever
>>> the source rate is. So I changed the 'push' function, to let 'next'
>>> comparing with the '_capacity' (originally comparing with '_head'). It
>>> seems this is more reasonable.
>>>
>>>
>>> void
>>> SimpleQueue::push(int, Packet *p)
>>> {
>>>    // If you change this code, also change NotifierQueue::push().
>>>    int next = next_i(_tail);
>>>
>>>    // should this stuff be in SimpleQueue::enq?
>>>    if (next != _capacity) {
>>>        _q[_tail] = p;
>>>        _tail = next;
>>>
>>>        int s = size();
>>>        if (s > _highwater_length)
>>>            _highwater_length = s;
>>>
>>>    } else {
>>>        // if (!(_drops % 100))
>>>        if (_drops == 0)
>>>            click_chatter("%{element}: overflow", this);
>>>        _drops++;
>>>        p->kill();
>>>    }
>>> }
>>>
>>> Do you think is this a small bug in the program? Or are their any
>>> special meaning for using '_head'.
>>>
>>> Thank you very much
>>>
>>>
>>>
>>> *****************************************************************
>>>  Yuliang Li           PhD student
>>> Wireless and Networks Research Laboratory
>>> Department of Electrical and Electronic Engineering
>>> University of Bristol    Bristol     BS8 1UB
>>> United Kingdom                   Tel: +44 117 3315059
>>> Email: Yuliang.Li at bristol.ac.uk
>>> *****************************************************************
>>>
>>>
>>
> 
> 
> 
> *****************************************************************
>  Yuliang Li           PhD student
> Wireless and Networks Research Laboratory
> Department of Electrical and Electronic Engineering
> University of Bristol    Bristol     BS8 1UB
> United Kingdom                   Tel: +44 117 3315059
> Email: Yuliang.Li at bristol.ac.uk
> *****************************************************************
> 


More information about the click mailing list