ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:1.27MB ,
资源ID:16450991      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16450991.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(NS3对于初学者的教程高手忽略这个吧Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

NS3对于初学者的教程高手忽略这个吧Word文档下载推荐.docx

1、2. ns3仿真的运行 ctrl+alt+t调出终端,进入ns-allinone-3.16目录, 输入 cd ns-3.16/ 进入ns-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 . 此时进入的是ns-3.16

2、文件夹 输入cd scratch/ 进入scratch文件夹 输入 ls 查看有没有那个复制进去的文件 有的话进行下面,没有的话 要先复制进去 确定有的话,输入 cd . 返回ns-3.16/ 输入 sudo ./waf -run scratch/first 注意:在输入运行的文件名时,不要加后缀名。 现在就可以运行了。以下是这个的显示结果:此结果表示的意思是:第一行:客户机在第2s的时候向IP为10.1.1.2的节点的第九号端口(port)发送了1024字节大小的数据包第二行:10.1.1.2的这个服务器接在2.00369s收到了来自10.1.1.1的端口为49153的1024字节大小的数据

3、包第三行:10.1.1.2服务器在2.00369s向10.1.1.1的49153号端口发送了1024字节的一个数据包第四行:2.00737s客户机(10.1.1.1)接收到了来自ip为10.1.1.2(服务器)的9号端口的一个1024字节的数据包3. 图形仿真器(Netanim)的使用 进入ns-allinone-3.16文件夹 输入cd netanim-3.103 进入netanim-3.103文件夹看见那个绿色的了吧,就是运行那个绿色的来调出仿真界面输入 ./NetAnim 可以看见下图点击左上角的文件夹符号,可以打开导入文件(PS:必须是.xml文件)选择一个.xml文件即可导入。(如果

4、没有,请继续下节的生成.xml文件)点击绿色的开始符号即可运行。4. 生成.xml文件比如:进入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();在这句的前面添加一行代

5、码AnimationInterface anim(“first.xml”);按下ESC,退出编辑模式按下:wq 可以将刚才的改动保存输入 cd .返回ns-3.16文件夹输入 sudo ./waf run scratch/first 注意不要有后缀名运行成功输入 ls 可以看到有个名字叫做 first.xml的文件 这个就是可以当作动画的文件。再用上一节的仿真界面的使用来运行这个就行如图:成功的仿真了。5. .tr和.pcap文件的生成和解析tr文件的生成:需要在Simulator:Run (); 这个的前面加上 AsciiTraceHelper ascii; csmaHelper.Enabl

6、eAll (ascii.CreateFileStream (“csma-1.tr”);pcap文件的生成: 需要在Simulator: 这个的前面加上 csmaHelper.EnablePcapAll (“csma-1”, false);之后按照上面的运行方法运行。(csmaHelper是由CsmaHelper这个类(协议)实例化的对象).如图运行完成:之后ls 看有没有自己命名的那些文件:我的tr文件为test-csma-1.tr 我的pcap文件为 test-csma-1.pcap输入vim 自己的文件名 即: vim test-csma-1.tr分析Ascii Traces 在一个极其密

7、集的文档中有很多信息,但是需要注意的第一件事是在这个文件中有很多分立的行。除非你大大加宽你的窗口,否则是很难看清楚的。每一行对应了一个trace事件。本例中我们在查看每个点到点设备的传输队列的trace事件。传输队列是任一个目的地为点到点信道的数据包的必经队列。注意trace文件的每行以一个单独的字符开始(后面带有空格)。这个字符具有如下含义: +: An enqueue operation occurred on the device queue; -: A dequeue operation occurred on the device queue; d: A packet was dro

8、pped, 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

9、( 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)告诉

10、我们trace发送端发起这个事件(以tracing命名空间表示)。你可以认为tracing命名空间有点像一个文件系统命名空间。命名空间的根为NodeList。这个NodeList是NS-3核心代码管理的一个容器,此容器包含有一个脚本中创建的所有的节点。正如一个文件系统在根下有目录,在NodeList下有节点数。字符串/NodeList/0是指NodeList中第0个节点,我们通常认为是node 0.每个节点中有一个已经安装好的设备列表。这个列表是在命名空间的下一个出现的。可以看到trace事件来自节点中安装的第0个设备DeviceList/0。下一个字符串,$ns3:PointToPointN

11、etDevice告诉我们第0个节点的设备列表的第0个位置的设备类型。回忆序号00处的+操作表示设备的传输队列发生了入队操作,这个在trace pathTxQueue/Enqueue的最后部分反映出来了。Trace中剩下的几行是很直观的。序号03-04处表明数据包封装成点到点协议。序号05-07处显示数据包IP版本,发送端IP地址10.1.1.1,接收端IP地址为10.1.1.2。序号08-09出显示数据包的UDP头,最后序号10处表明数据包数据量为1024bytes。在trace文件中的下一行显示了这个数据包在这个节点中从传输队列中被移除。Trace文件的第三行显示了数据包正在被回显服务器所在

12、的节点的网络设备接收。trace如下。 00 r 01 2.25732 02 /NodeList/1/DeviceList/0/$ns3:PointToPointNetDevice/MacRx 04 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags none 05 length: 06 ns3: 08 Payload (size=1024)注意,trace操作现在是r并且仿真时间已经增加到2.25732秒。如果你一直按照本教程来操作,你已经把网络设备的DataRate,和信道Delay设置成默认值。在第2行中,Trace发送端命名空间条目已经改变,来

13、显示这个事件是来自节点1(/NodeList/1),即数据包的接收trace端(/MacRx)。通过查看文件中其他的traces,你可以很容易的跟踪数据包。5.3.2 PCAP 格式Tracing ns-3设备控制器也可以被用来创建.pcap格式的trace文件。缩写pcap(通常为小写)表示packet capture,事实上是包含有定义一个.pcap文件格式的API。可以读取并且显示这种格式的最流行的程序是Wireshark(以前被称为Ethereal)。然而,有很多其他的分析器也使用这个包格式。我们鼓励读者了解其他的分析pcap追踪文件的工具。在本教程中,我们用tcpdump来查看pca

14、p trace。在scratch/myfirst.cc中我们刚增加的ASCII追踪代码后面插入这行代码。注意我们刚使用的是字符串myfirst而不是myfirst.pcap这是因为这里传递的参数是个前缀,而不是完整的文件名。在仿真过程中,helper将为任何一个点到点设备创建一个追踪文件。文件名将包含预设前缀,节点名,设备名,和.pcap后缀。在我们的例子脚本中,我们最终将看到名为myfirst-0-0.pcap和myfirst-1-0.pcap这分别是为节点0设备0,和节点1设备0创建的pcap trace文件。用tcpdump读取结果 此处最简单的做法就是使用tcpdump来查看pcap文

15、件, tcpdump -nn -tt -r myfirst-0-0.pcap reading from file myfirst-0-0.pcap, link-type PPP (PPP) 2.000000 IP 10.1.1.1.49153 10.1.1.2.9: UDP, length 1024 2.514648 IP 10.1.1.2.9 10.1.1.1.49153: tcpdump -nn -tt -r myfirst-1-0.pcap reading from file myfirst-1-0.pcap, link-type PPP (PPP) 2.257324 IP 10.1.1

16、.1.49153 2.257324 IP 10.1.1.2.9 在myfirst-0-0.pcap(客户端设备)文件中可以看到回显数据包在第二秒被发送。如果查看第二个文件(myfirst-1-0.pcap)可以看到此包在2.257324秒被收到。在第二个文件中可以看到在2.257324秒这个包被回应,最终,在客户端2.514648秒回应的包被收到。5.3.2.2 用Wireshark读取结果如果你对Wireshark不熟悉,从http:/www.wireshark.org/可以下载到程序和文档。Wireshark是一个可以用来显示trace文件的用户图形接口。如果你安装了Wireshark,可

17、以打开和查看每一个trace文件,就像这些trace是使用包嗅探工具在真正的网络上抓下来一样。对于trace文件和pcap文件 均可以自己编写gawk脚本来查看,编写方法自己XX。以下为实例讲解:打开first.cc文件 (前面的标号是我自己的vim配置,只是方便阅读,并不是代码。)顶部的注释栏为GNU声明 1 /* -*- Mode:C+; c-file-style:gnu; indent-tabs-mode:nil; -*- */ 2 /* 3 * This program is free software; you can redistribute it and/or modify 4

18、* it under the terms of the GNU General Public License version 2 as 5 * published by the Free Software Foundation; 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULA

19、R PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software 14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 15 */然后是头文件包含

20、 16 17 #include ns3/core-module.h 核心模型库 18 #include ns3/network-module.h 网络模型库 19 #include ns3/internet-module.h 因特网模型库 20 #include ns3/point-to-point-module.h 点到点网络模型 21 #include ns3/applications-module.h 应用模型库正式代码: 22 23 using namespace ns3; 使用ns3的命名空间 24 25 NS_LOG_COMPONENT_DEFINE (FirstScriptExa

21、mple); 启用日志,日志是方便在运行和运行成功后查看输出的信息的。 26 27 int 28 main (int argc, char *argv) 29 30 LogComponentEnable (UdpEchoClientApplication, LOG_LEVEL_INFO); 开启客户机应用日志,记录客户机的使用情况 31 LogComponentEnable (UdpEchoServerApplication 开启服务器应用日志,记录服务器的使用情况 32 33 NodeContainer nodes; 实例化一个节点容器对象,里面还是空的。 34 nodes.Create (

22、2); 为容器创建两个新的节点。 35 36 PointToPointHelper pointToPoint; 实例化一个点到点协议的对象。 37 pointToPoint.SetDeviceAttribute (DataRate, StringValue (5Mbps); 设置点到点协议的数据传输速率。 38 pointToPoint.SetChannelAttribute (Delay2ms 设置点到点协议的网络延迟。 39 40 NetDeviceContainer devices; 实例化一个网卡容器。 41 devices = pointToPoint.Install (nodes)

23、; 为节点安装带有点到点协议的网卡。 42 43 InternetStackHelper stack; 实例化一个协议栈。 44 stack.Install (nodes); 为每个节点安装一个协议栈用于网卡存储网络协议。 45 46 Ipv4AddressHelper address; 实例化一个IP地址的对象。 47 address.SetBase (10.1.1.0, 255.255.255.0 设置IP地址和子网掩码。 48 49 Ipv4InterfaceContainer interfaces = address.Assign (devices); 为网卡注册IP地址。 50 以下

24、为应用层配置 51 UdpEchoServerHelper echoServer (9); 实例化一个服务器应用,监听端口9。 52 53 ApplicationContainer serverApps = echoServer.Install (nodes.Get (1); 实例化一个服务器对象,并且将第1号节点设置为服务器。 54 serverApps.Start (Seconds (1.0); 服务器开始时间为1.0s 55 serverApps.Stop (Seconds (10.0); 服务器停止时间为10.0s 56 57 UdpEchoClientHelper echoClien

25、t (interfaces.GetAddress (1), 9); 实例化一个客户机应用,发送给第1号节点的IP,发送给9号端口。 58 echoClient.SetAttribute (MaxPackets, UintegerValue (1); 设置数据包的个数 59 echoClient.SetAttribute (Interval, TimeValue (Seconds (1.0); 设置包的间隔时间 60 echoClient.SetAttribute (PacketSize, UintegerValue (1024); 设置数据包的大小 61 62 ApplicationConta

26、iner clientApps = echoClient.Install (nodes.Get (0); 实例化一个客户机,并把第0号节点设置为客户机。 63 clientApps.Start (Seconds (2.0); 客户机开始时间为2.0s 64 clientApps.Stop (Seconds (10.0); 客户机停止时间为10.0s 65 66 Simulator: 开始运行 67 Simulator:Destroy (); 运行结束后销毁内存 68 return 0; 返回成功值 69 对于初学者,首先要看懂examples/tutorial/里面的几个.cc文件,之后再去/src里面找到自己喜欢的致力于学习。不要操之过急。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1