How can I calculate number of hops to reach destination ( NS2 )?

偶尔善良 提交于 2019-12-13 04:37:12

问题


In NS2 ..in TCL file, how can I calculate number of Hops in one path to reach the destination in wireless Network?

I need your help.


回答1:


You must do that in the protocol's codes...
First of all i don't know which protocol you want to use, but fortunately the protocols in ns2 are very similar to each other... So i will c guide you to how to do it.

I will use AODV protocol as a sample...
In theory :

We'll say when a RREQ packet has arrived, increment the packet hop count for current rout...


This is the simplest way :

Now open aodv.cc For example /ns-allinone-2.35/ns-2.35/aodv/aodv.cc and in the lines that says :

// First check if I am the destination ..

if (rq->rq_dst == index) {

Click Enter after if (rq->rq_dst == index) { and write :

printf("Hop_Count_ %d | Packet with uid %d | from %d to %d ",rq->rq->rq_hop_count,ch->uid,ih->saddr(),ih->daddr());

This Code will print the hop count for each packet that arrived to the destination.

In terminal cd into your ns2 directory and type make and click Enter. For example :

$ cd /ns-allinone-2.35/ns-2.35/
$ make


This is the hardest way :
In code :

Open aodv_packet.h from your ns2 directory... For example /ns-allinone-2.35/ns-2.35/aodv/aodv_packet.h

Find struct hdr_aodv_request { and create an interget variable in it called hop_count_...

Like : struct hdr_aodv_request { int hop_count_;

Now open aodv.cc from /ns-allinone-2.35/ns-2.35/aodv/aodv.cc and find the definition of sendRequest(Packet *p) function that might look like void AODV::sendRequest(nsaddr_t dst) {...

Now in this function you must see some codes like :

// Fill up some more fields.
rq->rq_type = AODVTYPE_RREQ;
rq->rq_hop_count = 1;
rq->rq_bcast_id = bid++;
rq->rq_dst = dst;
rq->rq_dst_seqno = (rt ? rt->rt_seqno : 0);
rq->rq_src = index;
seqno += 2;
assert((seqno % 2) == 0);
rq->rq_src_seqno = seqno;
rq->rq_timestamp = CURRENT_TIME;

And where it says rq->rq_timestamp = CURRENT_TIME; just click Enter and write the blow code :

rq->hop_count_ = 0;

Now you need to find the definition of recvRequest(Packet *p) that might look like void AODV::recvRequest(Packet *p) {...

In this function find the lines that says :

/*
 * Can't reply. So forward the  Route Request
 */
else {

After else { click Enter and write :

rq->hop_count_++;

In terminal cd into your ns2 directory and type make and click Enter. For example :

$ cd /ns-allinone-2.35/ns-2.35/
$ make

Now for printing you can use the first solution that i wrote above.




来源:https://stackoverflow.com/questions/33709673/how-can-i-calculate-number-of-hops-to-reach-destination-ns2

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!