NS3官网常见学习板块
- ns-3-tutorial:ns-3入门教程,包括基本介绍、软件安装、核心概念等;
- ns-3-manual:ns-3手册,介绍ns-3软件的整体架构、核心模块等;
- ns-3-model-library:ns-3模型库,介绍ns-3中各个模块的具体细节;
- API Documentation:使用Doxygen文档化的ns-3 API文档,包括所有的模块、源文件、类及其成员等,是阅读和编写ns-3代码不可缺少的资料;
- ns-3 维基百科:可以找到很多Document中没有提到的细节,非常有用;
- FAQ:可能找到常见问题的答案;
- ns-3 mailing lists:可以请教ns-3相关的问题(问前先阅读网页指南),其中ns-3-users Google Group forum有很多常见问题解答,非常有用;
- ns-3 Presentations:ns-3开发者和使用者做的报告
- ns-3 Videos:ns-3相关视频资料;
1. C++的学习:http://www.cplusplus.com/doc/tutorial/
2. C语言使用Tcp/IP套接字:http://cs.baylor.edu/~donahoo/practical/CSockets/
3.Logging
4.ASCII Trace:
AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("myfirst.tr"));
+:设备队列上发生入队操作;
-:设备队列上发生出队操作;
d:丢弃数据包,通常是因为队列已满;
r:网络设备接收到一个数据包。
5.PACAP追踪
pointToPoint.EnablePcapAll ("myfirst");
使用tcpdump读取输出
$ tcpdump -nn -tt -r myfirst-0-0.pcap
6.WireShark学习:https://www.wireshark.org/#learnWS
离散事件网络模拟器,使用ns-3的一些原因包括执行在实际系统中难以执行或难以执行的研究,在高度可控制的可重现环境中研究系统行为以及了网络如何工作。在这种模拟器中,每个事件都与其执行时间相关联,并且通过以模拟时间的时间顺序执行事件来进行模拟。事件可能会导致安排将来的事件(例如,计时器可能会将自己重新安排为在下一个时间间隔到期)。
未完成:Second.cc分析数据包:https://www.nsnam.org/docs/release/3.30/tutorial/singlehtml/index.html#ascii-tracing
网络中的常用术语
- Node
用Internet术语来说,连接到网络的计算设备称为主机,有时也称为终端系统。由于ns-3是 网络模拟器,而不是Internet模拟器,因此,我们故意不使用“主机”一词,因为它与Internet及其协议紧密相关。取而代之的是,我们使用了一个更通用的术语,也源自图论的其他模拟器也使用了这一术语- 节点。
在ns-3中,基本的计算机设备抽象称为节点,可以向其添加各种功能的计算机,诸如应用程序,协议栈和外围卡之类的东西及其相关的驱动程序,以使计算机能够执行有用的工作。节点由C++中的 Node类来描述,提供用于管理仿真器中的网络组件表示的各种方法。
- Application
在ns3中需要被仿真的用户程序被抽象为应用,用Application类来描述,提供了管理仿真时用户层应用的各种方法。某个时间参数来开始产生数据通信并且在某个可选的是时间点停止
- Channel
通常把在网络中数据流流过的媒介称为信道,在ns3中将基本的通信子网这一抽象概念称为信道,用Channel类描述,提供了管理通信子网对象和把节点连接到它们的各种方法。
信道模型实例:
- CsmaChannel:实现载波监听多路访问通信子网中的媒介,和以太网有相似的功能
- PointToPointChannel
- Wi-fiChannel
- Device
相当于硬件设备和软件设备驱动的总和,网卡,由NetDevice类描述,提供了管理连接其他节点和信道对象的各种方法。常见的网络设备实例:CsmaNetDevice、PointToPointDevice、Wi-FiNetDevice
- Topology Helpers
"拓扑生成器"这样一个帮助类,内部已经实现将网络设备连接到节点、信道并为之配置IP地址,配置节点的协议栈,将大量分立的步骤整合起来成为一个简单易用的操作。