Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1836719
  • 博文数量: 343
  • 博客积分: 10342
  • 博客等级: 上将
  • 技术积分: 2892
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 12:34
个人简介

你必须非常努力,才能看起来毫不费力!

文章存档

2012年(3)

2011年(5)

2010年(2)

2009年(40)

2008年(293)

分类: 系统运维

2009-05-23 15:29:14

 

网上有关于往NS2中添加新的路由协议的文章,却没有关于往NS2中添加新的MAC协议的文章。下面我给大家讲一下如何往NS2中添加新的MAC协议。
  
NS2.29中添加了一个新的MAC协议,暂时命名为LMAC.其实它的代码内容和SMAC一样,我只是想验证一下如何在NS2.29中添加新的协议。
1.
~/ns-allinone-2.29/ns-2.29/mac目录下copy原来的smac.ccsmac.h
  cp smac.cc lmac.cc
  cp smac.h  lmac.h

2.
打开lmac.cclmac.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 \
   
管理员在2009年8月13日编辑了该文章文章。

-->
阅读(1712) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~