Loading...
30k 27 分钟

# 10.ns3 路由性能测试实例.md 在本节中,将介绍 ns3 中路由仿真,从路由选择到绘图出结果的一系列流程。 PS:只是本人实验的一系列步骤,不一定是最优做法,但也是一套完整的流程吧,有更好的流程可以互相交流。 # 路由性能好坏的评判标准 通常来说描述一个路由,我们会从 吞吐量,时延,能耗,丢包率,交付率,平均路径长度 等因素来描述路由的好坏。 吞吐量 指的是在单位时间内通过某个网络的实际的数据量。是对实际网络到底有多少数据率在信道上传输。 时延 指的是数据从信源发送到信宿所需的时间。 交付率 指的是发送过程中信宿实际接收的数据包 / 总共发送的数据包。 丢包率 是 1 -...
4.7k 4 分钟

# 9.ns3 Config 类 API 说明 在本节中,将介绍 ns3 中 Config 类的使用, 它可以用来配置仿真参数和跟踪,在统计结果方面十分有用 源文件位置: src/core/model/config.h config.cc # 函数原型 void ns3::Config::Connect (std::string path, const CallbackBase &cb)此函数将尝试查找与输入路径匹配的所有跟踪源,然后将输入回调连接到它们,以使回调在跟踪事件通知时接收到一个额外的上下文字符串。void...
11k 10 分钟

# 8.ns3 wifi 设备定向发送的实现 在本节中,将介绍 ns3 中 wifi 设备定向发送的实现方案 # 起因 由于研究需求,需要用到节点具有定向发送,全向接收的功能,但 ns3 自带的功能没有定向实现,所以就写了一种定向的实现方法。 # 修改思路 第一想法是修改天线模块的代码,使其完成定向的功能,但是看了以下源码,感觉实现难度较大,修改比较困难,故 pass 了 第二想法是修改物理层或者数据链路层,在节点收到数据包时,底层判断发送节点的位置与接收节点的位置,只接收从指定方向传来的数据包,从而实现定向接收的功能。 于是就开始找数据发送的函数,与数据接收的处理函数, 最终发现在...
6.9k 6 分钟

# 7.ns3 损失模型修改 在本节中,将介绍 ns3 中 wifi 损失模型模型修改 / 新增所需的一些内容, # 代码 信道损失模型的源码位置如下 ns-3.xx/src/propagation/model可以将自己的定义的信道损失模型添加到该路径,更改 wscript 文件,然后重新 build 一下 ns3 ./waf build主要更改DoCalcRxPowerDoCalcRxPowerDoCalcRxPower 函数即可 无线默认的损失模型是P_r=\frac{P_tG_tG_r\lambda^2} Gt: tx gain (unit-less) Gr: rx gain...
12k 11 分钟

# 6.ns3 wifi 模型配置 在本节中,将介绍 ns3 中 wifi 模型扩展所需的一些内容, # Using the WifiNetDevice 使用底层 ns3 API 添加一个 WifiNetDevice 到节点上,必须创建一个 WifiNetDevice 实例,和许多构成的对象,以一种合适的方式绑定在一起( WifiNetDevice 为未来的可扩展性,在某种程度上已经非常模块化)。在底层 api,这需要大约 20 行代码( ns3::WifiHelper::Install,ns3::YansWifiPhyHelper::Create )。一个信道 WifiChannel...
6.5k 6 分钟

# 5.ns3 wifi 模型文档 在本节中,将介绍 ns3 中 wifi 模型, # Design Documentation ns3 节点 ( nodes ) 能够包含一系列网络设备( NetDevice )对象,就像实际的计算机包含单独的接口卡一样,例如,以太网卡,WiFi,蓝牙等。通过添加 WifiNetDevice 对象到 ns3 的节点( nodes )中,它就可以创建基于 802.11 的基础设施和 adhoc 网络模型。 # Overview of the model WifiNetDevice 模型是一个基于 IEEE 802.11...
8.8k 8 分钟

# 4. 仿真流程 在本节中,将介绍 ns3 中仿真的流程, # 基本流程 使用 ns3 仿真时,一般经过以下 4 个步骤。 # 1. 选择或开发相应的模块 根据实际仿真对象和仿真场景选择相应的仿真模块:如有线网或还是无线网 ( Wi-Fi ),节点移动性 mobility ,能量 energy , 路由协议,应用程序 application 等,若是没有相应模块,那就需要自己编写 (在后续章节中讲述)。 # 2. 编写网络仿真脚本 若是有了相应的模块,那么我们就可以搭建网络仿真环境,ns-3 仿真脚本支持 2 种语言:C 和 Python,两种语言接口的 API 接口是一样的,但是部分...
6.8k 6 分钟

# 3.waf 运行命令以及命令行解析的使用说明 在本节中,将介绍 ns3 中 waf 运行命令,及命令行解析 # 介绍 ns3 使用了 waf 编译系统,在 ubuntu 环境下,打开终端,输入: ./waf --helpwaf [command] [options]即会出现大量的关于 waf 的命令行命令以及参数信息。 命令行模式下运行程序,可设置参数。 参数设置有两行类型参数。一种是程序中的参数(程序参数),另一种是普通参数。 例如: ./waf --run "wifi-simple-learn-tcptest --help" ./waf --run...
1.5k 1 分钟

# 2.ns3 关键抽象 在本节中,我们将总结一些在网络中常用的,但在 ns3 中有特定含义的术语。 # Node 一个连接到网络的计算设备被称为主机,有时也被称为终端系统。因为 ns3 是一个网络模拟器,在 ns3 中,基本的计算设备抽象被称为 Node 。 C++ 中由 Node 类实现。Node 类提供了管理模拟中计算设备的表示方法。人们会添加一些协议,如应用程序、协议栈和外围卡及其相关的驱动程序,以使计算机能够进行有用的工作。我们在 ns-3 中使用同样的基本模型。 # Application Application 是指可以完成某成某些活动的用户程序。 Application 附着在...
1.3k 1 分钟

# 1.ns3 初识 # 背景 ns3 是一个离散事件驱动的网络模拟器,意在满足学术和教学要求。它是由 C++/Python 编写的开源项目,主要运行平台是 GUL/Linux(如 Ubuntu 等)。对于 Windows 系统,可以通过安装虚拟机来运行。 NS3 主要用来模拟计算机网络,可以在模拟现实世界中的各种类型的网络通信。 # 安装 # 1. 环境 系统:Ubuntu18.04 版本:ns3.xx(实例用的 3.31,推荐 3.27) # 2. 换源 将源换成国内的源,比较好,之前用的自带的源,安装可视化的模块时死活装不上,换成国内的源之后,装上了。所以推荐换华为的源 System...