⻄ 安 邮 电 ⼤ 学
(计算机学院)
课内实验报告
实验名称: 实验2 暴露节点问题仿真
专 业: ⽹络⼯程
班 级: 1703
姓 名: 刘鑫海
学 号: 04172066
指导教师: 孙韩林
⽇ 期: 2020年5⽉16⽇
⼀.实验⽬的
1.掌握暴露节点问题的本质
2.利⽤NS2仿真实现暴露节点问题
⼆.实验环境
暴露节点的实验分析采⽤了实验⼀搭建的实验平台,NS2 版本为 2.35。在
官⽅的 NS2 版本中未包含本实验需要的 mUDP、mUdpSink 模块,读者进⾏
本实验前需要进⾏扩展,即 安装这些模块。本⼿册的实验⼀已提供了实验平台
搭建模块和脚本,如果完成实验⼀,本实 验可正常进⾏。
三.实验内容
利⽤NS2仿真暴露节点问题,分析⽐较在有RTS/CTS控制帧和⽆RTS/CTS控制
帧的情况下的仿真结果。
四.实验过程及分析
过程:
1.在ns-allinone-2.35中安装mUDP模块
2.将Exposed_Terminal.tcl复制到脚本⽬录WNT/3.5.2下
3.在相应⽬录下输⼊ns Exposed_Terminal.tcl,得出结果。
4.如果想看NAM仿真动画,则先startxwin运⾏XWin,然后输⼊代码得出结果。
分析:
1. 有RTS/CTS控制帧
节点0与节点1进⾏通信,节点1向节点0传输数据包
2s时节点2想要发送数据,但是在其接受范围内的节点1正在传输数据,节点2
收到了节点1的RTS包,以为⽹络正忙,⽆法传输数据,不断的在丢包。
节点2不断的收到节点1的RTS包,但是并没有收到相对应的CTS包,因此推测
节点1是暴露节点,尝试发送数据。可⻅节点3收到了数据,没有产⽣数据冲突
之后节点1向节点0发送数据,节点2向节点3发送数据,不再产⽣丢包现象,也
没有产⽣冲突。
2. 没有RTS/CTS控制帧
没有RTS/CTS控制帧,直接开始传输数据包。
因为没有控制帧,2s时节点2想发送数据时,直接开始发送,之后就直接出现
节点1给节点0发送数据,同时节点2给节点3发送数据的情况。
但是随着⽹络负担的加重,节点1和节点2也不断的收到其他信息,造成数据冲
突,丢包的现象开始变得越来越严重。⽹络环境变得⾮常差。
五.问题回答
⽆线局域⽹暴露节点对⽹络传输影响较⼤,降低了⽹络吞吐量,增加了⽹络传输时
延, CTS/RTS 机制则较好的缓解隐藏节点造成的⽹络性能降低。 仿真结果可从两个⽅⾯
来分析,即仿真动画和仿真数据。在 NS2 中演示仿真动画采⽤ NAM,它将⽹络仿真过程
中拓扑结构、数据包传输情况及队列丢包等以动画形式展现,本 实验仿真动画为电⼦资源
中实验动画⽂件夹的对应⽂件。仿真结束后,可通过分析产⽣的 trace 数据对仿真过程中的
延迟、丢包、吞吐量等进⾏分析。
六.总结
1.实验过程中遇到的问题及解决办法;
⼀开始没法弄懂RTS/CTS控制帧如何帮助解决暴露节点问题,并且觉得没有使
⽤
RTS/CTS控制帧,反⽽没有⼤的延迟。但是在NAM动画仿真的后期,才发现了
使⽤和没使⽤控制帧的差别,也明⽩了RTS/CTS控制帧如何来着⼿暴露节点问
题。
2.对设计及调试过程的⼼得体会。
我的体会:
使⽤RTS/CTS控制帧,虽然会在传输数据的开始,造成⽹络中不必要的延时,
但在延时之后还是能够正常传输数据,并且不怎么会产⽣丢包现象和数据冲
突。然⽽不使⽤RTS/CTS控制帧的话,虽然开始传输时没有延迟,两⽅都能很
好的传输数据,但是随着⽹络环境的负担加重,丢包现象越来越严重,数据冲
突也频繁发⽣,可以清晰的感受到暴露节点的问题所在。
然⽽使⽤RTS/CTS控制帧也不能完全解决暴露节点问题,依然会因为别的节点
⽽存在数据冲突的现象,影响传输系统的质量。有待进⼀步的解决。