计算机学院网络工程实习报告
图1.3 RTS/CTS
具体做法是:当发送节点有分组要传时,检测信道是否空闲,如果空闲,则发送RTS帧,接收节点收到RTS后,发CTS帧应答,发送节点收到CTS后,开始发送数 据,接收节点在接收完数据帧后,发ACK确认,一次传输成功完成。如下图所示。如果发出RTS后,在一定的时限内没有收到CTS应答,发送节点执行退避算 法重发RTS。RTS/CTS交互完成后,发送和接收节点的邻居收到RTS/CTS后,在以后的一段时间内抑制自己的传输。延时时间取决于将要进行传输的 数据帧的长度,所以由隐藏终端造成的碰撞就大大减少了。采用链路级的应答(ACK)机制就可以在发生其它碰撞或干扰的时候,提供快速和可靠的恢复。
即使有冲突发生,也只是在发送 RTS时,这种情况下,由于收不到接收站点的CTS消息,大家再回头用DCF提供的竞争机制,分配一个随机退守定时值,等待下一次介质空闲DIFS后竞争 发送RTS,直到成功为止。 1.2.3 RTS/CTS的退避算法
在CSMA系列的接入技术中,当报文产生冲突时,发送者要执行退避算法,延
迟一段随机时间后再次尝试发送。实行退避的目的是为了减小重发时在此发生冲突的 可能性。在ADHOC网络中,为了解决隐藏终端和暴露终端问题,引入了RTS-CTS握手机制。RTS和CTS控制报文之间可能会发生冲突。发生冲突时,发送者超时,等不到CTS,要执行退避算法,延迟一段随机时间后重发RTS。
? 二进制指数退避算法(BEB,Binary Exponential Backoff)BEB算法的Finc 和
Fdec函数如下: 其中,COUNTER是退避计数器的值, MAX 和MIN分别指退避计
6
计算机学院网络工程实习报告
数器的最大和最小取值,每次发生冲突时,退避计数器的值加倍;每次交互成功时,退避计数器降至最小值MIN。
? 倍数增线性减算法(MILD)。在MILD 中,退避计数器的值是线性递减的,一次交
互成功后,计数器的值减小β,如果β取值合理,COUNTER并不会像BEB 算法一样急剧减小,在后续的竞争信道中,所有节点获胜的机会几乎均等,实现了公平接入。发生冲突时,退避计数器增加α 倍, 如果α取值合理, COUNTER 也不会急剧增加。
1.3 NS2中相关问题分析
1.3.1 NS2模拟的基本过程
利用NS进行网络模拟是有一定的步骤的,进行一次仿真的步骤大致如下:
? 编写Tcl脚本。Tcl脚本应该包含的内容有:配置模拟网络拓扑结构,确定
链路的基本特性,如延迟、带宽和丢失策略;建立协议代理,包括端设备的协议绑定和通信业务量模型的建立;配置业务量模型的参数,从而确定网络上的业务量的分布;设置Trace对象,Trace对象能够把模拟过程中发生的特定类型的事件记录在Trace文件中。NS通过Trace文件来保存整个模拟过程中每个步骤的数据,待仿真完成后对所得到的数据进行分析研究。 ? 编写其他的辅助过程,设定模拟结束时间,至此脚本编写完成。 ? 用NS解释执行完成编写后的Tcl脚本。 ? 对Trace文件进行分析,得出有用的数据。 ? 对分析过的数据进行绘图处理,得出网络的性能。
? 调整配置网络的拓扑结构和业务量模型,重新进行上述模拟过程。 基本的过程如图1.4
7
计算机学院网络工程实习报告
NS用户 分析任务 需要完善C++?添加或修改C++模块 否 重新编译NS 否 完善? 是 编写Tcl脚本代码 否 运行NS 进行模拟 修改Tcl脚本 分析模拟结果 是 否 满足要求? 是 仿真结束 只需修改tcl
图1.4 使用NS 模拟仿真的基本过程 1.3.2 无线传输模型 无线网络模型主要有3种:
? 自由空间(Free Space):最理想的传输模型,只单纯地考虑从传送端到接收
端直线距离的路径损耗(Path Loss)
? 双径地面反射(Two Ray Ground):除了考虑传送端到接收端直线距离的路径
损耗外,也考虑了地面反射(Reflection of Ground)的因素
? 阴影(Shadowing):用来仿真当传输端和接收端之间有障碍物时对传送信号的
8
计算机学院网络工程实习报告
影响,此模型常用在仿真室内(in-door)的环境)模型
这些模型是用来预知每个数据包到达接收端时的接收功率的(即预测在接收端所收到的信号强度,这个强度可以用来判断传送的数据能否成功地被接收)。每一个无线节点的物理层都有一个接收阈值,当接收功率低于接收阈值时,就会被标记错误并被 MAC层丢弃。
三种模型主要就是一个计算Pr的公式,其中自由空间适用于距离比较短的时候,双径适用于长距离,同时双径 是自由空间的一个增强版,所以即使距离短 时,也可以使用双径模型来算,和自由空间是一样的。 1.3.3 门限
NS2主要是用信号强度门限(Threshold)的方式来判断传送的封包是否能够成功地收到,NS2会设置一个信号检测(Carrier Sense)的门限CSThresh_来决定传送的封包是否能够被接收端所检测出来,当一个信号的强度小于CSThresh_时,则此封包会被实体层模块 (PHY Module)所丢弃,且MAC层不知道有这样的事情发生,意思就是说MAC层会认为现在的Channel没有数据在传送(Clear Channel)。另外,NS2会设置另一个RXThresh_,用来判断是否能成功地被接收端所接收,若是接收的封包强度大于RxThresh_,则此 封包能被成功地接收,处理过后往上层传送,但若是信号小于RxThresh_,则此封包会被认为接收不完全或者有错误发生,在此,MAC层会把此封包所丢弃。 1.3.4 无线节点通信范围的设置
使用NS仿真无线的网络环境,需要设定无线节点的通信范围、NS的物理层定义了如下几个与无线节点通信范围相关的参数。
? Pt_ -------发送端参数,节点的发射功率,单位:W。
? RXThresh_--------接收端参数,信号接收门限,如果节点接收到的信号强度
高于这个门限值,分组才可以被正确的接收,单位:W。
? CPThresh_--------接收端参数,载波侦听门限,当接收到的信号强度高于这
个值时,才可以被天线所感知,但即使信号强度高于此值,仍需高于CPThresh才可以被正确解码,一般要求是RTXhresh_大于两倍的CPThresh_,单位:W。 ? CSThresh_--------接收端参数,信号感应门限,当两个信号发生碰撞,被某
9