网络通信实现技术——实验三
实验内容
利用NS3部署一个LTE网络,具体参数如表所示
绘制仿真的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> ());
在设置带宽完毕编译时会遇到如下问题:
找到报错程序对应行发现我们所设置的20MHz并不在可选项中:
因此要在case中手动添加bw=20的情况:
这样报错的程序文件还有很多,只要一一修改即可。
之后绘制仿真的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: