NS2_ADD_ZBR(V001)_2013_12_18
更新时间:2023-05-19 05:05:01 阅读量: 实用文档 文档下载
- NS2A蛋白大小推荐度:
- 相关推荐
NS2中ZBR协议的添加
ZBR路由协议添加的过程:
一、我们新建的协议名字就叫做zbr,以ns2.35平台为例,把zbr文件放在ns2.35目录下。此目目录包含:
zbr.h,,zbr_packet.h,zbr_rtable.h,zbr_,zbr_,zbr_link.h,zbr_,zbr_rqueue.h九个文件。
二、我们需要对ns2中的一些文件进行修改,来使这个协议在tcl中被调用,需要修改的文件有以下几个:
你可以在ns-2.35目录下找到它们:
common/packet.h
trace/cmu-trace.h
trace/
tcl/lib/ns-packet.tcl
tcl/lib/ns-default.tcl
tcl/lib/ns-lib.tcl
queue/
Makefile
三、需要修改的具体内容
3.1、common/packet.h (两个需要修改的地方,添加代码) 第一个大约在202行:
static const packet_t PT_MDART = 72;
static const packet_t PT_ZBR = 73; //新添加
static packet_t PT_NTYPE = 74; // 这一行必须为最后一行
=======================================
第二个大约在421行:
name_[PT_DCCP_RESET]="DCCP_Reset";
name_[PT_ZBR]= "zbr"; //新添加
name_[PT_NTYPE]= "undefined";
NS2中ZBR协议的添加
3.2、trace/cmu-trace.h (一个需要修改的地方:添加代码)
大约在165行:
void format_mdart(Packet *p, int offset);
void format_zbr(Packet *p, int offset); //新添加
// This holds all the tracers added at run-time
static PacketTracer *pktTrc_;
3.3、trace/ (需要修改三个地方)
第一个:在大约55行添加头文件: #include <zbr/zbr_packet.h>
=========================================
第二个:找个合适的地方加上下面的函数:可以在大约864行添加
void
CMUTrace::format_zbr(Packet *p, int offset)
{
struct hdr_zbr* zh = HDR_ZBR(p);
struct hdr_zbr_request *rq = HDR_ZBR_REQUEST(p);
struct hdr_zbr_reply *rp = HDR_ZBR_REPLY(p);
switch(zh->ah_type) {
case ZBRTYPE_RREQ:
if (pt_->tagged()) {
sprintf(pt_->buffer() + offset,
"-zbr:t %x -zbr:h %d -zbr:b %d -zbr:d %d "
"-zbr:ds %d -zbr:s %d -zbr:ss %d "
"-zbr:c REQUEST ",
rq->rq_type,
rq->rq_hop_count,
rq->rq_bcast_id,
rq->rq_dst,
rq->rq_dst_seqno,
rq->rq_src,
rq->rq_src_seqno);
} else if (newtrace_) {
sprintf(pt_->buffer() + offset,
"-P zbr -Pt 0x%x -Ph %d -Pb %d -Pd %d -Pds %d -Ps %d -Pss %d -Pc REQUEST ",
NS2中ZBR协议的添加
rq->rq_type,
rq->rq_hop_count,
rq->rq_bcast_id,
rq->rq_dst,
rq->rq_dst_seqno,
rq->rq_src,
rq->rq_src_seqno);
} else {
sprintf(pt_->buffer() + offset,
"[0x%x %d %d [%d %d] [%d %d]] (REQUEST)",
rq->rq_type,
rq->rq_hop_count,
rq->rq_bcast_id,
rq->rq_dst,
rq->rq_dst_seqno,
rq->rq_src,
rq->rq_src_seqno);
}
break;
case ZBRTYPE_RREP:
case ZBRTYPE_HELLO:
case ZBRTYPE_RERR:
if (pt_->tagged()) {
sprintf(pt_->buffer() + offset,
"-zbr:t %x -zbr:h %d -zbr:d %d -zbr:ds %d "
"-zbr:l %f -zbr:c %s ",
rp->rp_type,
rp->rp_hop_count,
rp->rp_dst,
rp->rp_dst_seqno,
rp->rp_lifetime,
rp->rp_type == AODVTYPE_RREP ? "REPLY" :
(rp->rp_type == AODVTYPE_RERR ? "ERROR" :
"HELLO"));
} else if (newtrace_) {
sprintf(pt_->buffer() + offset,
"-P zbr -Pt 0x%x -Ph %d -Pd %d -Pds %d -Pl %f -Pc %s ",
rp->rp_type,
NS2中ZBR协议的添加
rp->rp_hop_count,
rp->rp_dst,
rp->rp_dst_seqno,
rp->rp_lifetime,
rp->rp_type == ZBRTYPE_RREP ? "REPLY" :
(rp->rp_type == ZBRTYPE_RERR ? "ERROR" :
"HELLO"));
} else {
sprintf(pt_->buffer() + offset,
"[0x%x %d [%d %d] %f] (%s)",
rp->rp_type,
rp->rp_hop_count,
rp->rp_dst,
rp->rp_dst_seqno,
rp->rp_lifetime,
rp->rp_type == ZBRTYPE_RREP ? "REPLY" :
(rp->rp_type == ZBRTYPE_RERR ? "ERROR" :
"HELLO"));
}
break;
default:
#ifdef WIN32
fprintf(stderr,
"CMUTrace::format_zbr: invalid ZBR packet type\n");
#else
fprintf(stderr,
"%s: invalid ZBR packet type\n", __FUNCTION__);
#endif
abort();
}
}
=========================================
第三个:在大约1529行添加
case PT_PING:
break;
case PT_ZBR: //新添加
format_zbr(p, offset); //新添加
break; //新添加
case PT_ARP:
format_arp(p, offset);
break;
NS2中ZBR协议的添加
3.4、tcl/lib/ns-packet.tcl(需要修改一个:添加)
大约172行:添加:
# Wireless:
ARP # Address Resolution Protocol, network wireless stack
GAF # Geographic Adaptive Delity, for ad-hoc networks
LL # network wireless stack
LRWPAN # zheng, wpan/p802_15_
Mac # network wireless stack
ZBR # ZigBee 新添加
3.5、tcl/lib/ns-default.tcl(需要修改一个)
最后一行添加:
# Defaults defined for zbr
Agent/ZBR set accessible_var_ true
3.6、tcl/lib/ns-lib.tcl(需要修改两个)
第一个:大约672行添加
ZBR {
set ragent [$self create-zbr-agent $node]
}
=======================================
第二个:大约891行添加
Simulator instproc create-zbr-agent { node } {
# Create zbr routing agent
set ragent [new Agent/ZBR [$node node-addr]]
$self at 0.0 "$ragent start"
$node set ragent_ $ragent
return $ragent
}
3.7、queue/(需要修改一个)
大约93行:
case PT_AODV:
case PT_ZBR: //新添加
case PT_AOMDV:
NS2中ZBR协议的添加
3.8、wpan/p802_15_4sscs.h(需要修改一个)
在大约57行,打开ZigBeeIF :
#define ZigBeeIF
3.9、wpan/p802_15_(需要修改一个)
大约在179行添加
#ifdef ZigBeeIF
bool noCapacity;
int child_num;
int logAddr;
#endif
//we assign the cluster tree address as the MAC short address
3.10、Makefile(需要修改一个)
修改 OBJ_CC = \
大约在335行:zbr/zbr.o zbr/zbr_link.o zbr/zbr_rtable.o zbr/zbr_rqueue.o \
四、 编译
进入ns-2.35目录下输入下名命令进行编译:
$ make clean
$ make
$ sudo make install
以后若修改了程序,需要先make再执行sudo make install(这一步必须执行)
五、测试脚本
参考tcl/ex/wpan下面的脚本。
正在阅读:
NS2_ADD_ZBR(V001)_2013_12_1805-19
99学年度台中市北屯区军功国民小学四年级第2学期课程教...04-22
2020年企业效能监察年终工作总结报告精品 - 图文03-03
摘石榴作文450字07-12
卢湾区2011年高三年级语文二模09-13
小学人称代词表格用法及练习106-03
夏雨作文400字07-15
我喜欢这样的老师作文600字06-16
作文名人事例03-12
- 1(国美-人资-培训001)培训管理规定V4.0
- 22013-12-18慢性结肠炎的中医药治疗
- 3初中英语教案新概念2 lesson 12(教师版)-许青梅(001)
- 4OptiX Metro 500 V100R001 命令行手册
- 5001 - 通用测试报告 - ICG - 完整版 - v2.0
- 6基于VanetMobiSim_NS_2的车辆换道模型仿真
- 7catia - V5R18使用技巧
- 8基于VanetMobiSim_NS_2的车辆换道模型仿真
- 9HC18P013_DATASHEET_V0.00CN
- 10HUAWEI MG323 GSM M2M 模块 软件指南-(V100R001B01_02)20100914
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- V001
- 2013
- ADD
- ZBR
- NS
- 12
- 18
- 201X 任职试用期工作总结 副校长
- 《现代大学英语听力3》 Unit 11 Business (听力原文及答案)
- 乐酷产品介绍2008Q1 UPDATE
- MATLAB在说话人识别算法中的应用
- 高中数学 矩阵乘法的简单性质导学案 苏教版选修4-2
- 09-Internet搜索引擎
- 《从怎么看到怎么办——理论热点面对面2011》
- 《中国共产党廉洁自律准则》试题及答案
- 大鱼和小鱼信息技术整合说课稿
- 2012年山东省数据总结深入
- 《格林童话》复习题及答案
- 周嵘《销售十大实战步骤》第三节
- 基坑支护结构设计原则和结构选型
- 4.1_Citrix Xenserver and VMware ESX Function Competition Car
- 镇创先争优活动总结
- 10kv高压开关柜图解说明
- 新生儿肺炎并发急性心衰2例的护理体会
- 2课 江山如此多娇-2
- 网站建设实验指导书
- 深圳能源年报2013生产运营及薪酬研究(电力热力气水业销售费用)深圳能源集团股份有限公司_九舍会智库