目录
[3.1 网络架构](#3.1 网络架构)
[3.2 无线接入网](#3.2 无线接入网)
[3.2.1 创建eNB和UE结点](#3.2.1 创建eNB和UE结点)
[3.2.2 安装移动模型](#3.2.2 安装移动模型)
[3.2.3 在结点中安装eNB与UE网络设备](#3.2.3 在结点中安装eNB与UE网络设备)
[3.2.4 将UE接入eNB](#3.2.4 将UE接入eNB)
[3.2.5 激活eNB与UE间的无线数据承载(Data Radio Bearer,DRB)](#3.2.5 激活eNB与UE间的无线数据承载(Data Radio Bearer,DRB))
[3.3 核心网](#3.3 核心网)
[3.3.1 创建EPC网络](#3.3.1 创建EPC网络)
[3.3.2 创建外部网络,并创建与P-GW/S-GW之间的PPP信道连接](#3.3.2 创建外部网络,并创建与P-GW/S-GW之间的PPP信道连接)
[3.3.3 创建eNB和UE](#3.3.3 创建eNB和UE)
[3.3.4 安装移动模型](#3.3.4 安装移动模型)
[3.3.5 为UE安装TCP/IP协议栈](#3.3.5 为UE安装TCP/IP协议栈)
[3.3.6 为所有UE结点配置IP和网关地址](#3.3.6 为所有UE结点配置IP和网关地址)
[3.3.7 将所有UE接入eNB](#3.3.7 将所有UE接入eNB)
[3.3.8 为UE和远端结点配置应用层协议](#3.3.8 为UE和远端结点配置应用层协议)
[3.4 属性与trace](#3.4 属性与trace)
[3.4.1 LteHelper中的属性设置](#3.4.1 LteHelper中的属性设置)
[3.4.2 LteHelper中的trace设置](#3.4.2 LteHelper中的trace设置)
[3.4.3 EpcHelper中的属性设置](#3.4.3 EpcHelper中的属性设置)
[3.5 其他无线网络模块](#3.5 其他无线网络模块)
[3.5.1 移动模块(mobility model)](#3.5.1 移动模块(mobility model))
[3.5.2 传播模型(propagation model)](#3.5.2 传播模型(propagation model))
[3.5.3 频谱模型(spectrum model)](#3.5.3 频谱模型(spectrum model))
[3.5.4 天线模块(antenna model)](#3.5.4 天线模块(antenna model))
[3.5.5 能量模型(energy model)](#3.5.5 能量模型(energy model))
[3.5.6 建筑模型(building model)](#3.5.6 建筑模型(building model))
三、蜂窝网:LTE
3.1 网络架构
一个完整的LTE网络由分组核心网(Evolved Packet Core,EPC)和无线接入网(Radio Access Network,RAN)组成。

LTE模块中主要支持功能都集中在RAN部分,如无线资源管理、X2切换、频率复用、上行链路功率控制等。在接入网RAN部分,ns-3实现了演进结点B(eNB)和用户设备(UE)两个实体;
- eNB是LTE网络中的无线基站,为信号覆盖范围内的UE提供无线接入服务;eNB之间用X2接口连接。
在核心网部分EPC部分,ns-3实现了3个关键结点,即PDN网关(P-GW)、服务网关(S-GW)和移动性管理组件(MME);
- P-GW负责LTE网络与外部互联网之间的分组交换,是整个LTE网络的出口;
- S-GW负责LTE内部数据分组的路由和转发;在LTE标准中,一个P-GW可以连接多个S-GW,每个连接S-GW可以连接多个eNB;
在ns-3中的P-GW与S-GW部署在同一个结点上;通过EPC,可以在脚本的UE中安装TCP/IP协议栈并与其他非LTE模块的结点通信。

P-GW/S-GW是一个双栈结点,它与外部结点之间使用TCP/IP协议栈通信,与eNB使用GTP隧道传输数据;eNB也是一个双栈结点,是连接RAN和EPC网络的桥梁。
在LTE模块中,RAN部分主要通过LteHelper模块配置,EPC部分通过EpcHelper的两个子类PointToPointEpcHelper和EmuEpcHelper配置。
3.2 无线接入网
3.2.1 创建eNB和UE结点
//创建eNB和UE结点
NodeContainer enbNodes;
NodeContainer ueNodes;
enbNodes.Creare(1);
ueNodes.Create(1);
3.2.2 安装移动模型
MobilityHelper mobility; //eNB移动模型
mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
mobility.Install(enbNodes);
BuildingsHelper::Install(enbNodes);
mobility.SetMobilityModel( //UE移动模型
"ns3::ConstantPositionMobilityModel");
mobility.Install(ueNodes); //建筑模型
BuildingHelper::Install(ueNodes);
/*建筑模型可以模拟一个建筑结构中的无线网络环境*/
3.2.3 在结点中安装eNB与UE网络设备
Ptr<LteHelper>lteHelper
=VreateObject<LteHelper>();
NetDeviceContainer enbDevs;
NetDeviceContainer ueDevs;
//在结点中安装eNB网络设备
enbDevs=lteHelper->InstallEnbDevice(enbNodes);
//在结点中安装UE网络设备
ueDevs=lteHelper->InstallUeDevice(ueNodes);
eNB下行分组分发器(scheduler):可以在调用InstallEnbDevice()函数之前由LteHelper::Set-SchedulerType()函数配置,默认类型为比例公平算法(PfFfMacScheduler)。下行分组分发器负责为所有接入此eNB的UE分配网络资源,当有多个针对下行分组的分发器算法。
3.2.4 将UE接入eNB
lteHelper->Attach(ueDevs,enbDevs.Get(0));
3.2.5 激活eNB与UE间的无线数据承载(Data Radio Bearer,DRB)
承载简单地理解就是一个具有相同QoS的业务流,在LTE模块中,数据必须要依附于承载才可以传输。
enum EpsBearer::Qci q=EpsBearer::GBR_CONV_VOICE;
EpsBearer bearer(q);
lteHelper->ActivateDataRadioBearer(ueDevs,bearer);
3.3 核心网
纯RAN网络中的eNB和UE并不具有TCP/IP协议栈,为了与其他非LTE结点通信,还需要建立创建一个核心网(EPC),以用于RAN协议栈和TCP/IP协议栈之间的分组转换,这样RAN就可以对上层协议进行模拟分析。
3.3.1 创建EPC网络
P-GW/S-GW、MME和eNB之间通过有线信道连接。目前ns-3支持以下两种有线信道:
-
纯ns-3模拟信道(点对点PPP网络):使用的助手类是PointToPointEpcHelper
-
物理网络:使用的助手类是EmuEpcHelper,具体内容见ns-3仿真之与物理网络交互
Ptr<LteHelper>lteHelper=
CreateObject<LteHelper>();
Ptr<PointToPointEpcHelper> epcHelper=
CreateObject<PointToPointEpcHelper>();
//创建EPC网络。结点将由PPP信道连接
lteHelper->SetEpcHelper(epcHelper);
3.3.2 创建外部网络,并创建与P-GW/S-GW之间的PPP信道连接
Ptr<Node>pgw=epcHelper->GetPgwNode();
//
Ptr<Node>remoteHost=remoteHostContainer.Get(0);
//
NetDeviceContainer internetDevices=
p2ph.Install(pgw,remoteHost);
//
remoteHostStaticRouting->AddNetworkRouteTo(
Ipv4Address("7.0.0.0"),
Ipv4Mask("255.0.0.0"),
1);
在LTE模块中,EPC为UE结点分配的IP地址范围是固定的,其网络地址为7.0.0.0,子网掩码为255.0.0.0。在为远端结点设置静态路由时,需要指定所有目的的IP地址属于7.0.0.0网段的分组都要发往其PPP网络设备,这样才能将分组最终传输给P-GW/S-GW。如果远端结点与P-GW/S-GW之间使用其他的网络结构和路由协议,则其路由设置也需要做相应的改变
3.3.3 创建eNB和UE
//创建eNB和UE结点
NodeContainer enbNodes;
NodeContainer ueNodes;
enbNodes.Creare(1);
ueNodes.Create(1);
3.3.4 安装移动模型
MobilityHelper mobility; //eNB移动模型
mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
mobility.Install(enbNodes);
BuildingsHelper::Install(enbNodes);
mobility.SetMobilityModel( //UE移动模型
"ns3::ConstantPositionMobilityModel");
mobility.Install(ueNodes); //建筑模型
BuildingHelper::Install(ueNodes);
3.3.5 为UE安装TCP/IP协议栈
与其他脚本相同
3.3.6 为所有UE结点配置IP和网关地址
在EPC中,P-GW/S-GW统一为UE分配地址(网络地址为7.0.0.0,子网掩码为255.0.0.0),脚本需要为UE分配一个网关地址,即P-GW/S-GW即诶但中与eNB连接的网络设备IP地址,这样UE的上行分组才会被eNB转发至P-GW/S-GW
//为UE自动分配IP地址
Ipv4InterfaceContainer ueIpIface;
ueIpIface=
epcHelper->AssignUeIpv4Address(
NetDeviceContainer(ueLteDevs));
//配置网关
for{uint32_t u=0;u<ueNodes.GetN();++u)
{
//ueStaticRouting是UE的静态路由对象
ueStaticRouting->SetDefaultRoute(
epcHelper->GetUeDefaultGatewayAddress(),
1);
}
3.3.7 将所有UE接入eNB
在存在EPC的情况下,LteHelper::Attach()会自动建立UE和P-GW/S-GW的承载,即EPS承载。不需要像纯RAN网络那样手动激活承载。
for(uint16_t i=0;i<numberOfNodes;i++)
{
lteHelper->Attach(
ueLteDevs.Get(i),enbLteDevs.Get(i));
}
在LteHelper::Attach()函数中指定UE对象可对UE自动分配eNB。
3.3.8 为UE和远端结点配置应用层协议
与其他脚本没有差异
3.4 属性与trace
3.4.1 LteHelper中的属性设置
-
LteHelper中以SetXType()格式命名的成员函数用于设置一些关键C++基类的子类类型
-
以SetXAttribute()格式命名的成员函数用于设置C++子类中的属性
lteHelper->SetEnbAntennaModelType
"ns3::CosineAntennaModel");
lteHelper->SetEnbAntennamODELAttribute(
"Orientation",DoubleValue(0));
3.4.2 LteHelper中的trace设置
LteHelper中的trace设置函数都以EnableXTrace()格式命名,这些函数会产生txt格式的trace文件
3.4.3 EpcHelper中的属性设置
PointToPointEpcHelper在EPC结点间建立PPP信道
EmuEpcHelper使用物理信道连接EPC中的结点
3.5 其他无线网络模块
3.5.1 移动模块(mobility model)
移动模型模拟的是无线网络中一个结点的移动轨迹,一般先使用PositionAllocator为移动结点分配初始位置,再为每个结点设置MobilityModel子类类型,确定移动轨迹计算算法。
3.5.2 传播模型(propagation model)
传播模型被用来计算在无线信道中的传播损耗和传播迟延
- 传播损耗的基类是PropagationLossModel,一般用来计算接收端对一个分组的接收功率;
- 传播延迟的基类是PropagationDelayModel,一般被用来计算分组在无线信道中的传播时长。
3.5.3 频谱模型(spectrum model)
目前被应用于Wi-Fi、LTE和LR-WPAN模块
3.5.4 天线模块(antenna model)
模拟不同角度上天线辐射场型的功率增益(power gain)
3.5.5 能量模型(energy model)
计算无线结点能量损耗的工具
3.5.6 建筑模型(building model)
通过自定义的路径损耗算法,建筑模型可以模拟出一个长方形建筑物内的无线网络环境,用户可以设置这个建筑物的楼层、房间数目、墙壁用料等环境细节。