Re: [ns] recv function not called in aodv for destination node

2013-02-07 Thread Saravanan Kandasamy

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.5, 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.5 _5_ AGT  --- 4 Poisson 1500 [0 0 0 0 Y Y]
--- [5:1 3:1 32 0 0]
Line#02 - r 11.5 _5_ RTR  --- 4 Poisson 1500 [0 0 0 0 Y Y]
--- [5:1 3:1 32 0 0]
Line#03 - s 11.5 _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



Re: [ns] recv function not called in aodv for destination node

2013-02-07 Thread Saravanan Kandasamy

Amar,

Correction on Line #6,

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 ***at MAC layer***

rgds
Saravanan K

On Thu, Feb 7, 2013 at 2:19 PM, Saravanan Kandasamy svana...@gmail.com wrote:
 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.5, 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.5 _5_ AGT  --- 4 Poisson 1500 [0 0 0 0 Y Y]
 --- [5:1 3:1 32 0 0]
 Line#02 - r 11.5 _5_ RTR  --- 4 Poisson 1500 [0 0 0 0 Y Y]
 --- [5:1 3:1 32 0 0]
 Line#03 - s 11.5 _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



[ns] recv function not called in aodv for destination node

2013-02-06 Thread AmarNath Patra

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