LTE Module User Documentation(翻译8)——核心网(EPC)

LTE用户文档

(如有不当的地方,欢迎指正!)

14 Evolved Packet Core (EPC)

我们现在讲解如何编写一个仿真程序——除了 LTE 无线接入网外,还允许仿真 EPC。 EPC 允许使用 IPv4 网络与 LTE 设备连接。换句话说,可以在 LTE 上使用常规的 ns-3 应用和 IPv4  sockets ,并且能够把 LTE 网络与仿真中的任何 IPv4 网络相连接。

首先,除了我们已经在 Basic simulation program 中介绍过的 LteHelper 之外 ,你还需要使用一个额外的 EpcHelper 类——负责创建 EPC 实体和网络拓扑。 注意,你不能直接使用 EpcHelper  ,因为它是一个抽象基类;相反,你需要使用它的一个子类——提供不同的 EPC 拓扑实现。 本例中,我们会考虑 PointToPointEpcHelper, 基于点对点链路实现 EPC 。为了使用它,首先需要在仿真程序中插入下列代码:

Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();

然后,你需要告诉 LTE helper 接下来要使用 EPC:

lteHelper->SetEpcHelper (epcHelper);

上面一步是很有必要的, LTE helper 将触发合适的 EPC 配置与一些相关的重要配置,例如当一个基站或用户添加到仿真中时或者创建一个EPS 承载时。另外,所有这些实现都不受用户的干预。

调用 lteHelper->SetEpcHelper (epcHelper) 会使能 EPC 起作用,同时具有副作用——创建的任何新的 LteEnbRrc 所拥有的 EpsBearerToRlcMapping 属性设置为 RLC_UM_ALWAYS 而不是 RLC_TM_ALWAYS(原文档中写的是RLC_SM_ALWAYS,有误!) ,如果后者是默认的话;否则,属性不会改变(例如,如果你修改默认属性为 RLC_AM_ALWAYS, 它将不会变动)。

注意, EpcHelper 也会自动地创建 PGW 节点并配置它,以便它可以合适地处理来自/去往 LTE 无线接入网的业务。不过,你需要添加一些明确的代码来连接 PGW 到其他的 IPv4 网络(例如因特网)。这里有一个非常简单的例子——如何通过点对点链路连接单个远程主机到 PGW :

Ptr<Node> pgw = epcHelper->GetPgwNode ();
 // 创建一个远程主机
NodeContainer remoteHostContainer;
remoteHostContainer.Create (1);
Ptr<Node> remoteHost = remoteHostContainer.Get (0);
InternetStackHelper internet;
internet.Install (remoteHostContainer);

// 创建 internet
PointToPointHelper p2ph;
p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010)));
NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
Ipv4AddressHelper ipv4h;
ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
// 接口 0 为本地主机,1 为 p2p 设备
Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);

指定路由很重要,以便远程主机可以到达 LTE 用户。实现这的一个方式是利用这样一个事实——PointToPointEpcHelper 默认会分配 LTE 用户一个7.0.0.0 网络的 IP 地址。只要考虑到这一点就足够了:

Ipv4StaticRoutingHelper ipv4RoutingHelper;
Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);

现在,你应该继续并创建 LTE 基站和用户(参考前面章节)。 当然,你可以配置 LTE 的其他方面,例如路径损耗和衰落模型。 一旦你创建完用户,你应该也给它们配置 IP 网络。按照下面的方式实现。我们假定你有一个装用户和基站节点的容器,类似于:

NodeContainer ueNodes;
NodeContainer enbNodes;

配置一个只有 LTE 的仿真,你通常会这样做:

NetDeviceContainer ueLteDevs = lteHelper->InstallUeDevice (ueNodes);
lteHelper->Attach (ueLteDevs, enbLteDevs.Get (0));

为了给用户配置 IP 网络,你只需要额外添加这些:

// 在用户上安装 IP 协议栈
InternetStackHelper internet;
internet.Install (ueNodes);

// 给用户分配 IP 地址
for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
  {
    Ptr<Node> ue = ueNodes.Get (u);
    Ptr<NetDevice> ueLteDevice = ueLteDevs.Get (u);
    Ipv4InterfaceContainer ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueLteDevice));
    // 为用户设置默认网关
    Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ue->GetObject<Ipv4> ());
    ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
  }

EPC 的承载激活与 LTE-only 仿真稍微不同。首先,当使用 EPC 时,不再使用 ActivateDataRadioBearer 方法。其次,使用 EPC ,当你调用 LteHelper::Attach () 时,默认的 EPS 承载将自动激活。第三,如果你想设置专用的 EPS 承载,你可以使用方法  LteHelper::ActivateDedicatedEpsBearer () 来实现。 该方法被看作一个参数 Traffic Flow Template (TFT,业务流模板)——一个定义业务(会被映射到专用的 EPS 承载上)类型的结构体。下面一个例子讲的是,当用户在端口 1234 通信时,如何为应用设置专用的无线承载:

Ptr<EpcTft> tft = Create<EpcTft> ();
EpcTft::PacketFilter pf;
pf.localPortStart = 1234;
pf.localPortEnd = 1234;
tft->Add (pf);
lteHelper->ActivateDedicatedEpsBearer (ueLteDevs, EpsBearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT), tft);

你当然也可以使用自定义的 EpsBearer 和 EpcTft 配置,请参考 doxygen 文档来学习如何实现它。

最后,你可以在 LTE 用户节点上安装应用,通过因特网与远程应用进行通信。这可以通过一般的ns3 过程实现。 接下来是一个简单的例子,一个远程主机,如何设置下行通信,远程主机上有一个 UdpClient 应用,LTE 用户(与前面的代码片段使用相同的变量名)上有一个 PacketSink。

uint16_t dlPort = 1234;
PacketSinkHelper packetSinkHelper ("ns3::UdpSocketFactory",
                                  InetSocketAddress (Ipv4Address::GetAny (), dlPort));
ApplicationContainer serverApps = packetSinkHelper.Install (ue);
serverApps.Start (Seconds (0.01));
UdpClientHelper client (ueIpIface.GetAddress (0), dlPort);
ApplicationContainer clientApps = client.Install (remoteHost);
clientApps.Start (Seconds (0.01));

好了,现在你可以像往常一样开始你的仿真:

Simulator::Stop (Seconds (10.0));
Simulator::Run ();

参考文献

https://www.nsnam.org/docs/models/html/lte-user.html

时间: 2024-10-10 03:01:36

LTE Module User Documentation(翻译8)——核心网(EPC)的相关文章

LTE Module User Documentation(翻译)

LTE用户文档 (如有不当的地方,欢迎指正!) 1.背景 假定读者已经熟悉 ns-3 simulator ,能运行一般的仿真程序.如果不是的话,强烈推荐读者参考 [ns3tutorial]. 2. 使用概述 ns-3 LTE 模块是一个软件库,允许仿真LTE网络,一些情况下还可以仿真核心网 Evolved Packet Core (EPC).仿真过程通常涉及以下几个步骤: 定义仿真场景. 编写程序,重建期望的仿真场景拓扑/架构,通过使用 ns3::LteHelper API(定义在 src/lt

LTE Module User Documentation(翻译11)——配置用户测量

LTE用户文档 (如有不当的地方,欢迎指正!) 17 Configure UE measurements 仿真中激活的用户测量配置取决于所选的 “consumers”,例如切换算法.用户可能需要添加自己的配置,有以下几种方式: 在基站 RRC 实体中直接配置: 配置现有的切换算法:并 开发一种新的切换算法. 本节只讲述第一种方法.第二种方法在章节 Automatic handover trigger 中,第三种方法在设计文档的 Handover algorithm 中有讲. 在基站 RRC 直接

LTE Module User Documentation(翻译15)——示例程序、参考场景以及故障检测和调试技巧

LTE用户文档 (如有不当的地方,欢迎指正!) 21 Examples Programs(示例程序) 路径 src/lte/examples/ 包含一些示例仿真程序,这些例子表明如何仿真不同的LTE场景. 22 Reference scenarios(参考场景) 文献中可以找到大量的参考仿真场景.下面我们列出了其中一部分: [TR36814] 的 A.2 节提到的系统仿真场景. dual stripe model [R4-092042], 在示例程序  src/lte/examples/lena

LTE Module User Documentation(翻译5)——Mobility Model with Buildings

LTE用户文档 (如有不当的地方,欢迎指正!) 8 Mobility Model with Buildings 我们现在通过例子解释如何在 ns-3 仿真程序中使用 buildings 模型(特别是 MobilityBuildingInfo  和 BuildingPropagationModel 类) 来设置 LTE 仿真场景(包括建筑物和室内节点). 1. 包含的头文件: #include <ns3/mobility-building-info.h> #include <ns3/bui

LTE Module User Documentation(翻译4)—— 使用 Fading Trace

LTE用户文档 (如有不当的地方,欢迎指正!) 7 使用 Fading Trace 本节描述如何在 LTE 仿真中使用 fading traces . (1)生成 Fading Traces  通过使用专用的 matlab 脚本 (/lte/model/fading-traces/fading-trace-generator.m)提供的代码生成 fading traces .该脚本包含典型的 taps 配置,用于 3 种 3GPP 场景(例如,行人.车辆和城市,定义在 Annex B.2 of 

LTE Module User Documentation(翻译6)——物理误差模型、MIMO模型、天线模型

LTE用户文档 (如有不当的地方,欢迎指正!) 9 PHY Error Model 物理误差模型包含数据误差模型和下行控制误差模型,两者默认为激活.可以使用 ns-3 属性系统去激活,具体为: Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false)); Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorMod

LTE Module User Documentation(翻译7)——无线环境地图(REM)、AMC 模型 和 CQI 计算

LTE用户文档 (如有不当的地方,欢迎指正!) 12 Radio Environment Maps 通过使用类 RadioEnvironmentMapHelper  是可能输出文件 Radio Environment Map (REM) 的,例如一个统一的 2D 网格值,表示下行基站(在每个点有最强的信号)的信噪比,可以指定 REM 是否应生成数据或控制信道. 并且,用户可以设置 RbId, 它表示 REM 将生成. 默认情况下,RbId 为 -1 ,表示 REM 将生成来自所有 RBs 的平均

LTE Module User Documentation(翻译12)——X2切换(X2-based handover)

LTE用户文档 (如有不当的地方,欢迎指正!) 18 X2-based handover 正如 3GPP 定义的,切换是改变用户服务小区的连接方式的过程.这一过程中涉及的两个基站通常称为源基站和目标基站. 为了使能仿真中 X2 切换的执行,有三个条件必须要满足.首先,仿真中必须使能 EPC(见 Evolved Packet Core (EPC) ). 其次,两个基站之间必须配置 X2 接口,这一点必须在仿真程序中明确交待: lteHelper->AddX2Interface (enbNodes)

网络分流器|100G LTE核心网采集器

网络分流器|100G LTE核心网采集器|戎腾网络研制成功.电信运营商提供的无线上网服务在升级到3G.LTE(4G)之后,无线核心网络的链路带宽也升级到了10G链路,这类链路使用GRE或者GTP等更为复杂的隧道协议,从中提取各终端的报文,并进行解压缩.过滤和分流等操作时更为复杂,需要专用的流量采集系统才能解决报文的获取问题.LTE核心网(EPC)采用了多种不同的协议,如GRE.GTP.SCTP等来完成用户的接入.安全认证.移动管理等功能,这些协议在不同的接口上使用,如SCTP协议在S1-MME口