NS2跨层设计
来源:互联网 发布:剑三成男捏脸数据图片 编辑:程序博客网 时间:2024/05/18 03:55
NS2的仿真中经常会遇到不同层之间信息的访问问题,因此就涉及到跨层设计的一些概念,本文参考网络上的一些资源,并结合自己的想法给出跨层设计的简单步骤。
首先,来看看路由层和MAC层之间的信息如何交互,在这里主要是路由层访问MAC层的一些信息。以AODV协议为例,简述跨层设计的步骤。
(1)在aodv.h中增加头文件
#include "mac/mac-802_11.h"紧接着,在AODV类里面定义一个Mac802_11的对象指针,如下所示:
Mac802_11* clmac;(2)修改aodv.cc文件中的command()函数,增加以下代码
int AODV::command(int argc, const char*const* argv) {………else if(argc == 3) {if (strcmp(argv[1], "cl-mac") == 0){clmac = (Mac802_11 *) TclObject::lookup(argv[2]);if (clmac == 0){fprintf(stderr, "MESPAgent: %s lookup %s failed.\n", argv[1], argv[2]);return TCL_ERROR;}printf("Get Node mac bss_id:%d \n", clmac->bss_id());return TCL_OK;} else if (……) {…………….}(3)在tcl脚本中初始化
set rt($i) [$node_($i) agent 255] # 获得路由层协议$rt($i) cl-mac [$node_($i) set mac_(0)] #初始化 mac 对象(4)至此,就可以在AODV中通过clmac对象访问mac的信息
其次,来看看路由层与Queue(LL的队列)的交互,该步需要完成之前一步的工作,简要步骤如下:
(1)在mac-802_11.h中添加如下头文件#include<queue.h>紧接着,在802_11类中定义:Queue* ifq_;和inlineQueue *ifq() {return ifq_;}
(2)在mac-802_11.cc中修改command()函数
int Mac802_11::command(int argc, const char*const* argv){…………………if (argc == 3) {if(strcmp(argv[1],"ifq")==0){ifq_=(Queue*)TclObject::lookup(argv[2]);if(ifq_==0)return TCL_ERROR;return TCL_OK;} else if (…) {…………………(3) 修改ll.cc文件的command()函数
int LL::command(int argc, const char*const* argv){……………………if (strcmp(argv[1], "down-target") == 0) {downtarget_ = (NsObject*) TclObject::lookup(argv[2]);ifq_ = (Queue*)TclObject::lookup(argv[2]);return (TCL_OK);}………………….(4)修改ns-mobilenode.tcl文件
Node/MobileNode instprocadd-interface { ……… } {………………………$mac netif$netif$mac ifq $ifq$mac up-target$ll……………………….
(5)在mac-802_11.h中Mac802_11类中添加函数inline int getqlen(){return ifq()->length();}
按照如上步骤添加完之后,就可以在路由层aodv.cc中利用clmac-> getqlen()来获取队列的信息。
- NS2跨层设计
- NS2跨层设计
- NS2下实现MAC跨层设计
- NS2下实现MAC跨层设计
- NS2杂项(ns2相关的其他工具、NS2无线模拟相关的网站、计算机网络系列学术讲座、NS2 GDB调试、NS2跨层设计的思想、VANET路由--蚂蚁的一点启发、NS2一些有用的网站)
- 关于NS2跨层设计实现的一些有用资料整理
- NS2多接口跨层扩展库
- 跨层访问实现(for NS2)
- [转] 关于NS2跨层设计实现的一些有用资料整理, 通过TclObject::lookup获取C++对象指针
- NS2源码图示---数据链路层
- NS2源码图示---数据链路层
- NS2中跨层设计的实现
- NS2 Tclcl机制分析, 编译层/解释层交互过程 ------ NS2学习日记 (2)
- NS-2跨层设计
- NS2
- NS2
- ns2中关于mac层802.11协议的学习“trace”
- NS2如何在路由层获取队列的长度
- loner_li .net 经典机试题
- 18分钟计划管理你一天
- RMAN
- Android开发:日期格式化
- 题目1001:A+B for Matrices
- NS2跨层设计
- Create Table DDL sample(TSQL)
- android 组件内部实现触摸事件,更改背景
- apache cxf解析webservice
- 给软件工程师的自学建议
- gcc -I -L -l区别
- 每个程序员都应该知道的那些事儿
- android中Preference(首选项)2--(组织首选项)
- Failed to create the Java Virtual Machine