Dear Amar,

I think you have confused with between mac::recv() and aodv::recv()

1. mac::recv() able to listen every packet in a channel as long as it
is above CSThresh and decode a packet if it is above RXThresh.

2.This is not the same for aodv::recv(), you would need to understand, how
a)AODV protocol works and the components of AODV Table built at nodes
b)wireless mobile node schematic in the NS2 manual.

3.Not every packet  received by mac::recv() is sent upstack to
aodv::recv(), only those need to be forwarded will be sent to
aodv::recv(). Thus the final destination node would not go through
aodv:recv but the data packet received by mac:recv will be directly
sent to AGT via LL using uptarget_

4.If you yet to understand this, let me illustrate this in a small
scenario. We have 3 nodes (N3, N4 and N5) arranged in series. N5 sends
one packet to N3.

You will see something as below,

Node: _5 _ recvd data packet at time: 11.500000000, PacketType: 61, UID: 4
Node: _4 _ recvd data packet at time: 11.501782848, PacketType: 61, UID: 4

if you invoke the below at aodv::recv(),

if(DATA_PACKET(ch->ptype())) {fprintf(stdout,"\nNode: _%i _ recvd data
packet at time: %.9lf, PacketType: %i, UID: %i", index, CURRENT_TIME,
ch->ptype(), ch->uid());}

You will see the destination node, i.e N3 is missing.

5. Do compare this with your trace file results,

Line#01 - s 11.500000000 _5_ AGT  --- 4 Poisson 1500 [0 0 0 0 Y Y]
------- [5:1 3:1 32 0 0]
Line#02 - r 11.500000000 _5_ RTR  --- 4 Poisson 1500 [0 0 0 0 Y Y]
------- [5:1 3:1 32 0 0]
Line#03 - s 11.500000000 _5_ RTR  --- 4 Poisson 1520 [0 0 0 0 Y Y]
------- [5:1 3:1 30 2 4]
Line#04 - s 11.500435000 _5_ MAC  --- 4 Poisson 1578 [13a 4 5 800 Y Y]
------- [5:1 3:1 30 2 4]
Line#05 - r 11.501757848 _4_ MAC  --- 4 Poisson 1520 [13a 4 5 800 Y Y]
------- [5:1 3:1 30 2 4]
Line#06 - s 11.501767848 _4_ MAC  --- 0 ACK 38 [0 5 4 0 Y Y]
Line#07 - r 11.501782848 _4_ RTR  --- 4 Poisson 1520 [13a 4 5 800 Y Y]
------- [5:1 3:1 30 2 4]
Line#08 - f 11.501782848 _4_ RTR  --- 4 Poisson 1520 [13a 4 5 800 Y Y]
------- [5:1 3:1 29 1 3]
Line#09 - r 11.502072515 _5_ MAC  --- 0 ACK 38 [0 5 4 0 Y Y]
Line#10 - s 11.502481848 _4_ MAC  --- 4 Poisson 1578 [13a 3 4 800 Y Y]
------- [5:1 3:1 29 1 3]
Line#11 - r 11.503804697 _3_ MAC  --- 4 Poisson 1520 [13a 3 4 800 Y Y]
------- [5:1 3:1 29 1 3]
Line#12 - s 11.503814697 _3_ MAC  --- 0 ACK 38 [0 4 3 0 Y Y]
Line#13 - r 11.503829697 _3_ AGT  --- 4 Poisson 1520 [13a 3 4 800 Y Y]
------- [5:1 3:1 29 1 3]
Line#14 - r 11.504119364 _4_ MAC  --- 0 ACK 38 [0 4 3 0 Y Y]

You will see RTR (i.e AODV) is received only by the source node and
the intermediary nodes (where forward event need to be executed)
except the destination node.

6. In case you like to know if a destination node received a packet,
you can do so by comparing  a packet's  destination ip address with
the node_id of a node receiving the packet

Good Luck.

rgds
Saravanan K

On Wed, Feb 6, 2013 at 3:51 PM, AmarNath Patra <amarnath.pa...@gmail.com> wrote:
>
> Hello Everyone,
>
> If I add the following statement in the beginning of the code in the
> function, AODV::recv(Packet *p, Handler*), in aodv.cc :
>
> if(DATA_PACKET(ch->ptype())) { printf("\nNode: _%i _ recvd data packet at
> time: %.4lf", index, CURRENT_TIME); }
>
> Then it prints for all active nodes except for the destination. Why is it
> happening?
> If not in this function/file, then where can I check whether the
> destination received a data packet?
>
> I just tried to implement the NULL agent's recv function in c++ source
> code, and added the above statement in it.
> Here the print function gets executed for the case of destination node. Is
> this correct?
>
> Can't I recognize the/a destination node in the aodv,cc file itself?
>
> -amar

Reply via email to