word1. Ns3的安装: 开发环境配置:sudo apt-get install gcc g++ python python-dev //C++和python安装,必装sudo apt-get install mercurial //NS3代码维护使用的源码版本控制管理系统sudo apt-get install bzr //运行python绑定ns-3-dev需要bazaar这个组件sudo apt-get install libgtk2.0-0 libgtk2.0-dev //基于GTK的配置系统sudo apt-get install gdb valgrind //调试工具sudo apt-get install doxygen graphviz imagemagick //文档生成器sudo apt-get install texlive texlive-latex-extra //文档生成器,从源代码中生成说明文档 sudo apt-get install texinfo dia texlive-extra-utils texi2html //ns-3手册和tutorial编写查看工具sudo apt-get install flex bison //仿真必需的词法分析器和语法分析生成器,必装sudo apt-get install libgoocanvas-dev //局部移动场景仿真的可视化测试需要这个组件sudo apt-get install tcpdump //读取pcap的packet traces,即包嗅探器sudo apt-get install sqlite sqlite3 libsqlite3-dev //支持统计特性的数据库软件sudo apt-get install libxml2 //xml的配置存储软件sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas //Gustavo's ns-3-pyviz的可视化软件sudo apt-get install qt4-qmakesudo apt-get install qt4-dev-tools安装完成后:sudo ./build.py sudo ./waf -checksudo make cleansudo make之后sudo ls可以看见绿色的NetAnim这个东西就成功了sudo ./NetAnim 打开仿真界面安装全部完成2. ns3仿真的运行 ctrl+alt+t调出终端,进入ns-allinone-3.16目录, 输入 cd examples/tutorial/ 进入examples里面的tutorial文件夹〔里面有刚刚上手专用的实例,我们就用这个来调试〕 在tutorial目录下,输入 cp first.cc ~/ns-allinone/ns-3.16/scratch/ ,将first.cc这个文件复制到ns-3.16的scratch文件夹里面. 具体位置由实际的自己的计算机的文件目录所定。
输入 cd .. 输入cd scratch/ 进入scratch文件夹 输入 ls 查看有没有那个复制进去的文件 有的话进展下面,没有的话 要先复制进去 输入 sudo ./waf --run scratch/first 注意:在输入运行的文件名时,不要加后缀名 现在就可以运行了以下是这个的显示结果:此结果表示的意思是:第一行:客户机在第2s的时候向IP为10.1.1.2的节点的第九号端口(port)发送了1024字节大小的数据包第四行:2.00737s客户机〔10.1.1.1〕接收到了来自ip为10.1.1.2〔服务器〕的9号端口的一个1024字节的数据包3. 图形仿真器(Netanim)的使用看见那个绿色的了吧,就是运行那个绿色的来调出仿真界面输入 ./NetAnim 可以看见如下图点击左上角的文件夹符号,可以打开导入文件〔PS:必须是.xml文件〕选择一个.xml文件即可导入〔如果没有,请继续下节的生成.xml文件〕点击绿色的开始符号即可运行4.比如:进入ns-3.16文件夹,可以看到有个scratch目录。
将你需要生成.xml的文件复制到scratch文件夹进入scratchcd scratch/sudo apt-get install vim输入sudo vim first.cc 即打开vim编辑器可以看到这是first.cc的源代码 按下I 可以进入编辑模式 按下ESC可以退出编辑模式 在头文件包含处添加一句#include “ns3/netanim-module.h〞然后去找到有一句 Simulator::Run();在这句的前面添加一行代码AnimationInterface anim(“first.xml〞);按下ESC,退出编辑模式按下:wq 可以将刚刚的改动保存输入 cd ..输入 sudo ./waf –run scratch/first 注意不要有后缀名运行成功输入 ls 可以看到有个名字叫做 first.xml的文件 这个就是可以当作动画的文件再用上一节的仿真界面的使用来运行这个就行如图:成功的仿真了tr文件的生成:需要在Simulator::Run (); 这个的前面加上 AsciiTraceHelper ascii; csmaHelper.EnableAll (ascii.CreateFileStream (“csma-1.tr〞));pcap文件的生成: 需要在Simulator::Run (); 这个的前面加上 csmaHelper.EnablePcapAll (“csma-1〞, false);如图:之后按照上面的运行方法运行。
〔csmaHelper是由CsmaHelper这个类〔协议〕实例化的对象〕.如图运行完成:之后ls 看有没有自己命名的那些文件:我的tr文件为test-csma-1.tr 我的pcap文件为 test-csma-1....pcap如图:分析Ascii Traces 在一个极其密集的文档中有很多信息,但是需要注意的第一件事是在这个文件中有很多分立的行除非你大大加宽你的窗口,否如此是很难看清楚的每一行对应了一个trace事件本例中我们在查看每个点到点设备的传输队列的trace事件传输队列是任一个目的地为点到点信道的数据包的必经队列注意trace文件的每行以一个单独的字符开始(后面带有空格)这个字符具有如下含义:· +: An enqueue operation occurred on the device queue;· -: A dequeue operation occurred on the device queue;· d: A packet was dropped, typically because the queue was full;· r: A packet was received by the net device.· +:设备队列中的入队操作;· -:设备队列中的出队操作;· d:数据包被丢弃,通常因为队列已满;· r:网络设备接收到数据包。
我们来更详细的看一下trace文件的第一行为了看得更清晰,我把这一行分成了不同的局部,并在左边标出序号: 00 + 01 2 02 /NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue 03 ns3::PppHeader ( 04 Point-to-Point Protocol: IP (0x0021)) 05 ns3::Ipv4Header ( 06 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none] 07 length: 1052 10.1.1.1 > 10.1.1.2) 08 ns3::UdpHeader ( 09 length: 1032 49153 > 9) 10 Payload (size=1024)展开后的trace事件的第一行(序号00)代表操作字符表示是一个传输队列的入队操作第二行(序号01)是单位为秒的仿真时间Trace的下一行(序号02)告诉我们trace发送端发起这个事件(以tracing命名空间表示)。
你可以认为tracing命名空间有点像一个文件系统命名空间命名空间的根为NodeList这个NodeList是NS-3核心代码管理的一个容器,此容器包含有一个脚本中创建的所有的节点正如一个文件系统在根下有目录,在NodeList下有节点数字符串/NodeList/0是指NodeList中第0个节点,我们通常认为是"node 0".每个节点中有一个已经安装好的设备列表这个列表是在命名空间的下一个出现的可以看到trace事件来自节点中安装的第0个设备DeviceList/0下一个字符串,$ns3::PointToPointNetDevice告诉我们第0个节点的设备列表的第0个位置的设备类型。