LTE用户文档

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

15 Using the EPC with emulation mode(使用仿真方式的 EPC)

 
 
在上一节中,我们使用点对点链路连接基站和服务网关 (S1-U 接口) 以及在基站间连接 (X2-U 和 X2-C 接口)。 LTE 模块支持使用仿真(emulation )链路而不是点对点链路。这只是通过下列代码将创建 LteHelper 替换为 EpcHelper 来实现的:
 
Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
Ptr<EmuEpcHelper> epcHelper = CreateObject<EmuEpcHelper> ();
lteHelper->SetEpcHelper (epcHelper);
epcHelper->Initialize ();
 
属性 ns3::EmuEpcHelper::sgwDeviceName 和 ns3::EmuEpcHelper::enbDeviceName 分别用于在服务网关和基站设置传输 S1-U、 X2-U 和 X2-C 接口的设备名称。现在我们将讲解这个是如何在一个例子中实现的,我们使用虚拟以太网接口来执行程序 lena-simple-epc-emu 。
 
首先,我们正确地编译 ns-3 :
 
# configure
./waf configure --enable-sudo --enable-modules=lte,fd-net-device --enable-examples # build
./waf
 
然后,我们设置两个虚拟以太网接口,打开 wireshark 观察业务流的走向:
 
# note: you need to be root

# create two paired veth devices
ip link add name veth0 type veth peer name veth1
ip link show # enable promiscuous mode
ip link set veth0 promisc on
ip link set veth1 promisc on # bring interfaces up
ip link set veth0 up
ip link set veth1 up # start wireshark and capture on veth0
wireshark &
现在使用模拟时钟运行实例程序:
 
./waf --run lena-simple-epc-emu --command="%s --ns3::EmuEpcHelper::sgwDeviceName=veth0 --ns3::EmuEpcHelper::enbDeviceName=veth1"
使用wireshark,你应该会先看到 ARP 协议,然后看到上行和下行链路有一些 GTP 数据包交换。
 
示例程序的默认设置为 1 个基站和 1 个用户。你可以通过命令行参数来修改它,例如:
 
./waf --run lena-simple-epc-emu --command="%s --ns3::EmuEpcHelper::sgwDeviceName=veth0 --ns3::EmuEpcHelper::enbDeviceName=veth1 --nEnbs=2 --nUesPerEnb=2"
 
获取一系列可用的参数:
 
./waf --run lena-simple-epc-emu --command="%s --PrintHelp"
为了运行实时时钟:事实证明默认的调试版本对于实时来说太慢。使用 BestEffort 方式软化实时约束并不是一个好主意:一些东西可能出错(例如,ARP 失败),如果这样的话, 你将得不到任何数据包输出。因此,你需要一个良好的硬件和具有静态链接的优化编译模块(optimized build with statically linked modules)。
 
./waf configure -d optimized --enable-static --enable-modules=lte --enable-examples --enable-sudo
 
然后运行实例程序:
 
./waf --run lena-simple-epc-emu --command="%s --ns3::EmuEpcHelper::sgwDeviceName=veth0 --ns3::EmuEpcHelper::enbDeviceName=veth1 --simulatorImplementationType=ns3::RealtimeSimulatorImpl --ns3::RealtimeSimulatorImpl::SynchronizationMode=HardLimit"
 
注意 HardLimit 设置,如果不能实时跟上,会造成程序终止。
 
本节描述的方法可以用于任何类型的网络设备。例如,  [Baldo2014] 描述了它是如何在一个真正的多层次 packet-optical 传输网络运行仿真 LTE-EPC 网络。
 
 
 

参考文献

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

LTE Module User Documentation(翻译9)——Using the EPC with emulation mode的更多相关文章

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

    LTE用户文档 (如有不当的地方,欢迎指正!) 14 Evolved Packet Core (EPC)   我们现在讲解如何编写一个仿真程序——除了 LTE 无线接入网外,还允许仿真 EPC. EP ...

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

    LTE用户文档 (如有不当的地方,欢迎指正!)     21 Examples Programs(示例程序)   路径 src/lte/examples/ 包含一些示例仿真程序,这些例子表明如何仿真不 ...

  3. LTE Module User Documentation(翻译14)——Uplink Power Control(上行功率控制)

    LTE用户文档 (如有不当的地方,欢迎指正!) 20 Uplink Power Control(上行功率控制)   上行功率控制功能默认是开启的.用户可以通过设置布尔属性 ns3::LteUePhy: ...

  4. LTE Module User Documentation(翻译13)——频率复用算法(Frequency Reuse Algorithms)

    LTE用户文档 (如有不当的地方,欢迎指正!)   19 Frequency Reuse Algorithms(频率复用算法)   本节我们将描述如何在 LTE 仿真中使用频率复用(FR)算法.共有两 ...

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

    LTE用户文档 (如有不当的地方,欢迎指正!) 18 X2-based handover   正如 3GPP 定义的,切换是改变用户服务小区的连接方式的过程.这一过程中涉及的两个基站通常称为源基站和目 ...

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

    LTE用户文档 (如有不当的地方,欢迎指正!) 17 Configure UE measurements   仿真中激活的用户测量配置取决于所选的 “consumers”,例如切换算法.用户可能需要添 ...

  7. LTE Module User Documentation(翻译10)——网络连接(Network Attachment)

    LTE用户文档 (如有不当的地方,欢迎指正!) 16 Network Attachment(网络连接)   正如前面章节 Basic simulation program 所述,连接用户到基站时通过调 ...

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

    LTE用户文档 (如有不当的地方,欢迎指正!) 12 Radio Environment Maps   通过使用类 RadioEnvironmentMapHelper  是可能输出文件 Radio E ...

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

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

随机推荐

  1. P4 前端编译器p4c-bm、后端编译器bmv2命令安装 make error问题

    参考:Github 安装p4c-bm: sudo pip install -r requirements.txt sudo pip install -r requirements_v1_1.txt / ...

  2. git-配置公司账号

    1.初始化配置 git config --global user.name " abc" git config --global user.email "abc@123. ...

  3. gets(),fgets()的作用机制探究

    gets(),fgets() scanf("%d",&a)若接受形如 2 这样的输入后,缓冲区内会留一个\n,此后若调用gets等函数时会读出这个换行出现错误,需注意 fg ...

  4. WPF部署问题 解决:The application requires that the assembly...be installed in the GAC

    vs-->引用-->找到问题类库-->邮件属性--->特定版本-->false done

  5. 【MySQL学习笔记】MySQL权限表

    MySQL权限表,控制用户对数据库的访问,存在mysql数据库中,由mysql_install_db初始化,包括user,db,host,tables_priv,columns_priv,procs_ ...

  6. entity.Student@150f3932, entity.Student@1a740c6b 没有实体中的数据

    public class AppServerAction extends BaseAction {    /**     *      */ /**      * 初始化 “我的产品”列表 JSP页面 ...

  7. 传入一个label或者button,传入5s,6和6+的文字尺寸 快速定义文字大小

    func isIphone6() -> Bool { { return true } else { return false } } func isIphone6Plus() -> Boo ...

  8. selected对话框全选

    selected对话框全选 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  9. matlab编译器和程序发布

    如何把编写好的matlab程序转换成c/c++语言,如何编译m文件为可执行程序,如何在没有matlab配置环境的机器上运行你编译出来的可执行程序? 一:matlab的编译器设置 执行命令:mbuild ...

  10. OpenWrt——神奇的路由系统

    鉴于最近大家对这个系统比较感兴趣而且疑问很多所以本渣就整理下我对这个系统的理解和最实用的802.1x认证的理解.还望大家多多互相交流. 如果您时间紧张直接看最后的步骤,时间充裕的请仔细阅读,理解. O ...