免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1287 | 回复: 0
打印 上一主题 下一主题

如何往NS2中添加新的MAC协议 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-23 15:29 |只看该作者 |倒序浏览


网上有关于往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 \
   

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76263/showart_1936392.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP