网络通信实现技术——实验三

实验内容

利用NS3部署一个LTE网络,具体参数如表所示

iot 设备的拓扑关系表 lte网络拓扑_iot 设备的拓扑关系表

绘制仿真的Radio Environment Map

实验目的

理解无线蜂窝网络基本概念

实验环境

操作系统 Linux Ubuntu 7.5.0

网络仿真软件 NS3-3.29

绘图软件 gnuplot

实验步骤

src/lte/examples中找到lena-dual-stripe.cc示例程序源码,这个示例程序中包含了很多源码,根据这个修改即可

一、小区拓扑:正六边形,7个小区,21个扇形,基站间距500m

ns-3提供了很多方法用于传递配置值到仿真中,在本实验中使用命令行参数。它通过附加参数及其值到 waf 调用中来实现。 因此在命令行中设置拓扑结构:

./waf --run="lena-dual-stripe --generateRem=1 --nMacroEnbSites=7 --nMacroEnbSitesX=2 --ns3::RadioBearerStatsCalculator::DlRlcOutputFilename=a3-rsrp-DlRlcStats.txt --ns3::RadioBearerStatsCalculator::UlRlcOutputFilename=a3-rsrp-UlRlcStats.txt"

其中nMacroEnbSites=7表示宏小区站点数量为7,nMacroEnbSitesX=2表示各站点以2-3-2(正六边形)的方式排列。

在PrintGnuplottableEnbListToFile()函数中定义了gnuplot画图的参数,因此可以修改这里有关基站间距的参数:

Line 263:
static ns3::GlobalValue g_interSiteDistance ("interSiteDistance",
                                             "min distance between two nearby macro cell sites",
                                             ns3::DoubleValue (500),
                                             ns3::MakeDoubleChecker<double> ());

二、天线波束宽度70°

波束宽度定义为:波束两个半功率点之间的夹角,波束宽度分为水平波束宽度和垂直波束宽度。在Ltehelper中有设置天线波束宽度的方法:

Line 548:
 lteHelper->SetEnbAntennaModelAttribute ("Beamwidth", DoubleValue (70));

三、天线最大衰减25dB

同样在Ltehelper中设置天线最大衰减

Line 549:
 lteHelper->SetEnbAntennaModelAttribute ("MaxAttenuation", DoubleValue (25.0));

四、基站发射功率46dBm

与基站有关的可以到PrintGnuplottableEnbListToFile()函数中修改参数:

Line 288:
static ns3::GlobalValue g_macroEnbTxPowerDbm ("macroEnbTxPowerDbm",
                                              "TX power [dBm] used by macro eNBs",
                                              ns3::DoubleValue (46.0),
                                              ns3::MakeDoubleChecker<double> ());

五、路径损耗模型128.1+37.6log10R

结合公式查询可知,这是城区混合建筑传播环境的损耗模型,因此Ltehelper的参数设置为HybridBuildingsPropagationLossModel

Line 512:
lteHelper->SetAttribute ("PathlossModel", StringValue("ns3::HybridBuildingsPropagationLossModel"));

六、用户设备高度1.5m

由于要绘制 Radio Environment Map,通过使用类 RadioEnvironmentMapHelper是能输出文件 Radio Environment Map (REM,无线环境地图) 的

REM 以下列格式存储在一个 ASCII 文件中:

column 1 为 x 坐标

column 2 为 y 坐标

column 3 为 z 坐标

column 4 为 SINR in linear units

因此在remHelper中设置z轴属性为1.5:

Line 862:
remHelper->SetAttribute ("Z", DoubleValue (1.5));

七、系统带宽20MHz

Line 308:
static ns3::GlobalValue g_homeEnbBandwidth ("homeEnbBandwidth",
                                            "bandwidth [num RBs] used by HeNBs",
                                            ns3::UintegerValue (20),
                                            ns3::MakeUintegerChecker<uint16_t> ());

在设置带宽完毕编译时会遇到如下问题:

iot 设备的拓扑关系表 lte网络拓扑_示例程序_02

找到报错程序对应行发现我们所设置的20MHz并不在可选项中:

iot 设备的拓扑关系表 lte网络拓扑_sed_03

因此要在case中手动添加bw=20的情况:

iot 设备的拓扑关系表 lte网络拓扑_sed_04

这样报错的程序文件还有很多,只要一一修改即可。


之后绘制仿真的Radio Environment Map,写一个简单的脚本即可,必须在脚本中指明示例程序 lena-dual-stripe 获得的一个 REM名称"lena-dual-stripe.rem"

set view map;
set xlabel "X"
set ylabel "Y"
set cblabel "SINR (dB)"
unset key
plot "lena-dual-stripe.rem" using ($1):($2):(10*log10($4)) with image

必须在命令行中增加一个参数 --generateRem=1 来生成仿真的 REM:

./waf --run="lena-dual-stripe --generateRem=1 --nMacroEnbSites=7 --nMacroEnbSitesX=2 --ns3::RadioBearerStatsCalculator::DlRlcOutputFilename=a3-rsrp-DlRlcStats.txt --ns3::RadioBearerStatsCalculator::UlRlcOutputFilename=a3-rsrp-UlRlcStats.txt"

lena-dual-stripe 示例程序也会生成 gnuplot-compatible 输出文件,包含用户与基站节点以及建筑物的位置信息,分别为文件 ues.txt、 enbs.txt 和 buildings.txt 。我的 gnuplot 脚本保存为 plot_script,运行下列命令会在 REM 顶端画出用户、 基站和建筑物的位置

gnuplot -p enbs.txt ues.txt buildings.txt plot_script

仿真的Radio Environment Map:

iot 设备的拓扑关系表 lte网络拓扑_iot 设备的拓扑关系表_05