网络仿真期末设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆邮电大学研究生堂下考试答卷
学年第学期
考试科目网络仿真
姓名
年级
专业
网络仿真期末设计实验报告
指导教师实验时间:第周至第周
学院专业
学号姓名实验室
一、实验专题题目:无线移动Ad Hoc网络路由协议建模与仿真实现
二、实验目的和要求
1. 无线移动Ad Hoc网络路由协议学习
学习并掌握无线移动Ad Hoc网络路由协议的基本原理。
2. 无线收发机管道模型介绍
学习并了解无线收发机管道模型。
3. 分组建模
学习并掌握控制分组和数据分组建模的基本方法和技能。
4. 无线移动Ad Hoc网络节点建模
学习并掌握无线移动Ad Hoc网络节点建模的基本方法和技能。包括:(1)src进
程建模;(2)sink进程建模;(3)routing进程建模;(4)MAC层和物理层建模;
(5)分组流的连接。
5. 网络建模
学习并掌握无线移动Ad Hoc网络建模的基本方法和技能。
6. 配置参数、运行和调试仿真
学习并掌握收集统计量、配置参数、运行和调试仿真的基本方法和技能。
7. 仿真结果分析
学习并掌握仿真结果分析的基本方法和技能。
三、实验硬软件条件
计算机一台,装有Windows操作系统、Visual C++6.0编程软件和OPNET
网络仿真软件。
四、实验结果
(一)专题
本次仿真实现以下功能:
⑴无线节点SEND以广播方式发送数据包,无线节点RCV接受数据包;
⑵分别统计发送数据包的个数与接收数据包的个数;
1.网络仿真场景图
节点SEND为发送节点,将SEND的地址(NODE_ADDRESS和Wireless LAN MAC Address)设置为0,且在source层发送有格式的数据包;
节点RCV为接收节点,将RCV的地址(NODE_ADDRESS和Wireless LAN MAC Address)设置为1,只接收数据包,不产生数据包。
2.节点进程图
本次仿真的节点模型一共有如上图所示的进程模型,以下为各层关键代码:
① source层:
pkptr = op_pk_create_fmt ("two_node_format"); //创建
two_node_format格式的包
op_pk_nfd_set(pkptr,"DATA", uf_pkptr); //写入数据
op_pk_nfd_set(pkptr,"source_address" , node_address); //写入本节点地址
op_pk_nfd_set(pkptr,"dest_address", 1); //写入目的地址为1
② wlan_route层:
本进程模型一共有4个状态机:
• init完成初始化(包括统计量);
• appl layer arril接收从source层到来的数据包,并统计发送数据包的个数;
pk_send_count = pk_send_count + 1; //统计发送的数据包
op_stat_write(pk_send_cnt_stathandle,pk_send_count);
• mac layer arri接收从mac层到来的数据包,并统计收到数据包的个数;
if(dest == node_addr) //判断本节点是否是目的地址 {
pk_rcv_count = pk_rcv_count +1; //统计收到的数据包 op_stat_write(pk_rcv_cnt_stathandle,pk_rcv_count);
op_pk_send(pkptr,SIN_OUT_STRM);
}
else
op_pk_destroy(pkptr); //不是目的地址,销毁包
3. 仿真统计量结果及分析
仿真参数设置为:SEND节点发送速率为每秒一个数据包,仿真时间为100秒;
本次仿真收集的全局统计量:发包数(send packet count)和收包数(rcv packet count);
①发包数(send packet count):
由图可见,统计出一共发了98个包。这是由于每秒发一个包,且开始仿真时间为2秒,故一共发了98个包。
②收包数(rcv packet count):
由图可见,统计出了一共收了98个包,和发包数一致。
③分析:统计出来的发包数和收包数均为98个包,可知收发一致,本次
仿真达到预期的结果,仿真成功。
(二)专题改进
1. 改进一:
当两个节点的距离大于send节点的通信范围时,要实现两个节点的通信,可以增大send节点的发送功率,从而扩大其通信范围,也可以在两个节点之间增加一个节点,作为转发节点。本设计采用后一种方案,改进场景如下所示:
改进结果及分析
(1)send节点发包数
(2)rcv节点收包数
结果分析:
由于在send与rcv节点之间增加一转发节点trans,该转发节点不发送数据包,只实现转发数据包的功能。当它收到数据包时,先判断目的地址,如果该数据包的目的地址是它本身,则向上层传递;如果收到数据包的目的地址不是它自己的地址,则在rout层进行转发。Rcv节点在trans节点的通信范围之内,所以能收到send节点发送给它的数据包。这样即实现了send与rcv节点之间的通信。
2.改进二:
节点数目改为6个,6个节点随机的产生非本身节点地址的目的地址,且6个节点都
发送和接收数据包(以广播方式发包);增加了数据包更新和最大转发次数;增加了对丢包率的统计。改进场景如下所示: