NS3仿真wifi网络环境 - NS3中无线节点的通信传输范围如何设置?
https://www.zhihu.com/question/24549780/answer/66061998

官方文档有一句很概括的话:节点100米以内,要能够通信;200米外不能工作。
目的节点的收包过程:
当节点接收到数据包的第一比特时,检测接收能量,如果小于wifiphy的能量检测门限EnergyDetectionThreshold,就会被丢弃。
能量达到相应的阈值,ns3 最终依据 SNIR (信号与干扰加噪声比)来决定 BER 和 PER 的,即最终决定数据包是否接收成功。这里涉及到一个errorrate model,估计出错的概率,来决定最终决定数据包是否接收成功。
ns3::YansWifiPhy类可以设置的属性:
EnergyDetectionThreshold:能量检测门限,默认为-96dbm
CcaMode1Threshold:确定为CCA busy状态的门限,默认为-99dbm
TxGain:传输增益,默认为1db
RxGain:接收增益,默认为1db
TxPowerLevels:能量的等级数,默认为1.
TxPowerEnd:最大传输水平,默认为16.0206dbm
TxPowerStart:最小传输水平,默认为16.0206dbm
RxNoiseFigure:默认为7db
ChannelWidth:5MHz, 10MHz, 20MHz, 22MHz, 40MHz,80 MHz or 160 MHz.默认20MHz
发射功率=TxPowerStart + txPower *(TxPowerEnd - TxPowerStart)/ TxPowerLevels
txPower 供外部程序调用的接口,比如 MacLow,指定传输采用的功率级数

=================================================================
利用移动模型mobility model的setpositionallocator方法,设置出来就可以用做范围(看到github上一大牛的写法),虽然感觉只是节点之间的距离。
=================================================================
将信道衰落模型(PropagationLossModel)设置为RangePropagationLossModel,然后它有个属性是“MaxRange”,设置它就几乎是直接设置了通信范围。
原理是:这个衰落模型是一个很理想化的模型,其核心思想就是小于通信半径(MaxRange)时返回接收增益为0db,大于通信半径时返回接收增益为-1000db,所以就会造成上述效果。
了解其原理之后题主就可以根据自己的需要选择合适的方法了:如果你的仿真对这一块要求不高,可以用这个方法,否则还请参照1楼的普适方法。
希望可以帮到你。
作者:知乎用户
链接:https://www.zhihu.com/question/24549780/answer/115060702
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通