IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> ns3--入门基础概念 -> 正文阅读

[网络协议]ns3--入门基础概念

一、网络仿真步骤

  1. 选择或开发相应模块
  2. 编写网络仿真脚本,其中包括:
    • 生成节点
    • 安装网络设备
    • 安装协议栈
    • 安装应用层协议
    • 其他配置
    • 启动仿真
  3. 仿真结果分析
  4. 根据仿真结果调整网络配置参数或修改源代码

二、ns3关键概念

(1)节点(Node)

? 设想为一台空的可以添加各种功能的计算机。为了使一台计算机有效工作,可以给它添加应用程序、协议栈、外设卡及驱动程序等。

C++中使用Node类描述节点。如果一个设备助手可能在大量得相同节点上安装设备,则可使用NodeContainer类追踪一组节点指针。

NodeContainer nodes;//创建节点指针

nodes.Create(2); //创建两个节点对象

创建节点后下一步是把节点连接到一个网络中。

(2)应用(Application)

? 在ns3中,需要被仿真的用户程序被抽象为应用。使用Application类描述,该类提供了管理仿真时应用层应用的各种方法。如两个Application类实例:UdpEchoClientApplication 和 UdpEchoServerApplication,这两个类由相应的Helper管理。这些应用用来发送和回应仿真网络中的数据分组。应用对象需要一个时间参数来”开始“产生数据通信并且可能在一个可选的时间点”停止“。如:

clientApps.Start(Seconds(2.0));//开始时间

clientApps.Stop(Seconds(10.0));//结束时间

(3)信道(Channel)

? 通常把网络中数据流流过的媒介称为信道。当你把网线插入到路由器时,就是通过信道将计算机与以太网连接。在ns3的模拟环境中,你可以把节点连接到代表数据交换信道的对象上。在这里,基本的通信子网这一抽象概念被称为信道,使用channel类描述。

一个信道实例可以模拟一条简单的线缆(wire),也可以模拟一个复杂的巨型以太网交换机,甚至是无线网络中充满障碍物的三维空间。常用的信道模型实例有:CsmaChannel、PointToPointChannel和WifiChannel。

举例来说,CsmaChannel信道模拟了一个可以用于实现载波侦听多路访问通信子网的媒介,这个信道具有和以太网相似的功能。如:

PointToPointHelper pointToPoint;

pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));//设置数据率

pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"))//设置延迟;

(4)网络设备(device)

? 计算机需要通过网络设备才能连接到网络上,如网卡(硬件设备)。而网卡需要软件驱动才能知道从何处取得需要发送至网络中的数据,以及将从网络中获取到的数据发送至计算机的哪个位置。

? 在ns3中,网络设备这一抽象概念相当于硬件设备和软件驱动的综合。ns3仿真环境中,网络设备安装在节点上,使得节点通过信道和其他节点通信。像真实计算机一样,一个节点可以通过多个网络设备同时连接到多条信道上。网络设备使用NetDevice类描述,NetDevice类提供管理连接其他节点和信道对象的各种方法,并且允许开发者以面向对象的方法来自定义。几个特定的网络设备有:CsmaNetDevice、PointToPointNetDevice和Wi-FiNetDevice。正如以太网卡被设计在以太网中工作一样,CamsNetDevice被设计在CSMA信道中工作,而PointToPointNetDevice在PointToPoint信道中工作,Wi-FiNetDevice在Wi-Fi信道中工作。

? 如果需要一个所有被创建的NetDevice对象列表,就需要使用一个NetDeviceContainer对象来存放它们,就像使用一个NodeContainer对象来存放所创建节点。如:

NetDeviceContainer devices;

devices = pointToPoint.Install (nodes);//为节点装载点对点网络设备

(5)拓扑帮助

? 如同现实网络中的主机都默认装有内置网卡一样,把网络设备连接到节点、信道、配置IP地址等在ns3是很普遍的任务,那么干脆提供“拓扑生成器”来使这个工作变得尽可能的容易。举例来说:创建一个网络设备,配置一个MAC地址,把此网络设备装载到节点上,设置节点的协议栈以及连接网络设备到一个信道,这些事情都需要许多分立的ns-3核心操作。而当需要把许多设备连接到多点信道,在网际间将单个网络设备进行连接时,则需要对ns-3核心进行更多的分立操作。此时提供拓扑生成器来整合这些大量分立的步骤,使其成为一个简单易用的操作。

? 很明显,Helper类可以极大地方便用户。例如TopologyReaderHelper类可以使得更容易配置和使用通用的TopologyReader。再如类InternetStackHelper是一个安装PointToPointHelper对象和点到点网络设备的网络协议栈的拓扑生成器,它会为每一个节点容器中的节点安装一个网络协议栈(如TCP、UDP和IP等)。如:

InternetStackHelper stack;

stack.Install (nodes);

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 13:09:53  更:2021-10-04 13:10:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/29 20:49:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码