NS-3 Wi-Fi 仿真模型测试文档
本文翻译自,https://www.nsnam.org/docs/release/3.43/models/html/wifi-testing.html#spectrumwifiphy 。
目前,大多数关于测试和验证的文档都存在于出版物中,以下列出了一些参考文献。
1 错误模型
802.11b 错误模型的验证结果可在以下 技术报告 中查看。
需要注意以下两点说明:
上述参考文献中的图 1-4 对应的是 ns-3 NIST 比特错误率(BER)模型。在该论文附录的程序(80211b.c)中,有两个用于生成数据的常量。第一个是分组大小,设置为 1024 字节。第二个是“噪声”,其值设为 7 dB;这一值是通过经验选取的,以使曲线与 CMU 测试床的报告数据最契合。虽然值为 1.55 dB 更符合 CMU 论文报告的 -99 dBm 噪声底限,但噪声系数 7 dB 最适合与 CMU 实验数据拟合。这一默认值 7 dB 是 ns3::YansWifiPhy
模型中的 RxNoiseFigure
。更改噪声系数会使曲线向左或向右移动,但不会改变其斜率。
可以通过运行 examples/wireless/wifi-clear-channel-cmu.cc
示例程序重现这些曲线。当启用 GNU 科学库(GSL)时,会生成以下图表:802.11b 的清晰信道(AWGN)错误模型。
802.11a/g OFDM 错误模型的验证结果可在以下 技术报告 中查看。
可以通过运行 examples/wireless/wifi-ofdm-validation.cc
示例程序重现这些曲线,以下图表展示了 802.11a/g(OFDM)Wi-Fi 的帧错误率(NIST 模型)。
对于 802.11n/ac/ax,可以通过运行 wifi-ofdm-ht-validation.cc
、wifi-ofdm-vht-validation.cc
和 wifi-ofdm-he-validation.cc
示例程序生成类似曲线。以下分别展示了 802.11n(HT OFDM)Wi-Fi 的帧错误率(NIST 模型)、802.11ac(VHT OFDM)Wi-Fi 的帧错误率(NIST 模型) 和 802.11ax(HE OFDM)Wi-Fi 的帧错误率(NIST 模型)。但这些曲线目前尚无验证。
2 MAC 验证
802.11 DCF MAC 层的验证已在 [baldo2010] 中完成。
802.11 PCF 的操作通过运行 wifi-pcf
示例(启用 PCAP 文件生成),并使用 Wireshark 观察帧交换得以验证。
3 SpectrumWiFiPhy
SpectrumWifiPhy 实现已通过饱和和分组错误率程序(下文描述)进行验证,其结果与传统的 YansWifiPhy 一致。测试中通过切换这两种物理层实现进行比较。
一个基本单元测试通过手动构造的分组注入接收的 PHY 对象,控制每个分组到达的时间和接收功率,并检查接收结果。然而,大多数对 SpectrumWifiPhy 的测试是使用下文描述的示例程序,以及一个独立的 LTE/Wi-Fi 共存研究中完成的(未在此文档中记录)。
3.1 饱和性能
程序 examples/wireless/wifi-spectrum-saturation-example.cc
允许用户选择 SpectrumWifiPhy
或 YansWifiPhy
进行饱和测试。用户可以通过参数 '--wifiType=ns3::YansWifiPhy'
或 '--wifiType=ns3::SpectrumWifiPhy'
切换物理层类型。
输出结果没有差异,这符合预期,因为该测试主要验证的是 DCF,而不是物理层。
默认情况下,程序将使用 SpectrumWifiPhy
,并在 10 秒内发送饱和 UDP 数据,启用 802.11n 功能。输出显示主流 802.11n 速率(短保护间隔和长保护间隔)的结果:
wifiType: ns3::SpectrumWifiPhy distance: 1m
index MCS width Rate (Mb/s) Tput (Mb/s) Received
0 0 20 6.5 5.81381 4937
1 1 20 13 11.8266 10043
2 2 20 19.5 17.7935 15110
3 3 20 26 23.7958 20207
4 4 20 39 35.7331 30344
5 5 20 52 47.6174 40436
6 6 20 58.5 53.6102 45525
7 7 20 65 59.5501 50569
...
63 15 40 300 254.902 216459
上述输出显示了前 8 种模式(共 32 种)及最后一种模式的结果。前 8 种模式对应未启用短保护间隔和信道绑定的情况。后续 24 种模式分别为启用短保护间隔(第 9 至 16 种模式),然后启用信道绑定,再依次禁用和启用短保护间隔(第 17 至 32 种模式)。第 33 至 64 种模式在两条空间流(MIMO 抽象)下重复上述配置。
运行以下命令可使用 YansWifiPhy:
./ns3 run "wifi-spectrum-saturation-example --wifiType=ns3::YansWifiPhy"
输出结果:
wifiType: ns3::YansWifiPhy distance: 1m
index MCS width Rate (Mb/s) Tput (Mb/s) Received
0 0 20 6.5 5.81381 4937
1 1 20 13 11.8266 10043
2 2 20 19.5 17.7935 15110
3 3 20 26 23.7958 20207
...
这符合预期,因为在这种情况下,YansWifiPhy
和 SpectrumWifiPhy
使用相同的误码率模型。
3.2 包误码率性能
程序 examples/wireless/wifi-spectrum-per-example.cc
允许用户选择 SpectrumWifiPhy
或 YansWifiPhy
,并选择节点间的距离,同时记录接收统计数据和接收 SNR(通过 WifiPhy::MonitorSnifferRx
跟踪源观察)。程序使用 Friis 传播损耗模型。将发送功率从默认的 40 mW(16 dBm)降低到 1 dBm,以降低基线 SNR;用户还可以通过更改节点间的距离进一步调整 SNR。默认情况下,程序会在 50 米距离下,针对 10 秒的仿真时间,对从 0 到 31 的速率索引逐步测试,生成如下输出:
wifiType: ns3::SpectrumWifiPhy distance: 50m; time: 10; TxPower: 1 dBm (1.3 mW)
index MCS Rate (Mb/s) Tput (Mb/s) Received Signal (dBm) Noise (dBm) SNR (dB)
0 0 6.50 5.77 7414 -79.71 -93.97 14.25
1 1 13.00 11.58 14892 -79.71 -93.97 14.25
2 2 19.50 17.39 22358 -79.71 -93.97 14.25
3 3 26.00 22.96 29521 -79.71 -93.97 14.25
4 4 39.00 0.00 0 N/A N/A N/A
5 5 52.00 0.00 0 N/A N/A N/A
6 6 58.50 0.00 0 N/A N/A N/A
7 7 65.00 0.00 0 N/A N/A N/A
如上饱和性能测试中的情况,使用 YansWifiPhy
运行此程序将生成相同的输出。
3.3 干扰性能
程序 examples/wireless/wifi-spectrum-per-interference.cc
基于上述包误码率示例,但从未许可 LTE 干扰测试中引入了 WaveformGenerator
,允许用户通过命令行(使用 --waveformPower
参数)注入非 Wi-Fi 信号。与包误码率示例程序相比,此程序的发送功率恢复为默认的 40 mW(16 dBm)。默认情况下,干扰发生器关闭,程序行为类似于其他包误码率示例;通过添加少量功率(例如 --waveformPower=0.001
),可以观察到 SNR 降低和帧丢失。
没有干扰时的部分输出如下:
./ns3 run "wifi-spectrum-per-interference"
wifiType: ns3::SpectrumWifiPhy distance: 50m; time: 10; TxPower: 16 dBm (40 mW)
index MCS Rate (Mb/s) Tput (Mb/s) Received Signal (dBm)Noi+Inf(dBm) SNR (dB)
0 0 6.50 5.77 7414 -64.69 -93.97 29.27
1 1 13.00 11.58 14892 -64.69 -93.97 29.27
2 2 19.50 17.39 22358 -64.69 -93.97 29.27
3 3 26.00 23.23 29875 -64.69 -93.97 29.27
4 4 39.00 34.90 44877 -64.69 -93.97 29.27
5 5 52.00 46.51 59813 -64.69 -93.97 29.27
6 6 58.50 52.39 67374 -64.69 -93.97 29.27
7 7 65.00 58.18 74819 -64.69 -93.97 29.27
...
添加少量波形功率后,较高阶调制可能因较低 SNR 出现帧丢失:
./ns3 run "wifi-spectrum-per-interference --waveformPower=0.001"
wifiType: ns3::SpectrumWifiPhy distance: 50m; sent: 1000 TxPower: 16 dBm (40 mW)
index MCS Rate (Mb/s) Tput (Mb/s) Received Signal (dBm)Noi+Inf(dBm) SNR (dB)
0 0 6.50 5.77 7414 -64.69 -80.08 15.38
1 1 13.00 11.58 14892 -64.69 -80.08 15.38
2 2 19.50 17.39 22358 -64.69 -80.08 15.38
3 3 26.00 23.23 29873 -64.69 -80.08 15.38
4 4 39.00 0.41 531 -64.69 -80.08 15.38
5 5 52.00 0.00 0 N/A N/A N/A
6 6 58.50 0.00 0 N/A N/A N/A
7 7 65.00 0.00 0 N/A N/A N/A
...
选择 ns3::YansWifiPhy
时,不会启用波形发生器,因为只有 YansWifiPhy
类型的发送器可以连接到 YansWifiChannel
。
4 Bianchi 验证
程序 src/wifi/examples/wifi-bianchi.cc
允许用户将 ns-3 模拟结果与 [bianchi2000] 和 [bianchi2005] 提出的 Bianchi 模型进行比较。
MATLAB 脚本用于生成 Bianchi 模型的代码及其输出,可在 src/wifi/examples/reference
文件夹中找到。用户可运行 MATLAB 脚本 generate_bianchi.m
以重新生成 Bianchi 结果。
默认情况下,程序 src/wifi/examples/wifi-bianchi.cc
模拟一个 802.11a 自组网络场景,PHY 速率设置为 54 Mbit/s,并从 5 个站点循环到 50 个站点(每次增加 5 个站点)。程序生成一个 plt
文件,用户可以使用 Gnuplot 快速生成 eps 文件并可视化图形。
5 多用户传输验证
OFDMA 支持的实现已通过理论模型 [magrin2021mu] 进行验证。
在非饱和条件下的延迟、饱和条件下的吞吐量以及 UL OFDMA 的传输范围,已在 [avallone2021wcm] 中提供初步评估。
还不快抢沙发