ns3入门案例1 first.cc

1、目录结构

example:1、根文件下自带示例结构,作为良好的参考资源

                  2、src环境下中各模块中example作为资源

build: 编译后文件以及可执行文件

src:各模块源代码

2、新代码运行

将新脚本放在scratch文件夹中,该目录默认在waf编译环境内。可以通过直接编译./waf运行


first代码解析

拓扑:点对点网络---最简单

1 头文件

脚本通过各个模块提供的API进行网络模拟,每个模块的API放在“模块名-module.h”下。其中core与network为必须模块。另外,脚本中使用非ns3库中函数,也需要在这一步添加

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"

2 名字空间

将ns3项目与非ns3项目分离。使用标准库函数需要添加std名字空间,如

using namespace ns3;

3 NS_LOG_COMPONENT_DEFINE 

脚本使用宏定义打印辅助信息

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

4 int main()函数

读取命令行参数、设置模拟单元、开启log组件

  Time::SetResolution (Time::NS);LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);

5、网络拓扑创建

基本设置节点:Node

ns3中节点、信道、与节点中连接信道的网络设备分别对应于Node、Channel、NetDevice三个类(英文名字可以看出)。其中,信道与网络设备有着与之对应的多个子类。该网络中使用助手类构建网络(--Helper)。代码设置节点。设置PPP【点对点】的属性,并通过Install()在节点中安装设备。Install()返回NetDevice对象。

  NodeContainer nodes;nodes.Create (2);PointToPointHelper pointToPoint;pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));NetDeviceContainer devices;devices = pointToPoint.Install (nodes);

6、安装TCP/IP协议族

安装协议,其中包括:TCP和UDP。网络层的IP与路由协议

  InternetStackHelper stack;stack.Install (nodes);Ipv4AddressHelper address;address.SetBase ("10.1.1.0", "255.255.255.0");Ipv4InterfaceContainer interfaces = address.Assign (devices);

通过InternetStackHelper助手安装协议栈stack,并通过Intall(nodes)安装在节点中

IP地址通过AddressHelper设置并通过Assign()函数安装在节点中设备中。

7 安装应用程序

可以有不同的应用程序协议分发模块,first采用UdpEcho应用程序。

利用服务器助手,初始化监听9号端口。利用服务器助手将其安装在其中的一个节点中,编号为1,同样使用Install()函数,并设置在1s后启动,10s后结束。

  UdpEchoServerHelper echoServer (9);  ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));serverApps.Start (Seconds (1.0));serverApps.Stop (Seconds (10.0));

 客户端助手接收来自1编号的IP地址,并从9号端口接收。MaxPackets、Interval、PacketSize分别对应echoClient的三个属性。为最大发送分组数、发送间隔与发送包裹大小(负载)。客户端安装在结点0中,在2s时开始,10s时结束。

  UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);echoClient.SetAttribute ("MaxPackets", UintegerValue (1));echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));echoClient.SetAttribute ("PacketSize", UintegerValue (1024));ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));clientApps.Start (Seconds (2.0));clientApps.Stop (Seconds (10.0));

 8、数据生成

first未涉及

9、启动与结束

  Simulator::Run ();Simulator::Destroy ();return 0;

执行之前定义的操作。Run()按顺序执行;Destroy()执行清除操作。


以上为first中所有操作,对于整体ns3把握还不完善。需要理解过程后进一步通过案例分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业以太网交换机都有哪些作用

工业以太网交换机由于使用及定位的关系,区别于商业交换机,它更关注稳定性,耐高温,耐振动,耐腐蚀等一些工业特性。工业以太网交换机以其较高的防护等级(一般IP40)、较强的电磁兼容性(EMS 4级&…

ubuntu下面 将桌面换成 英文

1. 我们可以先将目录都改成英文的。 export LANGen_US 执行 xdg-user-dirs-gtk-update 这时会弹出一个配置界面,将所有中文的用户目录切换到英文。选中不再提示,确定。 这时,会删除没有内容的用户目录,但有内容的用户目录会保…

光纤交换机是什么,光纤交换机的作用是什么?

随着网络的发展,先后出现了交换机、路由器、电话光端机等网络设备,在数据存储网络中,光纤交换机起到了重要的作用。今天飞畅科技的小编来为大家介绍下光纤交换机及光纤交换机的作用,一起来看看吧! 光纤交换机的简介 光…

ns3 入门案例2:third.cc

代码分析 1 头文件 #include "ns3/core-module.h" #include "ns3/point-to-point-module.h" #include "ns3/network-module.h" #include "ns3/applications-module.h" #include "ns3/mobility-module.h" #include "n…

光纤交换机产品功能介绍

光纤交换机是一种高速的网络传输中继设备,又叫做光纤通道交换机、SAN交换机,光纤传输的优点是速度快、抗干扰能力强。那么,光纤交换机有哪些功能呢?接下来我们就跟随飞畅科技的小编一起来看看吧! 通道协议支持 SAN交换…

java8 streams_使用Java 8 Streams进行编程对算法性能的影响

java8 streams多年来,使用Java进行多范式编程已经成为可能,它支持面向服务,面向对象和面向方面的编程的混合。 带有lambda和java.util.stream.Stream类的Java 8是个好消息,因为它使我们可以将功能性编程范例添加到混合中。 确实&a…

光纤交换机光纤通道协议介绍

光纤通道(FC,Fibre Channel)协议是美国国家标准所指定的一种串行高速、低延时、低误码的标准协议能够为存储设备、IP 数据网、音频流等应用提供高速数据传输的骨干网络技术。随着光纤通道在不同领域的应用,在光纤通道协议的基础上…

解决E: 仓库 “http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic Release” 没有 Release 文件。

转载声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:在NS-3中安装可视化工具pyviz的一些问题的解决_寻同学的博客-CSDN博客 今天,在更新软件时,使用以下…

POI创建的文档具有不同条件的灵活样式

介绍 这篇文章解释了基于各种标准将样式应用于文档的困难并提供了解决方案。 Java编程中的常见任务之一是根据存储在数据库中的数据创建Excel报告。 在这些情况下,Java程序员使用POI :-)。 这些报告通常具有严格的样式和数据格式规则。 数据通常是SQL查询执行的结果…

在NS-3中安装可视化工具pyviz的一些问题的解决

转载声明:本文为寻同学原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/qq_31676673/article/details/88107454 在NS-3中安装可视化工具pyviz的一些问题的解决 PyViz是一…

什么是光纤交换机?

光纤交换机是一种高速的网络传输中继设备,又叫做光纤通道交换机、SAN交换机,它较普通交换机而言,采用了光纤电缆作为传输介质。光纤传输的优点是速度快、抗干扰能力强。光纤交换机主要有两种,一是用来连接存储的FC交换机。另一种是…

java 调用 js性能_太快了,太变态了:什么会影响Java中的方法调用性能?

java 调用 js性能那么这是怎么回事? 让我们从一个简短的故事开始。 几周前,我提议对Java核心libs邮件列表进行更改 ,以覆盖当前final一些方法。 这刺激了一些讨论主题-其中之一是其中一个性能回归通过采取这是一个方法被引入的程度final免遭停…

VMware虚拟机扩展Ubuntu系统磁盘空间

转载:https://www.cnblogs.com/dongry/p/10620894.html 1 首先给虚拟机扩容 虚拟机->设置->硬盘->实用程序->扩展磁盘容量 2 启动Ubuntu系统 2.1 打开终端安装gparted,sudo apt-get install gparted;输入sudo gparted打开gparte…

光纤以太网交换机产品性能介绍

光纤以太网交换机是一款高性能的管理型的二层光纤以太网接入交换机。那么,光纤以太网交换机产品性能有哪些呢?接下来,飞畅科技的小编就来为大家详细介绍下光纤以太网交换机的产品性能,感兴趣的朋友就一起来看看吧! 光…

操作方法:具有多个Mongo存储库和Kotlin的Spring Boot 2 Web应用程序

首先,免责声明:如果您正在编写微服务 (每个人现在都对吗?)并希望它是惯用的 ,那么通常不会在其中使用几个不同的数据源。 图片取自Pixabay© https: //pixabay.com/illustrations/software-binary-sys…

2020-09-03解决pip install安装非常慢[Errno 101] 网络不可达问题

转载链接:http://huanyouchen.github.io/2019/11/21/pip-install-package-very-slow/ 问题描述 使用pip安装seaborn提示: sudo python3.5 -m pip install seabornCollecting seabornWARNING: Retrying (Retry(total4, connectNone, readNone, redirect…

环网工业交换机ERPS技术解析

ERPS(Ethernet Ring Protection Switching,以太环网保护切换协议)是ITU开发的一种环网保护协议,也称G.8032。它是一个专门应用于以太环网的链路层协议。它在以太环网完整时能够防止数据环路引起的广播风暴,而当以太环网上一条链路断开时能迅速…

交换机和路由器的区别是什么?

在我们日常生活中,上网很多时候都要用到交换机和路由器,很多人只知道二者都是用于连接上网的设备,但很少知道它们之间有什么区别,以及各自的功能。 交换机和路由器的区别: 路由器可以给你的局域网自动分配IP&#xf…

import _ssl # if we can‘t import it, let the error propagate

转载链接: https://blog.csdn.net/u013398960/article/details/107524068 实测有用

apache flume_Flume:使用Apache Flume收集客户产品搜索点击数据

apache flume这篇文章涵盖了使用Apache flume收集客户产品搜索点击并使用hadoop和elasticsearch接收器存储信息。 数据可能包含不同的产品搜索事件,例如基于不同方面的过滤,分类信息,分页信息,以及进一步查看的产品以及某些被客户…