转自:http://blog.csdn.net/And_w/article/details/68945016?locationNum=14&fps=1

概念概述

在我们需要真正开始看或者写 ns-3 代码之前,首先要做的是解释系统中的几个核心概念和抽象(abstraction)。其中的大部分可能对一些人来说是显而易见的,但我们建议花点时间阅读本部分,以确保你从一个坚实的基础开始。

关键抽象

在本节中,我们将回顾在网络(networking)中普遍使用但在 ns-3 中有特定含义的术语。

节点(Node)

网络术语中,连接到网络的计算设备被称为主机(host)有时也被称为终端系统(end system)。由于 ns-3 是网络模拟器,而不是特指互联网模拟器,我们故意不使用主机这个词,因为它紧密地与互联网及其协议联系在一起。相反,我们使用一个更通用的源自图论的也被用于其他模拟器的术语——节点。

在 ns-3 中基本计算设备抽象被称作节点。这种抽象在 C++ 中用 Node 类表示。Node 类提供管理仿真中计算设备表现的方法。

你应该将一个 Node 当作一台你将要添加功能的计算机。可以添加应用程序、协议栈和(有相关驱动的)外围卡(peripheral card)使这台电脑能够做有用的工作。我们在 ns-3 的使用了相同的基本模型。

应用(Application)

通常,计算机软件分为两大类。系统软件根据一些计算模型组织各类计算机资源,例如内存、处理器周期、磁盘、网络等。系统软件通常不使用这些资源来完成直接有益于用户的任务。应用获取和使用由系统软件控制的资源来完成用户的一些目标。

通常,系统软件和应用软件的分界线在于操作系统受限时特权级别的改变。在 ns-3 中没有真正的操作系统的概念尤其没有特权级别或者系统调用的概念。然而,我们有应用程序的概念。正如“真实世界”中,软件应用在计算机上运行执各种行任务,在模拟世界,ns-3 应用程序在 ns-3 节点上运行驱动模拟。

在 ns-3 中,对用户程序的基本抽象是应用。这种抽象在 C++ 中用 Application 类表示。Application 类提供管理在仿真中用户级应用的表现的方法。开发人员期望 Application 类能够在面向对象编程中定制以创建新的应用。 在本教程中,我们将使用定制的 Application 类被称为 UdpEchoClientApplication 和 UdpEchoServerApplication 类。 如你所料,这些应用程序组成一个客户端/服务器应用程序集,用于生成和回显模拟的网络数据包。

信道(Channel)

在现实世界中,它能够将计算机连接到网络。通常,在这些网络上数据流的介质称为信道。将以太网电缆连接到墙上的插头后,即可将计算机连接到以太网通信信道。在 ns-3 的模拟世界,节点连接到表示通信信道的对象上。 在这里,基本通信子网的抽象被称作信道在 C++ 中用 Channel 类表示。

Channel 类提供了管理通信子网对象和连接节点到它们之上的方法。信道也被开发者们用面向对象编程感定制。定制信道既可对简单如电线,复杂如大型以太网交换机建模。也可对三维空间中充满障碍物的无线网络建模。

在本教程中我们将使用的信道有 CsmaChannel、PointToPointChannel 和 WifiChannel。以 CsmaChannel 为例,建模了一个实现载波侦听多路访问( carrier sense multiple access,CSMA)通信介质的通信子网。这带给我们类以太网的功能。

网络设备(Net Device)

曾经,如果你想将计算机连接到网络,你必须购买特定种类的网线和一种被称作外围卡(peripheral card)的硬件设备。如果外围卡能够实现一些网络功能,则它们被称为网络接口卡(Network Interface Card)或网卡(NIC)。今天,大多数计算机都带有内置的网络接口硬件,用户看不到这些构件。

如果没有软件驱动程序来控制硬件,网卡将无法工作。在 Unix(或 Linux),一块外设被归类为设备(device)。设备被设备驱动(device driver)控制,网络设备(NIC)受网络设备驱动(network device driver)控制,它们统称为 net device。 在 Unix 和 Linux 中,你通过诸如 eth0 之类的名字来查找这些设备。

在 ns-3 中,net device 抽象涵盖了软件驱动和仿真硬件。一个 net device 被“安装”到一个节点中,以便在仿真中节点能和其他节点通过信道通信。就像在真实计算机中,节点可以经由多个 NetDevice 被连接到多个信道上。

Net device 的抽象在 C++ 中用 NetDevice 类表示。该 NetDevice 类提供用于管理 Node 和 Channel 对象连接的方法,并且可以由面向对象编程的开发者定制。在本教程中,我们将使用几个定制的 NetDevice 它们被称为 CsmaNetDevice、PointToPointNetDevice 和 WifiNetDevice。就像以太网网卡被设计成用于以太网网络,CsmaNetDevice 被设计成用于 CsmaChannel 、PointToPointNetDevice被设计成用于 PointToPointChannel、WifiNetNevice 被设计成用于 WifiChannel。

拓扑助手(Topology Helper)

在真实的网络中,你会发现添加了(或内置)网卡的主机。在 ns-3 中,我们要说的是,你会发现附加了 NetDevice 的 Node。在大型模拟网络中,你需要整理 Node、NetDevice、Channel 之间的各种连接。

因为 NetDevice 与 Node 之间的连接、NetDevice 与 Channel 之间的连接、分配 IP 地址等等都是 ns-3 中 常见的任务,所以我们提供了所谓的拓扑助手(Topology Helper)使这个尽可能容易。例如,创建 NetDevice、添加 MAC 地址、在节点上安装 Net Device、配置节点的协议栈,然后将 NetDevice连接到一个信道需要很多 ns-3 核心操作来完成。将多个设备连接到多点信道上,然后将各个网络连接在一起成为互连网络,甚至需要更多的操作才能完成。为了方便使用,我们提供了 Topology Helper 对象,将这些不同的操作组成一个易于使用的模型。

NS_3仿真中抽象概念的明确相关推荐

  1. [VCS]后仿真中的几个基本概念

    后仿真中的几个基本概念 网表: 网表是逻辑电路设计转化为物理实现的工作产品,网表可以有各种抽象级,例如门级网表和晶体管级网表.门级网表通常用于数字电路,晶体管级网表通常用于模拟电路. 门级网表 门级网 ...

  2. 【论文-笔记】雷达/电子干扰攻防对抗信号级仿真中提高仿真速度的思考和实践

    目录 摘要 1 信号级仿真的必要性 2 信号级仿真的速度问题及其解决出路 3 从仿真软件本身找速度问题的解决出路 3.1 提高模型抽象和实现的层次和水平 3.2 提高算法优化的层次和水平 3.3 提高 ...

  3. 微分方程计算机仿真国内外研究论文,功率键合图法在血液循环系统计算机仿真中的应用,毕业论文...

    摘要: 根据生物流体系统同工程流体系统所具有的相似性,将功率键合图建模 方法 应用 于人体血液循环系统的 计算 机仿真当中,对一个简化的人体血液循环系统模型进行了仿真 研究 ,所得仿真数据同基本的生理 ...

  4. 深入理解计算机系统(1.3)---金字塔形的存储设备、操作系统的抽象概念

    本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer3.html 上一章LZ给各位展示了一下hello程序的简单执行过程,可以看出在这一过程当中,系 ...

  5. 数据挖掘中的概念描述

    数据挖掘一般可分为描述型数据挖掘和预测型数据挖掘,概念描述讲的就是描述型数据挖掘. 一.概念描述基本知识 1.1 两种类型的数据挖掘 从数据分析角度出发,数据挖掘可分为两种类型: 描述型数据挖掘:以简 ...

  6. 字节跳动九周年张一鸣演讲:反对all-in、抽象概念和方法论

    字节跳动九周年张一鸣演讲:反对all-in.抽象概念和方法论 https://www.toutiao.com/i6945687911333380622/?tt_from=weixin&utm_ ...

  7. 【system verilog】继续探究IC前端仿真中的“时间”,timescale,timeunit/timeprecision设置

    前言 仿真中的时间单位/时间精度设置是保证验证环境稳定高效的重要手段,但是很多场景下却常常被忽视.如果没有设置合理的相对统一的时间单位/时间精度,不仅延时.打印等信息会不准确,多模块/环境协同时也会隐 ...

  8. 检测恶意软件分类模型中的概念漂移

    科研笔记 论文题目-检测恶意软件分类模型中的概念漂移 共形预测 (conformal prediction)是一种置信度预测器,它生成具有用户定义的错误率的预测.在某个置信度水平下,所有预测范围的那部 ...

  9. 考研数学一:高数、线性代数、概率论的一些个人认为抽象概念的形象解释【从几何、深度学习角度】

    抽象概念的解释: ①矩阵就是线性变换!矩阵就是线性变换!矩阵就是线性变换!#什么是线性变换?Ax=b Ax=0 这种线性方程就可以理解为线性变换 ②A~B :A相似于B,同一线性变换在不同基下的表示 ...

最新文章

  1. 20135306黄韧 信息安全系统设计基础期中学习总结
  2. 2013-09-11 [美国M198榴弹炮(后期型)--迷彩版]
  3. 1.3 torch_向量/矩阵操作
  4. Python的交互式界面 编写 .
  5. dplyr | 数据处理函数的功能速查!dplyr包中的十类操作函数汇总(下篇)
  6. ssh登录到esxi机器中后开关虚拟机
  7. 简单电话系统的电话数量分析
  8. oracle12c ora01017,ORACLE 12C 之 ORA-01017
  9. Cocos2dx--Cocos2dx与Android平台的跨平台调用
  10. android 安装在笔记本,笔记本安装安卓系统图解_笔记本电脑如何安装安卓系统-win7之家...
  11. 树莓派3b+指南(二十二)暴力解决默认声卡设置失效问题
  12. Illustrator CS2入门与实战视频教程
  13. 站在知乎肩上-做更强的自己(3)
  14. IE浏览器怎么查看cookie
  15. IDEA代码文件导航-Navigate使用技巧
  16. Python:NBA球员得分数据排行爬虫
  17. openpyxl操作excel 删除行
  18. Nowcoder. 链表的回文结构
  19. 因政策原因购房者违约的要如何处理
  20. Md5Md5盐值加密

热门文章

  1. 20180725-Ubuntu 18.04 开启隐藏录音降噪功能
  2. 【文献学习】静电纺丝
  3. 三分钟简单了解VR、AR、MR、XR是什么
  4. 历史上最完美的绿色版卡巴斯基8.0.0.506
  5. 贵州民族大学人文科技学院计算机协会,湖南人文科技学院社团电子俱乐部的介绍...
  6. Springmvc视频教程推荐
  7. WebRecon v1.0 旁注终结者
  8. 学习游戏建模的话,还不清楚电脑配置需要什么样的吗?「部分」
  9. python交流企鹅裙_神级程序员巧用python开发王者荣耀把妹神器,一路升级上王者!...
  10. GFS 论文阅读笔记