NS-3 Wi-Fi 仿真模型测试

默认分类 2024-11-22 190 次浏览 次点赞


本文翻译自,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)错误模型

_images/clear-channel.png

802.11b 的清晰信道(AWGN)错误模型

802.11a/g OFDM 错误模型的验证结果可在以下 技术报告 中查看。
可以通过运行 examples/wireless/wifi-ofdm-validation.cc 示例程序重现这些曲线,以下图表展示了 802.11a/g(OFDM)Wi-Fi 的帧错误率(NIST 模型)

_images/nist-frame-success-rate.png

802.11a/g(OFDM)Wi-Fi 的帧错误率(NIST 模型)

对于 802.11n/ac/ax,可以通过运行 wifi-ofdm-ht-validation.ccwifi-ofdm-vht-validation.ccwifi-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 模型)。但这些曲线目前尚无验证。

_images/nist-frame-success-rate-n.png

802.11b 的清晰信道(AWGN)错误模型

_images/nist-frame-success-rate-ac.png

802.11n(HT OFDM)Wi-Fi 的帧错误率(NIST 模型)

_images/nist-frame-success-rate-ax.png

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 允许用户选择 SpectrumWifiPhyYansWifiPhy 进行饱和测试。用户可以通过参数 '--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
  ...

这符合预期,因为在这种情况下,YansWifiPhySpectrumWifiPhy 使用相同的误码率模型。

3.2 包误码率性能

程序 examples/wireless/wifi-spectrum-per-example.cc 允许用户选择 SpectrumWifiPhyYansWifiPhy,并选择节点间的距离,同时记录接收统计数据和接收 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] 中提供初步评估。


本文由 Jay 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处,点赞0

还不快抢沙发

添加新评论