NS_3仿真中抽象概念的明确

转自: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 对象,将这些不同的操作组成一个易于使用的模型。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值