ns2.35嵌入gpsr协议

一、下载gpsr协议源码,在~/ns-allinone-2.35/ns-2.35下解压,得到gpsr文件夹。

源码地址:点击打开链接

7个为协议实现文件:
gpsr_packet.h : definition of packets of different type used by this implementaion
gpsr_neighbor.h : definition of the neighbor list of each node used by this gpsr implementation including the planaring procedure (both GG and RNG)
gpsr_neighbor.cc : the implementation of the neighbor list class
gpsr.h : the definition of functions of GPSR routing agent of this implementation
gpsr.cc : the implementation of the GPSR routing agent
gpsr_sinklist.h: definition used for scenarios with multiple sinks 
gpsr_sinklist.cc: implementation of gpsr_sinklist.cc

以上4个文件为仿真所需文件

gpsr.tcl : the node and agent creation functions used by simultion configuration in wireless-gpsr.tcl
wireless-gpsr.tcl : the simulation configuration 
grid-deploy10x10.tcl : 100 nodes in a 200x200 meter area 

cbr100.tcl : node 99 sends cbr traffic on UDP to node 0


二、修改packet.h

进入~/ns-allinone-2.35/ns-2.35/common文件夹, 打开packet.h文件,增加一行:
static const packet_t PT_GPSR = 73

关键代码如图:

  1. static const packet_t PT_GPSR = 73;   
  2.  // insert new packet types here  
  3. static packet_t       PT_NTYPE = 74; // This MUST be the LAST one  

三、修改trace/cmu-trace.cc

进入~/ns-allinone-2.35/ns-2.35/trace,打开cmu-trace.cc文件。
在65行左右增加一行:
#include <gpsr/gpsr_packet.h>

关键代码如图:

  1. #include <mdart/mdart_function.h>  
  2. #include <gpsr/gpsr_packet.h>  
  3. #include <cmu-trace.h>  

在void CMUTrace::format(Packet *p, const char *why){}中第1460行左右增加2行:
case PT_GPSR:
break;

关键代码如图:

  1. case PT_PING:  
  2.         break;  
  3. case PT_GPSR:  
  4.             break;  
  5. default:  

四、修改priqueue.cc


进入~/ns-allinone-2.35/ns-2.35/queue文件夹, 打开priqueue.cc文件。
在void PriQueue::rece(Packet *p, Handler *h){}中第95行附近增加一行:

case PT_GPSR:

关键代码如图:

  1. case PT_AOMDV:  
  2. case PT_GPSR:  
  3. case PT_MDART:  

五、修改ns-packet.tcl


在~/ns-allinone-2.35/ns-2.35/tcl/lib文件夹, 打开ns-packet.tcl文件。
在set protolist{}中174行附近加入一行

GPSR

关键代码如图:

  1. Diffusion   # diffusion/diffusion.cc  
  2. GPSR  
  3. IMEP    # Internet MANET Encapsulation Protocol, for ad-hoc networks  

六、修改Makefile


在~/ns-allinone-2.35/ns-2.35,打开Makefile
在OBJ_CC = 的最后加入

gpsr/gpsr_neighbor.o gpsr/gpsr_sinklist.o gpsr/gpsr.o \

关键代码如图:

  1. wpan/p802_15_4trace.o wpan/p802_15_4transac.o \  
  2. apps/pbc.o \  
  3. gpsr/gpsr_neighbor.o gpsr/gpsr_sinklist.o gpsr/gpsr.o \  
  4. $(OBJ_STL)  

注意:每个【.o】后均有一个空格,包括最后一个【gpsr.o】
如果需要加入调试信息,则在CCOPT = -Wall 加上 -g, 如下:

CCOPT = -g -Wall


七、重新编译

  1. cd ~/ns-allinone-2.35/ns-2.35/common  
  2. touch packet.cc  
  3. cd ..  
  4. make clean  
  5. make  

八、 运行仿真

进入~/ns-allinone-2.35/ns-2.35/gpsr文件夹,运行:

ns wireless_gpsr.tcl

有疑问可参看源码包中的readme。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值