ns-3模拟基本流程

1)选择或开发相应的模块

根据实际仿真对象和仿真场景选择相应的仿真模块:如是有线局域网络(CSMA)还是无线局域网络(Wi-Fi);节点是否需要移动(mobility);使用何种应用程序(application);是否需要能量(energy)管理;使用何种路由协议(internet、aodv等);是否需要动画演示等可视化界面(visualizer、netanim)等。

2)编写网络仿真脚本

有了相应的模块,就可以搭建网络仿真环境。ns-3仿真脚本支持在2种语言:C++和python,但是2种语言的API接口是一样的(部分API还没有提供python接口)。

编写ns-3仿真脚本的大体过程如下:

  • 生成节点:ns-3中节点相当于一个空的计算机外壳,接下来要给这个计算机安装网络所需要的软硬件,如网卡,应用程序,协议栈等。
  • 安装网络设备:不同的网络类型有不同的网络设备,从而提供不同的信道,物理层和MAC层,如CSMA,Wi-Fi,WiMAX和point-to-point等。
  • 安装协议栈:ns-3网络中一般是TCP/IP协议栈,依据网络选择具体协议,如是UDP还是TCP,如何选择不同的路由协议(OLSR、AODV、Global等)并为其配置相应的IP地址,ns-3既支持IPv4也支持IPv6。
  • 安装应用层协议:依据选择的传输层协议选择相应的应用层协议,但有时需要自己编写应用层产生网络数据流量的代码。
  • 其他配置:如节点是否移动,是否需要能量管理。
  • 启动仿真:整个网络场景配置完毕,启动仿真。

API(Application Programming Interface,应用程序编程接口)
是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

ns-3仿真的基本模型如下图所示:

搭建ns-3网络仿真场景和搭建实际网络类似,首先需要有网络节点,ns-3中使用节点Node的概念;节点需要有网络设备,类似于网络接口卡,ns-3中有网络设备Net Device的概念;网络设备通过传输媒体连接,ns-3中使用信道Channel的概念来代表传输媒体。其中,信道Channel和网络设备Net Device是对应的,CSMA网络设备对应CSMA的信道,Wi-Fi网络设备对应Wi-Fi的信道。

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

目的节点收到数据分组后从下往上逐层转交,由媒体信号转换成二进制,由二进制转换成数据帧,再由数据帧转换成IP数据分组,然后经由传输层的端口号转交给相应的进程(应用程序application)。这样就在ns-3中完成了一次和真实网络极为相近的完整数据传输过程。

3)仿真结果分析

仿真结果一般有两种,一种是网络场景,如节点拓扑结构,移动模型等,一般可以通过可视化界面(pyviz或NetAnim)可以直接观测到。另一种是网络数据,它除了可以在可视化界面下进行简单统计,也可以通过专门的统计框架(stats)或者通过ns-3提供的追踪(tracing)系统收集,统计和分析相应的网络数据,如数据分组的延迟、网络流量、分组丢失率等。

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

有时实际结果与预期相差较大,这时就需要分析原因(是网络参数有问题还是协议本身有问题),然后重新设计,仿真,直到达到满意的结果。

ns-3中的一些概念概述:

结点Node

在因特网术语中,连接到网络的计算设备称为主机终端系统。由于ns-3是网络模拟器,而不是特定的Internet模拟器,因此我们故意不使用术语host,因为它与Internet及其协议密切相关。相反,我们使用一个更通用的术语,也可以用于源于图论的其他模拟器——节点

在ns-3中,基本计算设备抽象称为节点。这个抽象在C ++中表示由类Node表示(在ns-3中也这样表示)。 Node类提供了用于在模拟中管理计算设备的表示方法。

我们应该将Node视为要添加功能的计算机。添加应用程序、协议栈、外围卡及其相关驱动程序,使计算机能够做有用的工作。

应用Application

通常,计算机软件分为两大类:系统软件、应用程序。
系统软件根据某种计算模型组织各种计算机资源,如内存,处理器周期,磁盘,网络等。用户通常运行应用程序获取并使用由系统软件控制的资源来实现某个目标。

通常,系统和应用程序软件之间的分离线是在操作系统中发生的权限级别更改时进行的。在ns-3中没有真正的操作系统概念,特别是没有特权级别或系统调用的概念。但是,我们确实有应用程序的概念。正如软件应用程序在计算机上运行以在“现实世界”中执行任务一样,ns-3应用程序在ns-3节点上运行,以在模拟世界中驱动模拟。

在ns-3中,生成一些要模拟的活动的用户程序的基本抽象是应用程序。这个抽象在C ++中由类Application表示。 Application类提供了在模拟中管理我们的用户级应用程序版本的表示的方法。期望开发人员在面向对象的编程意义上专门化Application类来创建新的应用程序。

信道Channel

在现实世界中,人们可以将计算机连接到网络,数据在这些网络中流动的媒体通常称为信道。将以太网电缆连接到墙上的插头时,将计算机连接到以太网信道。在ns-3的模拟世界中,将节点连接到表示通信信道的对象。这里基本的通信子网抽象称为信道,并由C ++类Channel表示。

Channel类提供了管理通信子网对象和将节点连接到它们的方法。在面向对象编程意义上,开发人员也可以专门使用信道。Channel specialization可以模拟像电线一样简单的东西,还可以模拟像大型以太网交换机那样复杂的东西,或者在无线网络的情况下充满障碍物的三维空间。

网络设备Net Device

过去,如果您想将计算机连接到网络,则必须购买特定类型的网线和称为需要在计算机中安装的外围设备卡的硬件设备。如果外围设备卡实现了某些网络功能,则称为网络接口卡或网卡。今天,大多数计算机都内置了网络接口硬件,用户看不到这些构建块。

如果没有软件驱动程序来控制硬件,NIC(network interface controller网卡)将无法运行。在Unix(或Linux)中,一块外围硬件被归类为Device。设备使用设备驱动程序进行控制,网络设备(NIC)使用网络设备驱动程序(统称为网络设备)进行控制。在Unix和Linux中,可以通过名称(例如eth0)来引用这些网络设备。

在ns-3中,网络设备抽象涵盖软件驱动程序和模拟硬件网络设备“安装”在节点中,以使节点能够通过信道与模拟中的其他节点通信。就像在真实计算机中一样,节点可以通过多个NetDevices连接到多个通道。

网络设备抽象在C ++中由NetDevice类表示。 NetDevice类 提供了管理 Node和Channel对象连接的方法;并且可能由面向对象编程意义上的开发人员专门化。

拓扑助手Topology Helpers

在实际网络中,我们将找到具有添加(或内置)NIC的主机。在ns-3中,我们会说你会发现带有NetDevices的节点。

在大型模拟网络中,需要在Node、NetDevices 和Channels之间安排许多连接。由于将NetDevices连接到节点、将NetDevices连接到通道、分配IP地址等都是ns-3中的常见任务,因此我们提供了所谓的拓扑辅助工具,以使其尽可能简单。例如,可能需要许多不同的ns-3核心操作来创建NetDevice、添加MAC地址、在节点上安装该网络设备、配置节点的协议栈,然后将NetDevice连接到Channel,将多个设备连接到多点通道然后将各个网络连接到互联网络中将需要更多操作。ns-3提供拓扑辅助对象,将这些许多不同的操作组合成一个易于使用的模型,以方便使用。

ns-3模拟基本流程(附ns-3中的一些概念概述)相关推荐

  1. NS2仿真:使用NS仿真软件模拟简单网络模型

    NS2仿真实验报告1 实验名称:使用NS仿真软件模拟简单网络模型 实验日期:2015年3月2日~2015年3月7日 实验报告日期:2015年3月8日 一.实验环境(网络平台,操作系统,网络拓扑图) 运 ...

  2. 计算机一级考模拟试题,计算机一级MSOffice考前模拟试题「附答案」

    计算机一级MSOffice考前模拟试题「附答案」 一级分为DOS版和Windows版,考核应试者计算机基本知识和使用微机系统的初步能力.那么计算机一级MSOffice考试会怎么考?以下仅供参考! 1) ...

  3. CV之NS之ME/LF:图像风格迁移中常用的模型评估指标/损失函数(内容损失、风格损失)简介、使用方法之详细攻略

    CV之NS之ME/LF:图像风格迁移中常用的模型评估指标/损失函数(内容损失.风格损失)简介.使用方法之详细攻略 目录 图像风格迁移中常用的几种损失函数 1.内容损失 2.风格损失 3.定义总损失 图 ...

  4. 高考2017c语言试卷,2017高考语文模拟考试试卷附答案

    2017高考语文的备考需要考生多做模拟考试试卷查漏补缺.接下来,学习啦小编为你分享2017高考语文模拟考试试卷,希望对你有帮助. 2017高考语文模拟考试试卷附答案一.阅读80分 (一)阅读下文,完成 ...

  5. 微型计算机属于数字模拟混合计算机,2017年计算机基础题模拟试题「附答案」...

    2017年计算机基础题模拟试题「附答案」 一.单选题 1.计算机中能直接被CPU存取的信息是存放在___A____ 中. A.内存 B.光盘 C.硬盘 D.软盘 2.D/A转换器的功能是将___A__ ...

  6. switch语句的ns图怎么画_visio画ns图.doc

    visio画ns图 怎样用visio画ns图?[电脑软件] 悬赏点数?10?1个回答?515次浏览 四川过客2008-9-21 11:37:17125.71.125.*xi...@举报 怎样用visi ...

  7. 计算机网络应用模拟试卷,《计算机网络应用基础》模拟试卷(八)(附答案)

    <计算机网络应用基础>模拟试卷(八)(附答案) 一.是非题(每题2分,共20分.正确的在括号内划√,错的划×,并说明判断的理由.) ()1.城域网采用LAN技术. ()2.帧中继的设计主要 ...

  8. 《 计算机应用基础》模拟试卷,《计算机应用基础》模拟试卷一(附答案).doc

    <计算机应用基础>模拟试卷一(附答案) <计算机应用基础>模拟试卷一(附答案) 一.单选题(100题,每一个题目1分) 1.下列四种软件中属于应用软件的是( ). A.BASI ...

  9. c语言程序设计a考试题,C语言程序设计模拟试题A(附答案).doc

    C语言程序设计模拟试题A(附答案) 干那症岭板怕齿朔恩汪焦猜采箍虑汲奋鲜虎瞅改谗盎张雍添右郭井揭汐劫懒短迅债畜竖府诫灭敛滔监鲤钞酥倡彩眠次跑秸注一投嫌兵十曾毕猖缝赂险娱舍恕检耶幕鞋答疆虐刘胖熔猎乱存辜 ...

最新文章

  1. 从hotspot底层对象结构理解锁膨胀升级过程||深入jdk源码理解longadder的分段cas优化机制——分段CAS优化
  2. idea mac 快键键
  3. Linux 权能综述
  4. handler 消息处理机制
  5. 参加管理课程所获的 之一
  6. 操作对象_有进取心的机器人学习对象操作的基本原理
  7. redis连接被拒绝
  8. 是不让页面重新渲染元素~·
  9. 算法与数据结构1800题 树和二叉树
  10. thought work java,ThoughtWorks
  11. linux下firefox浏览器的flash版本过低解决方案
  12. 记GMGDC2013大会
  13. 【Python】pandas的使用——CSV文件、Excel文件、TXT文件之间的转换
  14. Mac OSX 安装qemu
  15. python 内置函数、匿名函数
  16. 面向单片机编程(三)- 数码管显示
  17. 宝塔下安装nodejs
  18. 手机qq2.0 for android,QQ农场手机版|QQ农场for Android 2.02 官方安装版_手机游戏 www.qqtn.com...
  19. 图像分析方法之一(学习与研究笔记)
  20. linux网络配置文件 只读 无法保存报错

热门文章

  1. http状态码、含义大全
  2. 弹道控制C++模拟教程
  3. 84、【backtrader期货策略】一个基于基差套利或者基差投机的期货策略
  4. 根据文件流下载表格数据Excel形式
  5. 指标实现层级_有了指标怎么用层次分析法建立模型?
  6. QT制作360悬浮球
  7. 2016版excel_Python使用openpyxl和pandas处理Excel文件实现数据脱敏案例一则
  8. 安卓移动开发技术--微信界面设计
  9. 创业板、科创板也适用的通达信涨停指标公式怎么写?
  10. 正则表达式匹配——《剑指offer》