Hello, as i had mentioned in a previous mail i try to implement a mac protocol
(802.11 csma/ca) for my thesis and i am using the following flowgraph:
Timedsource -> Queue -> mysocket -> Discard
where mysocket is the main element of my router which implements the algorithm
of the protocol and sends packets to PHY through sockets. Then, i needed a way
to know from "mysocket" when the queue becomes empty because it is of great
importance for my protocol. The simplest way that was suggested to me was this:
mysocket::pull() {
Packet * p = input(0).pull();
if(p == NULL){
return 0;}
}
p is NULL exactly if Queue is empty. Everything seemed to work nice but when i
tried to test my protocol in saturation conditions (in which case the queue is
always non empty) by securing that the incoming rate of the queue is much
higher than the outcoming rate i noticed that the queue got empty sometimes.
Specifically i wrote the following code:
Packet * p = input(0).pull();
if(p == NULL){
cout<<"NULL!!"<<endl;
return 0;
}
and noticed that the "NULL!!" message was printed although it shouldn't. One
thing that i am not sure about is what happens exactly when the queue holds
capacity, which is a case that obviously interests me because as i said my
incoming rate is greater than the outcoming rate. In the description of the
queue element it says "Drops incoming packets if the queue already holds
CAPACITY packets". What i understand from this is that the packets which are
dropped are the new ones which are generated from timedsource and not the ones
which are already in the queue, so the queue should still remain non empty. So
do you have any idea about what happens and my queue still gets empty under
these conditions?
One last thing i need to ask as i want to be sure if i have understood
everything right is the following. In my flowgraph the element which initiates
the packet flow after the queue element is the Discard element by a pull
connection from its input. Is that right?
_______________________________________________
click mailing list
[email protected]
https://amsterdam.lcs.mit.edu/mailman/listinfo/click