博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NS2下实现MAC跨层设计(转)
阅读量:7081 次
发布时间:2019-06-28

本文共 1285 字,大约阅读时间需要 4 分钟。

在传感器网络的协议设计中,考虑到节能的需要,设计协议时通常需要不同的协议层进行交互,比如Agent层调用MAC层或者PHY层的函数,计算传输或者接收数据消耗的能量,这种设计思想称为cross-layer。理论上讲,我们常规上一般要求网络协议分层设计,以达到简化网络模型的目的。

 

这个例子从Wangbo网站上转载而来,很有启发意义。该例子是在Aodv的Agent中调用MAC层协议。

 

具体步骤:

1.修改aodv/Aodv.h文件

 

 

[cpp] 
  1. #include <mac.h>  
  2. class AODV: public Tap, public Agent {  
  3. public:  
  4. void tap(const Packet *p);  
  5. ......  
  6. protected:  
  7. Mac *mac_;  
  8. ......  
  9. }  

 

其要点是二,一个是让AODV继承Tap类,另外要在其中加入mac_变量,同时加入一个取得Tap的函数。

 

 

2.修改aodv/Aodv.cc文件

 

[cpp] 
  1. int  
  2. AODV::command(int argc, const char*const* argv) {  
  3. ......  
  4. else if(argc == 3) {  
  5. ......  
  6. else if (strcmp(argv[1], "install-tap") == 0) {  
  7. mac_ = (Mac*)TclObject::lookup(argv[2]);  
  8. if (mac_ == 0) return TCL_ERROR;  
  9. mac_->installTap(this);  
  10. return TCL_OK;  
  11. }  
  12. }  
  13. return Agent::command(argc, argv);  
  14. }  
  15. void  
  16. AODV::tap(const Packet *p) {  
  17. // put your code here  
  18. }   

 

 

要点是在aodv::command中加入install-tap接口。

 

3. 修改 tcl/lib/ns-mobilenode.tcl

 

[python] 
  1. Node/MobileNode instproc add-target { agent port } {  
  2. $self instvar dmux_ imep_ toraDebug_ mac_  
  3. ......  
  4. # Special processing for AODV  
  5. set aodvonly [string first "AODV" [$agent info class]]  
  6. if {$aodvonly != -1 } {  
  7. $agent if-queue [$self set ifq_(0)] ; # ifq between LL and MAC  
  8. $agent install-tap $mac_(0)  
  9. ......  
  10. }  

 

 

 

参考:

http://www.cse.msu.edu/~wangbo1/ns2/nshowto1.html

http://hi.baidu.com/aoxinguy/blog/item/2feb5bdfbad37454cdbf1a26.html

你可能感兴趣的文章
[20170123]db_unique_name与大小写2.txt
查看>>
oracle事务(转)
查看>>
ThinkPHP 的模型使用详细介绍--模型的核心(七)
查看>>
我们正在创建一个被真实需求驱动的手机世界
查看>>
Win10中virtualbox新建虚拟机不能设置64位系统解决
查看>>
Knockout应用开发指南 第五章:创建自定义绑定
查看>>
linux网络配置相关命令、虚拟网络接口eth0:0
查看>>
基于v4l2 ffmpeg x264的视频远程监控(附上编译好的库文件)
查看>>
华为登场杭州云栖大会,这是要搞事情吗?
查看>>
对方扔给你一卡车服务器,还想砍掉你50%的云成本
查看>>
获取activity上所有指定类型的控件
查看>>
rpm安装memcache
查看>>
漏洞预警:WordPress 储存型 XSS 漏洞
查看>>
RTP封装h264
查看>>
BYOD:浮躁的名词背后我们不知道的事情
查看>>
Android 7.0之访问文件的权限和FileProvider类
查看>>
安卓selinux权限修改(基于tiny4412开发板)
查看>>
Web前端和后端之区分,以及…
查看>>
前端(第一节课 HTML、CSS 、JAVAscript的概念)
查看>>
Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了
查看>>