对于无线系统和有线网络最大的区别是无线信道的广播和时变特性,以及节点的移动性。无线信道建模的内容涉及广泛,包括无线信道的频率、功率、视距以及干扰等,如果无线信道刻画得不准确,将直接影响到高层的性能以及仿真的精确性。
对于每个发射信道和接收信道对,它们之间的整个无线传输过程可以用一系列功能单一的子传输阶段的组合来描述,这些传输阶段是仿真无线链路所涉及到的一系列参数计算。有些无线链路的参数互为因果,时间上有先后顺序,所以传输阶段的排列顺序也应按照实际传输的先后来定。OPNET 无线仿真中用 14 个首尾相接的管道阶段来尽量接近真实地模仿数据帧在信道中的传输。首先在整个传输过程还没有进行之前,把肯定不能被接收的物件圈定出来;在计算传输延时后接着复制封包,对每一个接收主询中的物件都复制一份;然后计算接收闭锁,检查信道是否完全吻合,如果完全匹配当作有效信号,如果部分吻合当作噪声处理;对于接收器来说,在经历传播延时后,内部产生一个中断,对每一个可能接收的信道进行 6~13 阶段,由于包的每段有可能存在不同程度的干扰,因此对每一段都需要单独计算,如果是有效包则计算误码率,如果是噪声则考虑对有效包的影响;之后得到包的总误码数多少,最后决定是否丢包。
整个过程中计算数据保存在包的 TDA(Transmission Data Attribute,传输数据属性)里,TDA 预设了一些值,如某个发信机和发信机信道的 Objid 等。这些值一共有OPC_TDA_RA_MAX_INDEX,它是 OPNET 定义的象征性名字,代表 TDA 属性的最大索引号,如果需要自定义 TDA 属性,则将新属性定义为 OPC_TDA_RA_MAX_INDEX 加1,依此类推。
在 OPNET 中无线信道的建模过程包括 14 个功能单一的子阶段即管道阶段,这 14 个管道阶段分别是:接收主询(接收机组);传输时延(发送时延);物理可达性(链路闭锁);信道匹配;发射天线增益;传播时延;接收天线增益;接收功率;干扰噪声;背景噪声;信噪比;误比特率;错误分布;错误纠正。
接收主询阶段计算每个发送节点的所有可能接收节点;传输时延阶段计算数据包第一个比特和最后一个比特开始传输的时间差;链路闭合阶段判断接收节点是否物理可达;信道匹配阶段根据信道对传输进行分类;发射/接收天线增益阶段计算发送/接收节点的天线提供的增益;传播时延阶段计算数据包从发送节点到接收节点所经历的时间;接收功率阶段计算到达接收节点信号的功率值;背景噪声和干扰噪声阶段计算干扰信号功率;信噪比阶段计算到达数据包的平均信噪比;误比特率阶段根据信噪比获得比特错误概率;错误分布阶段根据误比特率计算一个数据包段的误比特数;错误纠正阶段判断是否接收数据包并把它转发到接收机相邻模块。
各阶段对应的C文件如下表所示。
阶段 | C文件 |
---|---|
接收主询 | dra_rxgroup.ps.c |
传输时延 | dra_txdel.ps.c |
物理可达性 | dra_closure.ps.c |
信道匹配 | dra_chanmatch.ps.c |
发射机天线增益 | dra_tagain.ps.c |
传播时延 | dra_propdel.ps.c |
收信机天线增益 | dra_ragain.ps.c |
接收功率 | dra_power.ps.c |
干扰噪声功率 | dra_inoise.ps.c |
背景噪声功率 | dra_bkgnoise.ps.c |
信噪比 | dra_snr.ps.c |
误比特率 | dra_ber.ps.c |
错误分布 | dra_error.ps.c |
错误纠正 | dra_ecc.ps.c |
该管道阶段确定候选的收信机对象,排除明显不符合的对象,把肯定不能被接收的物件圈定出来。在某些网络模型中,仿真内核可以判断发送接收信道对之间是完全不能进行通信的,如无线发信机的接收组中不应有本节点的无线收信机、点到点和总线收信机。因此,将接收信道从发信机信道的接收主询中移去可以加快仿真速度,因为这样可以减少包的复制和后续管道阶段的运行,而对实际仿真效果不产生影响。具体来说,OPNET为每对发射机和收信机都建立管道传输阶段,相对于每个收信机对, 原始数据包都被复制了一次,由于包的复制是为每一对可能的收发信机之间建立管道阶段造成的,每个复制后的包需要经历13个管道阶段。即使对于模块内部的收信机对也不例外, 如果在收信机组中没有将自己的收信机从接收组中删除,而且又能经过信道匹配阶段,那么自己发出的数据包也会被自己接收到。这种情况显然不是所期望的,因此在OPNET中一些标准的接收主询管道阶段程序都将这种情况排除了。
如下图所示,Tx 节点在传输数据包之前,查看接收主询列表包含 Rx0、Rx1 和 Rx3,而 Rx2 不在其中,因此将封包只作 3 次复制,分别发往 Rx0、Rx1 和 Rx3,而不发给 Rx2。
仿真内核将发送和接收信道的 Objid 传给管道阶段程序,随后管道程序返回一个整数值(OPC_TRUE 或 OPC_FALSE)给内核,该数值表明了收信机信道是否为一个合适的目的端,是否应当包含在收信机组中。TD 类核心函数可以用来改变默认的收信机组属性,以及针对仿真事件动态地改变和重新计算收信机组。
收信机组阶段也可以完全跳过,只要将 rxgroup model 设置为 dra_no_rxgroup,但是跳过并不是完全不用该管道阶段,而是动态更新收信机组。这样可以加快仿真运行速度,尤其针对无线业务负载量大的网络仿真。
传输延时是数据包在无线链路中所经历的一部分延时,它是包按信道速率发送所需要的时间,这个时间是数据包的第一个比特开始发送时间和最后一个比特发送时间之差,也是发信机处理数据包所用的仿真时间,这个过程信道处于忙状态。当该事件发生时,媒体接入层的数据包将在队列中等候,直到信道空闲才可发送下一个数据包。
传输时延的示意图如下图所示。
传输时延= 数据包长度 数据传输速率 \frac{数据包长度}{数据传输速率} 数据传输速率数据包长度
计算传输时延是整个管道阶段的第一个阶段,对于每个封包该阶段只计算一次,结果写入封包 TDA 的 TX_DELAY 属性中。
通过无线链路物理可达性的判断可以加快仿真运行速度,它的作用与收信机组管道阶段有点类似。如果是链路有任何阻碍,封包将被丢掉,后续的管道阶段不必计算,否则将 PROP_CLOSURE 设为 OPC_FALSE,表示没有阻碍。
无线链路的物理可达性计算依据视通性来决定,基于物理上的考虑,测试连接发信机与收信机之间的连线是否被障碍物遮挡。如果发信机与收信机之间物理上不可达,则数据包传输失败。仿真中可以配置特定的地形图,不同的地形地貌计算的结果也不同。
根据发射电台和接收电台的频率、带宽、数据速率、扩频码等4个属性来判断信道是否匹配,为正在传输的数据包分成三类,如下图所示。
(1) 有效数据包(valid):接收电台和发射电台属性完全匹配,接收电台能够正确接收并解码当前传输的数据包。
(2) 干扰数据包(noise):带内干扰,发射电台和接收电台的频率和带宽等属性有重叠部分,该数据包不但不能被正确解码和利用,而且对其他数据包的接收产生干扰。
(3) 可忽略的数据包(ignore):带外数据包,频带不交叉。即收信机的频率和带宽等属性和发射电台完全不一致,该数据包虽然不能被正确解码和利用,但是不会对其他数据包的接收产生干扰,会被仿真核心销毁。
发射天线增益刻画了发射信号能量被放大或衰减的现象。发射功率的整形是基于天线结构的物理特性以及发送的方位角,由于天线在各个方向上对进行传输的数据包功率衰减程度不一样,因此直接影响了包的接收功率,进而影响信噪比和误码数目,无线链路仿真时将考虑天线模型的影响。
实际仿真中,要得到天线的增益必须首先获得天线仰角,天线仰角的计算涉及到坐标的变换,坐标的变换取决于天线的基准点,将天线模型坐标系的Z轴旋转至对准基准点,然后将发射电台与接收电台的连通向量投影到旋转后的天线模型的坐标系上, 得到天线的仰角,进而查找获得该链路方向上的天线增益值。
发射电台与接收电台的连通向量(即发送端与接收端的夹角)可以根据天线的位置(天线属性含有位置信息:目标纬度、目标经度、目标高度)来计算。当节点移动时,需要人为对这3个属性进行更新,根据这3个物理位置属性,仿真核心会自动更新当前的天线坐标。
传播延时和传输延时对应,传播延时是数据包在无线链路中所经历的另一部分延时。在无线链路仿真中,考虑到无线电台的移动,在数据包传输过程中,发射电台和接收电台之间的传输距离可能发生变化。因此,需要计算两个时延,即传输开始时的传播时延和传输结束时的传播时延,来逼近节点的移动特性,如下图所示。
分别计算发射电台和接收电台之间传输开始和传输结束的距离。
传播开始时延= 传输开始时收发机间距离 电磁波传播速率 \frac{传输开始时收发机间距离}{电磁波传播速率} 电磁波传播速率传输开始时收发机间距离
传播结束时延= 传输结束时收发机间距离 电磁波传播速率 \frac{传输结束时收发机间距离}{电磁波传播速率} 电磁波传播速率传输结束时收发机间距离
传播时延为传播开始时延和传播结束时延的折中。该阶段的数据也用来计算多普勒频移。
该管道阶段必需等到传播延时完毕才执行,中间仿真核心将转移去处理其他事件。收信机天线增益和发射天线增益的计算方法完全相同,结果将写入 TDA 下的 RX_GAIN 属性中。
接收功率是有效的数据包到达接收电台的有效功率。根据发射电台和接收电台的基准频率和带宽,得到收发电台互相重叠的带宽。由频率计算发送波长,再根据无线传播的距离,计算自由空间的电磁波功率传播损耗。
抗干扰接收方式有信号锁和功率锁两种。
信号锁指收信机认定先到达的包是应该接收的包,而在这个包的接收期间,置信道的信号锁为1,表明信道正在被占用,其他到达的包被认为是干扰。信号锁是管道阶段引入的一个内部变量,来防止接收信道同时正确接收多个数据包。
接收有效封包的过程中,另一个包到达,先到达的包信号被锁定,后到达的包被当作噪声而不管它是有效的还是噪声的,如下图所示。
功率锁指收信机认定功率最大的包应该接收的包,功率小于该包的其他到达的包被认为是干扰,而不管包到达的先后顺序。
干扰噪声功率描述了同时到达接收信道的各个数据包间的互相影响。如果有效数据包到达目的信道的同时另一个数据包正在接收,或者数据包正在被接收同时另一个数据包到达目的信道,则有干扰发生。
在大多数情况下,以上两种情形可能在一个数据包接收过程中出现多次。在接收过程中,对所有的干扰功率,结果施加至接收数据包。虽然背景噪声功率对于每个包的传输来说,只估算一次,但是干扰噪声功率却可能要计算多次。如果有多个数据包互相干扰,则干扰功率需进行累加。计算所有碰撞对一个帧产生的干扰噪声。当两个帧发生碰撞时需要计算相互干扰。如果两个帧都是合法帧,则分别将对方的接收功率加到自己的干扰累计中,如果是噪声帧则将其接收功率加到对方的干扰累计中。
干扰噪声的产生有以下三种情况。
接收有效包时来了另一个有效包;接收有效包时来了一个噪声包;接收噪声包时来了一个有效包。
典型的背景噪声源包括了从临近电子元件或者无线电发射的热噪声或射电噪声。例如, 车载无线电台、干扰电台、电视或其他器材噪音造成的影响等,下雨天或其他天气情况的影响。
背景噪声功率 = 环境噪声功率 + 背景热噪声功率
环境噪声功率 = 带宽 × 功率谱密度
背景热噪声功率 = 带宽 × 波尔兹曼常数 × (背景温度 + 设备温度)
背景噪声计算热噪声和环境噪声,通过计算将收信机温度转化成等效噪声,加上环境噪声,选取落在带内的部分作为背景噪声。
信噪比根据前面计算获得的接收功率、背景噪声和干扰噪声等参数计算得到。
数据包的 SNR 值是一个重要的性能度量来判断接收电台是否正确接收到包的内容。在一个数据包的整个接收过程中,可能有多次的其他包的到达,形成了新的干扰功率,每形成一次干扰,都要对信噪比评估一次。一个包在两次评估信噪比的时间间隔里传输的那一段数据的信噪比是相同的。
目的是根据 SNR 值得到比特错误概率,为了精确仿真无线链路的误比特率特性,BER 的计算不是基于整个数据包的,而是基于数据包中的一个一个小段来计算的,因为在数据包的传输过程中,信噪比不是固定不变的,从而导致 BER 也不是固定不变的。
根据调制曲线模型参数和前面传输阶段得到的信噪比,再加上信道处理增益得到有效信噪比,进而查找调制曲线得到误码率。因为包的每段 SNR 可能不同,对每一段找出 BER 之后,最后叠加得出总的误码率。
根据前一阶段得到的数据包的每一段的误码率,即可计算出数据包每一段数据中的误码数目。然后将它们累积起来即可得到总的误码数目。
一个封包的位差错并不是每一个位模拟,只是随机选择差错位。根据前面得到的误比特率 BER,计算有 k 个比特数错误的概率,再和 0~1 间的随机数比较,如果大于这个随机数,则给包分配 k 个比特错误。
错误分布计算公式如下。
该结果描述数据包经历了碰撞和背景噪声干扰后的纠错能力,根据帧长度、收信机错误纠正门限设定和最后得到的误码个数,决定此帧是否能被接受。如果判断能够接收当前数据包,则允许其被继续发送到高层。此阶段的判断直接影响接收信道的数据包丢弃率和吞吐量结果。
基于仿真中考虑到无线电台设备可能被关闭或摧毁,数据包是否可以接收的判断标准有两个,一是源端是否完整发送数据包;另一个是比较误比特数是否小于收信机的纠错门限值。如果设备被关闭或摧毁则数据包接收失败;进一步根据误码数目和纠错门限来判断,如果误码数目小于纠错门限则数据包可以被接收,将 PK_ACCEPT 属性置为 OPC_TRUE, 否则销毁包。到此包接收完毕,之后把信号锁解开,准备收下一个包。
以上就是 OPNET 无线仿真中14个管道阶段的所有内容了,希望本文对你学习 OPNET 无线仿真有一定的帮助!
本文参考书目:OPNET 网络仿真/陈敏编著. - 北京:清华大学出版社,2004