NS3学习之整体介绍

NS3整体介绍

目录结构

src目录是ns-3的源代码目录,其目录结构基本和ns-3模块相对应

这些模块目录的子目录都是固定的。

  • bindings/ 绑定python语言的
  • doc/ 帮助文档
  • examples/ 应用该模块的示例代码
  • helper/ 模块对应的helper类源文件
  • model/ 模块代码的.cc和.h文件
  • test/ 模块设计者编写的模块测试代码
  • wscript

一些常用模块

模块 用途
core ns3内核模块,实现了ns-3的基本机制,智能指针,属性,回调,随机变量,日志,追踪,事件调度等
network 网络数据分组模块,一般仿真都会使用
Internet 实现了TCP/IP相关的协议族,IP, ARP, UDP, TCP等
applications 几种常见的应用层协议
mobility 移动模型模块,为节点添加移动属性
status 统计框架模块,方便对仿真数据的收集、分析和统计
tools 统计工具,作图工具gunplot
netanim 动画演示工具
visualizer 可视化界面工具

几种典型的网络模块

模块 用途
point-to-point 点对点网络
CSMA 实现基于IEEE802.3的以太网网络,包括MAC层,物理层和媒体信道
Wi-Fi 实现基于IEEE802.11a/b/g的无线网络,也可以是有基础设施的ad hoc网络
mesh 实现基于IEEE802.11s的无线mesh网络
wimax 实现基于IEEE802.16标准的无线城域网络

几种ad hoc网络路由协议模块 :aodv, dsdv, olsr。

这些模块当中,core,network,internet和status是ns-3的基础模块,学习和开发其它模块首先要掌握这几个基础模块。

ns3 关键概念
节点

ns-3中的基本计算设备被抽象为节点。此节点是一个可以添加各种功能的计算机。当然仅仅是个计算机,要想使它工作,还需要添加网卡,协议栈,应用程序。

在ns-3中节点用Node类来描述,下面两行代码会创建两个节点对象,它们在仿真中代表计算机

NodeContainer nodes;
nodes.Create(2);
应用

计算机软件中通常分为系统软件和应用软件。应用软件完成用户工作,系统软件管理计算机中的内存,CPU,硬盘,网络等各种资源。在ns-3中并没有正常的操作系统的概念,但是用应用程序的概念。在ns-3中,需要被仿真的用户程序被抽象为应用。在C++中用Application类描述。

bulk-send-application
on-off-application
udp-client/server
udp-echo-client/server

信道

通常把网络中数据流过的媒介称作为信道,在ns-3中,节点需要连接到信道上来进行数据交换,在C++中用Channel类来描述,一个信道实例可以模拟一条简单的线缆,也可以是一个复杂的巨型以太网交换机,甚至是一个无线网络中充满障碍物的三维空间。

CsmaChannel
PointToPointChannel
Wi-FiChannel
网络设备

把计算机连接到网络上,必须用网线连接到网卡上。现在计算机出厂的时候都已经配置了网卡,所以用户一般看不到这些模块。一张网卡只是个外围设备,设备需要驱动软件来控制,如果缺少软件驱动它还是不能工作的。在ns-3中,网络设备这一抽象概念相当硬件设备和软件驱动的总和。网络设备安装在节点上,然后节点之间通过信道和其他节点通信。这个网络和信道是相对应的,就像无线网卡不能连接网线,只能在在无线环境中使用。C++中用NetDevice类来描述网络设备。

CsmaNetDevice
PointToPointNetDevice
Wi-FiNetNevice

搭建网络仿真场景和搭建真实网络类似
首先要有网络节点(Node),节点需要有网络设备(NetDevice),网络设备需要通过传输媒体(Channel)连接

仿真脚本的编写

脚本编写一般都是经过以下步骤

步骤 实例
1. 创建节点 NodeContainer
2. 创建链路类型 XxxDeviceHelper
3. 安装链路类型,生成网卡 XxxDeviceContainer=XxxDeviceHelper.install(NodeContainer)
4. 安装协议栈 XxxStack.install(NodeContainer)
5. 配置IP地址 XxxAddressHelper.setBase(“IP”,“NETMASK”)
6. 生成网络接口 XxxInterfaceContainer = XxxAddressHelper.Assign(NetDeviceContainer )
7. 安装应用 ApplicationContainer = XxxHelper.Install(NodeContainer);
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值