实验七 隐藏节点和暴露节点仿真实验

无线网络技术教程第四版实验七

隐藏节点和暴露节点仿真实验

目录

  • 无线网络技术教程第四版实验七
  • 隐藏节点和暴露节点仿真实验
    • 1 实验目的和要求
    • 2 实验原理和背景
      • 2.1 隐藏节点问题
      • 2.2 暴露节点问题
  • 3 实验环境和软件
  • 4 实验过程和记录
      • 4.1 隐藏节点问题仿真
      • 4.2 暴露节点问题仿真
    • 5 结果分析与讨论

1 实验目的和要求

掌握无线网络中隐藏和暴露节点问题
利用NS2分析隐藏和暴露节点问题

2 实验原理和背景

2.1 隐藏节点问题

隐藏节点处指处于接收节点的覆盖范围内而在发送节点的覆盖范围外的节点。由于监听不到发送节点的数据传输,隐藏节点不受限制的发送分组到相同的的接收节点,导致分组在接收节点处冲突。隐藏节点可以分为隐发送节点和隐接收节点。

节点A和C同时想发送数据给中间节点B,但A和C都不在彼此传输范围内。所以当A发送数据给B时,C并未检测到A正在传输,会认为目前网络中无数据传输,会将数据传输给B。即A和C同时将数据传输给B,使得数据在B处产生冲突,导致数据不可用。这种因传送距离而发生误判的问题称为隐藏节点问题。

为解决隐藏节点问题,可使用RTS/CTS控制信息来避免冲突。发送方发出数据前,先送出一个RTS包,告知在传输范围内的所有节点不要有任何发送操作。如果接收目前空闲,则相应一个CTS包,告诉发送方可开始发送数据,此CTS包也会告知所有在接收方信号传输范围内的其他节点不要进行任何传输操作。

2.2 暴露节点问题

暴露节点是指在发送节点覆盖范围内而在接收节点覆盖范围外的结点,暴露节点因监听到发送节点的发送而可能延迟发送。但它其实是在接收节点的通信范围之外,它的发送不会造成冲突,这种延迟发送并不必要。

暴露节点问题和隐藏节点问题不同,当一个节点要发送数据给另一节点时,因邻居节点也正在发送数据,影响了原来节点的数据传送。4个节点S1、S2、R1、R2,其中R1、R2均不在对方传输范围内,而S1、S2均在彼此传送范围内。因此,当S1正发送数据给R1时,S2却不能将数据发送给R2,因为S2会检测到S1正发送数据,如果其也发送数据的话,就会影响S1的数据发送。事实上,S2可以将数据发给R2的,因为R2并不在S1的传送距离内。

为缓解暴露节点问题,同样可采用RTS/CTS机制。当某个节点侦听到邻节点发送的RTS,但未监听到对应CTS时,S2可推测自己是暴露节点,则可同时发送数据。

3 实验环境和软件

搭建的实验平台,NS2.35。如果是官方的NS2版本,则还需要mUDP、mUdpSink模块,需要自己扩展安装。

4 实验过程和记录

第一次我是用自己的下载的NS2.35然后安装扩展模块做的,可能是因为虚拟机上也有NS3吧,版本的问题,导致没有成功,出现了以下的问题,有大佬懂的话可以解释下。

实验七 隐藏节点和暴露节点仿真实验
实验七 隐藏节点和暴露节点仿真实验
第二步是输入“ns Hidden_Terminal.tcl”命令,运行本实验,截图是运行到一半的时间,注意步长调整为2ms即可,不宜过大。
实验七 隐藏节点和暴露节点仿真实验
**仿真程序运行说明:**仿真开始时(0~1s),节点间相互广播路由(DSDV)信息,建立路由表。从1.5s开始,节点0开始向节点1发送数据,需要注意,此时节点0需要先发送RTS报文(实验中设置802.11的RTSThreshold=0,满足数据包大于RTSThreshold=3000,满足数据包小于RTSThreshold,因为数据包不会大于3000),以保证信道(0→1)的顺利占用。
在2s时,节点2也开始向节点1发送数据,同样,节点2也发送RTS报文,此时可得知节点1的信道不空闲,因此节点2开始退避,等待一段时间重新尝试发送。仿真过程(2~15s)中,课看到节点2和节点0交替向节点1发送数据,而非同时传输。仿真时间到达15s时,两条流传输同时结束,此后无数据传输,偶尔有链路保活报文。在20s时,仿真实验结束。
如果想进一步分析仿真的深层次结果,可参考资料自行编码分析脚本对trace文件(.tr)进行分析,并绘制图形对比。

4.2 暴露节点问题仿真

第一步就跳过了,还是在那个文件夹里面
第二步输入“ns Exposed_Terminal.tcl”命令,运行本实验。这个截图也是运行到一半时间的,步长依旧是2ms

实验七 隐藏节点和暴露节点仿真实验
**仿真程序运行说明:**仿真开始时(0~1s),节点间相互广播路由(DSDV)信息,建立路由表。从1.5s开始,节点0开始向节点1发送数据,需要注意,此时节点0需要先发送RTS报文(实验中设置802.11的RTSThreshold=0,满足数据包大于RTSThreshold=3000,表示开启TRS/CTS,解决暴露终端问题:实验暴露终端请设置RTSThreshold=3000,满足数据包小于RTSThreshold,因为数据包不会大于3000),以保证信道(,1→0)的顺利占用。在2s时,节点2也开始向节点3发送数据,同样,节点2也发送RTS报文,以获得信道(2→3)的顺利占用,并正确传输数据。仿真时间到达15s时,两条流传输同时结束,此后无数据传输,偶尔有链路保活报文。在20s时,仿真实验结束。
如果想进一步分析仿真的深层次结果,可参考资料自行编码分析脚本对trace文件(.tr)进行分析,并绘制图形对比。

5 结果分析与讨论

隐藏节点和暴露节点问题对无线网络传输影响较大,极大降低了网络吞吐量,增加了传输时延,而CTS/RTS机制可较好的解决隐藏和暴露节点问题。

仿真结果可从两方面来分析,即仿真动画和仿真数据。在NS2中演示仿真动画采用NAM,将拓扑结构、数据包传输情况及队列丢包等以动画形式展现,仿真结束后,可通过分析产生的trace数据对仿真过程中的延迟、丢包、吞吐量等进行定量分析。

来源:梓里有朝暮

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月7日
下一篇 2021年3月8日

相关推荐