加入收藏 设为首页 联系站长
首页 | 虚拟动态 | Cisco模拟 | Juniper仿真 | 虚拟机 | 网络仿真 | 软件路由 | 技术专题 | 相关软件 | 交流论坛
>首页 -> 网络仿真 -> NS

TOP

原创-----如何往NS2中添加新的MAC协议
[ 录入者:admin | 时间:2007-10-28 00:53:43 | 作者: | 来源: | 浏览:1295次 ]
网上有关于往NS2中添加新的路由协议的文章,却没有关于往NS2中添加新的MAC协议的文章。下面我给大家讲一下如何往NS2中添加新的MAC协议。
   往NS2.29中添加了一个新的MAC协议,暂时命名为LMAC.其实它的代码内容和SMAC一样,我只是想验证一下如何在NS2.29中添加新的协议。
1.在~/ns-allinone-2.29/ns-2.29/mac目录下copy原来的smac.cc和smac.h
  cp smac.cc lmac.cc
  cp smac.h  lmac.h

2.打开lmac.cc和lmac.h,把所有的SMAC替换成LMAC,把所有的smac替换成lmac,把所有的Smac替换成Lmac.

3.修改packet.h
  打开packet.h,找到匹配字符串SMAC,然后照着样子修改就可以了。
  packet.h在~/ns-allinone-2.29/ns-2.29/common目录下
  添加定义访问协议报头的指针
  #define HDR_SMAC(p)     ((hdr_smac *)hdr_mac::access(p))
  #define HDR_LMAC(p)     ((hdr_lmac *)hdr_mac::access(p))       // add lmac here
  增加LMAC包类型(协议标志),所有的包类型都是PT_开头,如PT_TCP,PT_UDP等,在枚举类型enum packet_t{}中找到       PT_SMAC,
  添加LMAC
  // SMAC packet
      PT_SMAC,
   // LMAC packet
      PT_LMAC,
   注意新添加的协议要在PT_NTYPE之前。
   然后在类class p_info{}的构造函数中找到
   name_[PT_SMAC]="smac";
    添加 name_[PT_LMAC]="lmac";这样就可以通过协议标识寻找协议对应的字符串
    同样注意要在 name_[PT_NTYPE]= "undefined";之前定义

4.修改ns-default.tcl文件,在~/ns-allinone-2.29/ns-2.29/tcl/lib目录下
   找到
   # Turning on/off sleep-wakeup cycles for SMAC
   Mac/SMAC set syncFlag_ 1
   # Nodes synchronize their schedules in SMAC
   Mac/SMAC set selfConfigFlag_ 1
   # Default duty cycle in SMAC
   Mac/SMAC set dutyCycle_ 10
   这里定义了otcl对象的缺省值,我们在这里添加LMAC的缺省值
   #add LMAC here
   # Turning on/off sleep-wakeup cycles for LMAC
   Mac/LMAC set syncFlag_ 1
   # Nodes synchronize their schedules in LMAC
   Mac/LMAC set selfConfigFlag_ 1
   # Default duty cycle in LMAC
   Mac/LMAC set dutyCycle_ 10
   
    继续寻找SMAC,找到
    # Turning on/off sleep-wakeup cycles for SMAC
   Mac/SMAC set syncFlag_ 0
    添加相应的LMAC
    # Turning on/off sleep-wakeup cycles for LMAC
    Mac/LMAC set syncFlag_ 0

  5.修改ns-packet.tcl文件,在~/ns-allinone-2.29/ns-2.29/tcl/lib目录下
    在foreach prot{}这个函数中找到Smac,
   Smac    # Sensor-MAC
    添加一行: Lmac    # A new Sensor-MAC

  6.修改Makefile文件,在~/ns-allinone-2.29/ns-2.29/目录下
    找到smac.o
   mac/mac-802_3.o mac/mac-tdma.o mac/smac.o \
    添加lmac.o到ns的目标文件列表:
   mac/mac-802_3.o mac/mac-tdma.o mac/smac.o mac/lmac.o\

-----------------------------
QQ:631305143
MSN:gmchen@hotmail.com
EE
Fudan University && Shanghai Jiao Tong University
avid
Research Fields: MAC Protocol in WSN, Cross Layer Optimization
-----------------------------
[上一篇]nrlsensorsim-2.27 installation [下一篇]NS使用一些常用资源
※相关文章
 

评论

称  呼:
内  容:

相关栏目

最新文章

热门文章

推荐文章

赞助商链接