NS3模拟基础(转)

1.NS3目录结构

Waf是基于Python开发的编译工具,ns-3系统本身和将要写的仿真代码都由waf负责编译运行。

Scratch目录一般存放用户脚本文件,也可以把要运行的例子拷贝到该目录下。

Example是ns-3提供的关于如何使用ns-3的例子,包含许多模块的使用,如能量、路由、无线网络等。

Doc目录是帮助文档,可以使用./waf --doxygen编译本地Doxygen文档。

Build目录是ns-3编译目录,包含编译文件时使用的共享库和头文件(build/ns3)。

Src是ns-3源码目录。

模块里面的wscript文件结构是固定的,用来注册模块中包含的源码和使用其他模块情况。Model目录包含模块代码的.cc和.h文件。Helper目录存放的是模块对应的helper类代码的源文件。Test目录包含的是模块设计者编写的模块测试代码,而examples目录存放的是应用该模块的实例代码。Doc是帮助文档,bindings目录是模块用来绑定python语言的。

常用模块:

Core:ns-3的内核模块,实现了ns-3的基本机制,如智能指针(Ptr)、属性(attribute)、回调(callback)、随机变量(random ariable)、日志(logging)、追踪(tracing)和事件调度(event scheduler)等内容。

Network:网络数据分组(packet)的模块,一般仿真会用到。

Internet:实现了关于TCP/IPv4和IPv6的相关协议族,包括IPv4、IPv6、ARP、UPP、TCP、邻居发现和其他相关协议,目前大多数网络都是基于Internet协议栈的。

Applications:集中常用的应用层协议

Mobility:移动模型模块

Topolopy-read:读取指定轨迹文件数据,按照指定格式生成相应的网络拓扑。网络协议时能量不得不考虑。

Status:统计框架模块,方便ns-3仿真的数据收集、统计和分析。

Tools:统计工具,包括统计作图工具gnuplot的接口和使用。

Visualizer:可视化界面工具PyViz

Netanim:动画演示工具Netnim

Propagation:传播模型模块

Flow-monitor:流量监控模块。

下面是几种典型的网络模块。

Point-to-point:实现点对点通信的网络

CSMA:实现了基于IEEE802.3的以太网络,包括MAC层、物理层和媒体信道。

Wifi:如何实现基于IEEE 802.11 a/b/g的无线网络,可以是有基础设施的也可以是ad hoc网络。

Mesh:实现基于IEEE 802.11s的无线mesh网络。

Wimax:实现了基于IEEE802.16标准的无线城域网络。

LTE:(long term evolution,长期演进)是第三代合作伙伴计划(3GPP,3rd generation partnership project )主导的通用移动通信系统(UMTS,universal mobile telecommunications system)技术的长期演进。

UAN:ns-3的水声通信网络(UAN,underwater acoustic network)模块,能仿真水下网络场景。实现了信道、物理层和MAC层。

对新技术:

Click:ns-3中集成的可编程模块化的软件路由(the click modular router)。

Openflow:在ns-3中仿真OpenFlow交换机。

MPI:并行分布式离散事件仿真,ns-3实现了标准的信息传递接口(MPI,message passing interface)。

Emu:ns-3可以集成到实验床和虚拟机环境下。

2.NS-3模拟基本流程

使用ns-3进行网络仿真时,一般经过一下4个步骤:

1、选择或开发相应模块。

根据实际仿真对象和仿真场景选择相应的仿真模块。

如有限局域网络(CSMA),无线局域网络(Wi-Fi);

节点是否需要移动(mobility);

使用何种应用程序(application);

是否需要能量管理(energy);

使用何种路由协议(Internet、aodv等);

是否需要动画演示(visualizer、netanim)等

如果搭建的网络比较新,读者就需要开发自己设计的协议

2、编写网络仿真脚本:C++或者Python。

编写脚本过程:

1)生成节点(如网卡、应用程序、协议栈等)

节点相当于一个空的计算机外壳,接下来要给计算机安装网络所需要的软硬件,如网卡、应用程序、协议栈等

2)安装网络设备(如CSMA、WiFi、wimax、point-to-point)

不同的网络类型有不同的网络设备,从而提供不同的信道、物理层和mac层

3)安装协议栈:ns-3一般是TCP/IP协议栈。

依据网络选择具体协议(如udp还是tcp)、选择路由协议(olsr、aodv、global等)并为其配置ip地址

4)安装应用层协议

依据选择的传输层协议选择相应的应用层协议,有时需要自己编写应用层产生网络数据流量的代码。

5)其他配置(如节点是否要移动,是否要能量管理)

6)启动仿真。

网络场景配置完成,启动仿真。

以上概念使网络节点实现了物理连接,要实现通信还需要软件支持,也就是协议,应用层产生数据,利用类socket编程实现数据分组的向下传递,数据分组通过协议栈tcp、ip向下传递给网络设备(可简单理解为网卡),该网络设备包括mac层物理层协议,于是数据分组就像在真实网络中流动一样,由数据帧转换成二进制流,最终变成信号通过媒体信道传输到目的节点。

目的节点收到数据分组后从下往上逐层转交,由媒体信号转换成二进制,二进制转换成数据帧,再转换成IP数据分组,然后经由传输层的端口号转交给相应进程。

3、仿真结果分析。

仿真结果有两种:一种是网络场景,另外一种是网络数据。

网络场景,如节点拓扑结构、移动模型等,一般通过可视化界面(pyviz或netanim)可直观观察到

网络数据也可在可视化界面下有简单统计。此外可以通过专门的统计框架(status)或自行通过ns3提供的追追踪系统(tracing)收集、统计、分析相应的网络数据,如数据分组的延迟、网络流量、分组丢失了、节点消息缓存队列

4、依据仿真结果调整网络配置参数或修改源代码

转自:https://blog.csdn.net/jocelyn_osshun/article/details/77765892

你可能感兴趣的:(NS3模拟基础(转))