ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part2

31 篇文章 1 订阅
21 篇文章 8 订阅

ns(来源于“network simulator”)是一系列离散事件网络模拟器,包括ns-1、ns-2和ns-3。他们主要应用于研究和教学。ns-3是自由软件,以GNU GPLv2协议分发。​——百度百科

wifi是日常生活中不可或缺的一部分,在工业和物联网场景也得到了越来越多的应用,在ns-3网络模拟器的说明文档里面占有46页的比重(说明文档总共605页,四十多章),可见wifi模块在ns-3体系中占有很重要的地位。

ns-3体系中有一种对象称为 节点 node,每一个node相当于一台电脑,一个Linux主机平台,每个node上面可以安装一个或几个网卡,网卡称为net device,net device可以是以太网有线网卡,也可以是蓝牙 wifi 无线网卡(蓝牙也是传输数据,也可以组网,所以也算是net device)。

ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part1_Mr_liu_666的博客-CSDN博客​ns(来源于“network simulator”)是一系列离散事件网络模拟器,包括ns-1、ns-2和ns-3。他们主要应用于研究和教学。ns-3是自由软件,以GNU GPLv2协议分发。​——百度百科wifi是日常生活中不可或缺的一部分,在工业和物联网场景也得到了越来越多的应用,在ns-3网络模拟器的说明文档里面占有46页的比重(总共605页,四十多章),可见wifi模块在ns-3体系中占有很重要的地位。ns-3体系中有一种对象称为 节点 node,每一个nohttps://blog.csdn.net/Mr_liu_666/article/details/123597203Part1中,介绍了ns-3网络模拟器中收发基本流程和MacPhy基本组成,本节Part2(略过了ns-3

未实现的802.11特性以及一些设计细节)将主要介绍Phy Entity的构成和接收数据包的大致流程。

目录

Phy Entity的构成

关于WiFiPhy的整体简介

与Phy模块有关的模块

PhyEntity介绍

WifiPpdu介绍

 WIfiPhyStateHelper与YansWifiPhy介绍

接收数据包的大致流程


Phy Entity的构成

YansWifiPhy and WifiPhyStateHelper也就是Phy模块主体和Phy模块状态工具的原理和使用,相对于SpectrumWifiPhy,本模型只考虑WIFI的无线信号,不考虑有关于频段的传播损失和衰落。

InterferenceHelper也就是干扰模拟器的原理和使用

ErrorRateModel也就四误码率估计模型的原理和使用

TableBasedErrorRateModel也就是基于查表的误码率估计模型的原理和使用

Legacy ErrorRateModels也就是传统的误码率估计模型的原理和使用

SpectrumWifiPhy也就是进阶款高级Phy模块的原理和使用(相对于基础款,进阶款还会模拟信号的频率分解和同时在一个信道上不仅仿真wifi还可以加个蓝牙 zigbee等同频协议。)

关于WiFiPhy的整体简介

WiFiPhy是整个80211的phy的整体,Phy对象使用send()函数发包,通过channel对象被接收Phy对象接收,接收对象调用干扰模型,读取收到包的信号强度,决定此包是否传输成功。为了解决新协议添加到PHY时的困难和一致性文件的大小与复杂程序的的问题,ns-3采取使用PhyEntity,指定某一个wifi版本的方式来区分Phy(HT VHT HE等等)(这个PhyEntity不是ns-3创造的概念,是wifi协议中规定的概念)。

与Phy模块有关的模块

Phy模块和以下5个模块有关系:
1 PhyEntity:包含Phy的功能
2 WifiPpdu:包含物理层协议数据模块功能
3 WiFiPhyStateHelper:维护PHY状态机轮转
4 Interference Helper:跟踪信道上所有数据包
5 Error Model:计算给定SNR下的误包率

Phy有两种模式,就像上面说过的,YansWifiPhy和YansWifiChannel,一个单纯,一个综合。WiFiPhy中最简单常用的是YansWifiPhy,YansWifiPhy发出的数据包带着自己的信号强度,直接交给所有的其他YansWifiPhy设备,收到的的信号强度数值使用传播损失模型计算,收到的时间使用信道传输延时模型去算(包括排队延时、和传播延迟——传播时延用距离和光速算),YansWifiPhy会添加传输损失模型和延迟模型,还可以自行添加更换传输损失模型或者延迟模型。

YansWifiPhy只能被wiif利用,其他的比如LTE的想混合仿真不能用YansWifiPhy。同时,YansWifiPhy不考虑信道间干扰,换言之,即使三个信道9 10 11 你都让他跑上吞吐,他们也不会互相影响——但是你要是实测,这些交叠的信道会造成极其严重的影响。

PhyEntity介绍

PhyEntity分为多个种类,对应不同的wifi协议版本:

11b:DsssPhy
11a&11p:OfdmPhy
11g:ErpOfdmPhy
11n:HtPhy
11ac:VhtPhy
11ax:HEPhy

PhyEntity决定协议版本,yans或者spectrum决定误报率和干扰仿真

上图为继承关系图,可见11n的phy以ofdm phy为基础,11ac以11n为基础,11ax以11ac为基础。这种继承关系使我们对物理层速率计算、ppdu长度计算和持续时间计算变得容易,也使收发路径的理顺变得清晰。

WifiPpdu介绍

首先,ppdu指的是两个wifi设备的PHY之间传输的最底层的二进制数字信号,也就是把amsdu ampdu都包好了再加上物理层头之后的一个物理包。

ns-3中 ppdu相关的entity :WifiPpdu与Phy Entity一致,也是每个协议对应一个Ppdu实体:

11b: DsssPpdu
11a/11p: OfdmPpdu
11g: ErpOfdmPpdu
11n: HtPpdu
11ac: VhtPpdu
11ax: HePpdu

与phy entity类似,Ppdu entity也是有继承关系的:

 WIfiPhyStateHelper与YansWifiPhy介绍

YansWifi把上层的MAC(frame change manager)的数据包传输到此YansWIfiPhy连接的YansWIfiChannel,以及从 channel接收数据包,判断是否传输成功并交给MAC。

接收信号强度的计算是根据发射功率+发射的Tx增益+接收的Rx增益+路径损耗传输模型计算。

WifiPhyStateHelper管理PHY的状态机,并给出一个PHY当前忙不忙的接口,从而用于传输的避免碰撞(MAC获取此状态),PHY层的状态机有以下7种状态:

TX:PHY正在发

RX:PHY正在收(此状态是收,但没收完,此状态的末尾是收到了最后一个bit,后面状态是交给MAC)

IDLE:空闲

CCA_BUSY:不是TX或RX但接收能量超过检测阈值(被干扰了,传不了)

SWITCHING:切换信道(比如从5500到5180)

SLEEP:省电,收发全停

OFF:断电,不能收发

接收数据包的大致流程

对于收包,文档里面只详细讲了YansPhy,基于wifiphy,接收过程中,yanswifichannel 调用中的,wifiphy中的start receive preamble调用,然后开始收包,每个包里面的接收到的信号强度都要与wifiphy rxsensitivity比较,比这个低就丢掉(默认-101dbm)。在start receive preamble中,数据包添加到interference helper进行信噪比跟踪,再看PHY 的状态,如果phy是tx,那么包被丢弃,如果phy是IDLE/rx且frame capture model在使用且数据在捕获窗口内,则可以收包,调用Phy entity 里面的start preamble detection period函数

start preamble detection period会在理论上第一个OFDM标志末尾调用一个end preamble setection period,用这个函数取得顶前导码有没有正常接收。如果状态机是IDLE的时候开始收前导码,那必须等到前导码检测完毕(前导码是PPDU的子前面的部分,用于同步收发端的时钟、提升功率、信道估计等)PHY的状态才能从idle态出去。

end preamble detection period分析preamble,如果信号足够强,就可以接收这个包并且在preamble的最后加一个end receive field,PHY进入 CCA_BUSY状态。从ns3.30,wifi phy helper里面调用一个ThresholdPreambleDetectionModel,要求rssi阈值-82dbm,SNR阈4dBm,不够好的preamble认为没收到。

end receive field会检测当前preamble和包头,如果接收正确,调用start receive field再来查找下一个字段,若前导码和包头错了,接收终止。接收终止时,PHY 可能idle也可能CCA_BUSY,取决于上一步到没到阈值。

start receive field使用interference helper和error model来确定包头解码是否正确,如果包头也解码正确了,调用phy rx payload begin回调函数开始接收数据字段。phy包头(phy header指的是preamble和data之间的signal部分,包含物理层速率rate信息)phy头的传输速率比数据字段低,而phy头的传输错误概率由SNR来推测,interference helper根据SNR算出phy 头的错误概率,然后phy entity从均匀分布中获取一个随机数,错误概率大于随机数,则包头接收错误。

【到了这里,总体来说,首先信号强度要大于-101,然后preamble的rssi要大于-82,SNR要大于4,preamble对了 phy头不一定对,根据SNR算头的错误概率,错误概率低才能包头对——而现在还没到数据部分】

确定包头是否正确的start receive field一直执行,直到start receive payload开始执行。

PHY不一定收到的都是发给自己的分组,但其他AP-STA之间的数据包如果收到了也会使用interference helper分析,用来算出SINR和做出信道评估决策。

end preamble detection period用于检测信号是否强的-82dbm的阈值会在interference Helper里实时更新,interference helper会提取由于PHY处于无法接收数据包的状态(应该指得是CCA_BUSY)而丢的包和错的包里面的能量,然后和-82比较(比如收到了一个-81的无用信号,导致PHY进入CCA_BUSY进而丢掉了其他包,这个时候就要提高threshold)。CcaEdTreshold是另一个CCA阈值,在20M的通道,默认为-62dbm。

上述为MPDU接收情况,对于A-MPDU来说,StartReceivePayload会给每一个单独的MPDU(每个收到的MPDU都会有一个ScheduleEndOfMpdus来接收数据包)的接收安排一个事件,然后在每个成功接收的MPDU到达时将他们转发到FrameExchangeManager,并告知fame exchange manager 成功接收MDPU 的数量

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值