ns3学习之ns3模拟基本流程
1选择或开发相应模块:根据实际仿真对象和仿真场景选择相应的仿真模块:如果是有线局域网络(CSMA)还是无线局域网络(Wi-Fi);节点是否需要移动(mobility);使用何种应用程序(application);是否需要能量(energy)管理;使用何种路由协议(internet、aodv等);是否需要动画演示等可视化界面(visualizer、netanim)等。如果要搭建的网络是比较新的网络,如延迟容忍网络(DTN)等,需要开发设计协议,如路由协议、移动模型、能量管理模型等。
2编写网络仿真脚本:有了相应的模块,就可以搭建网络仿真环境,ns3仿真脚本支持两种语言:C++和Python,但是两种语言的API接口是一样的,部分API可能还没有提供Python接口。编写ns3仿真脚本的大体过程如下。
生成节点:ns3中节点相当于一个空的计算机外壳,接下来要给这个计算机安装网络所需要的软硬件,如网卡、应用程序、协议栈等。
安装网络设备:不同的网络类型有不同的网络设备,从而提供不同的信道、物理层和MAC层,如CSMA、WiFi、WiMAX和point-to-point等。
安装协议栈:ns3网络中一般是TCP/IP协议栈,依据网络选择具体协议栈,如是UDP还是TCP,选择何种不同的路由协议(OLSR、AODV和Global等)并为其配置相应的IP地址,ns3即支持IPv4也支持IPv6。
安装应用层协议:依据选择的传输层协议选择相应的应用层协议,但有时需要自己编写应用层产生网络数据流量的代码。
其他配置:如节点是否移动,是否需要能量管理等。
启动仿真:整个网络场景配置完毕,启动仿真。
ns3仿真的基本模型如下图所示,搭建ns3网络仿真场景和搭建实际网络类似,首先需要有网络节点,ns3中使用节点的概念;节点需要有网络设备,类似于网络接口卡,ns3中有相应网络设备的概念;网络设备通过传输媒体连接起来,ns3中使用信道的概念来代表传输媒体,设置信道延迟等属性,并且和实际网络相似;信道和网络设备是对应的,CSMA网络设备是对应的,CSMA网络设备对应CSMA的信道,WiFi网络设备对应WiFI的信道。
以上概念使网络节点实现了物理连接,但要实现通信,还需要软件支持,也就是协议,应用层产生数据,利用类socket编程(和真实的BSD socket很像)实现数据分组的向下传递,数据分组通过协议栈--TCP/IP向下传递给网络设备(可以简单理解为网卡),该网络设备包括MAC层、物理层协议,于是数据分组就像在真实网络中流动一样,由数据帧转换成二进制流,最终变成信号通过媒体信道传输到目的节点。
目的节点收到数据分组后从下层往上逐层转交,由媒体信号转换成二进制流,由二进制转换成数据帧,再由数据帧转换成IP数据分组,然后经由传输层的端口号转交给相应的进程(应用程序application),至此在ns3中完成了一次和真实网络及其相近的完整数据传输过程。
3.仿真结果分析
仿真结果一般有两种:一种是网络场景,二是网络数据。网络场景如节点拓扑结构、移动模型等,一般通过可视化界面(PyViz或NetAnim)可直观观测到;网络数据也可在可视化界面下有简单的统计,此外,可以通过专门的统计框架(status)或者自行通过ns3提供的追踪(tracing)系统收集、统计和分析相应的网络数据,如数据分组的迟延、网络流量、分组丢失率和节点消息队列等。
4.依据网络仿真结果调整网络配置参数或修改源代码
有时实际结果与预期结果相差较远,这时我们要分析原因,是网络参数有问题,还是协议本身有出入等,然后再重新设计,重新仿真,如此反复,直到达到满意的结果。
————————————————
版权声明:本文为CSDN博主「特立独行的一只miao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41816035/article/details/86646716