




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验 4-NS-3 环境搭建与测试 姓名: 学号: 一、 目标任务 任务一 NS-3 安装与使用。 通过运行“./test.py -c core”脚本进行 ns-3 软件包单元测试。 任务二 测试运行实例程序。 分别运行 first.cc second.cc third.cc 二、 编程语言 C+ 三、 关键代码 1. First.cc /头文件声明 #include “ns3/core-module.h“ #include “ns3/network-module.h“ #include “ns3/Internet-module.h“ #include “ns3/point-to-point-module.h“ #include “ns3/applications-module.h“ /namespace 的声明 using namespace ns3; /声明了一个叫 FirstScriptExample 的日志构件,通过引用 FirstScriptExample 这个名字 的操作, /可以实现打开或者关闭控制台日志的输出。 NS_LOG_COMPONENT_DEFINE (“FirstScriptExample“); int main (int argc, char *argv) Time:SetResolution (Time:NS); /下面两行脚本是用来使两个日志组件生效的。它们被内建在 Echo Client 和 Echo Server 应用中 /设置日志为 LOG_LEVEL_INFO 级别 LogComponentEnable (“UdpEchoClientApplication“, LOG_LEVEL_INFO); LogComponentEnable (“UdpEchoServerApplication“, LOG_LEVEL_INFO); /*网络拓扑部分 */ /创建 ns3 节点对象,它们在仿真中代表计算机 NodeContainer nodes; /声明了一个名为”nodes”的 NodeContainer nodes.Create (2); /调用了 nodes 对象的 Create()方法创建了两个节点 /构建一个点到点的连接 /使用 PointToPointHelper 来配置和连接 ns-3 的 PointToPointNetDevice 和 PointToPointChannel 对象 PointToPointHelper pointToPoint; /在栈中初始化了一个 PointToPointHelper 的对象 PointToPoint pointToPoint.SetDeviceAttribute (“DataRate“, StringValue (“5Mbps“); /创建一个 PointToPointNetDevice 对象时使用 “5Mbps“来作为数据速率 pointToPoint.SetChannelAttribute (“Delay“, StringValue (“2ms“); /使用“2ms“ (2 毫 秒)作为每一个被创建的点到点信道传输延时值 /完成设备和信道的配置 NetDeviceContainer devices; devices = pointToPoint.Install (nodes); /安装 PointToPointHelper 对象和点到点网络设备的网络协议栈 InternetStackHelper stack; stack.Install (nodes); /为节点上的设备设置 IP 地址 /地址分配默认是从 1 开始并单调的增长,所以在这个基础上第一个分配的地址会是 10.1.1.1,紧跟着是 10.1.1.2 等等 Ipv4AddressHelper address; /声明了一个地址生成器对象 address.SetBase (“10.1.1.0“, “255.255.255.0“); /使用 Ipv4interface 对象将一个 IP 地址同一个设备关联起来 Ipv4InterfaceContainer interfaces = address.Assign (devices); /*网络拓扑部分结束 */ /*应用程序 部分*/ /在我们之前创建的节点上设置一个 UDP 回显服务应用 UdpEchoServerHelper echoServer (9); /声明了 UdpEchoServerHelper,用来帮助创 建真正应用的对象 /ApplicationContainer 的方法 Start 和 Stop 来设置时间点 /使 echo 服务应用在 1s 时开始(生效)并在 10s 时停止(失效) ApplicationContainer serverApps = echoServer.Install (nodes.Get (1); serverApps.Start (Seconds (1.0); serverApps.Stop (Seconds (10.0); /使用 UdpEchoClientHelper 来管理 UdpEchoClientApplicationecho,设置客户端的应 用 UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);/创建了一个生成器并告 诉它设置客户端的远端地址为服务器节点的 IP 地址。 /我们同样告诉它准备发送第二个数据包到端口 9。 echoClient.SetAttribute (“MaxPackets“, UintegerValue (1); /告诉客户端我们所允许它 在模拟期间所能发送的最大数据包个数 echoClient.SetAttribute (“Interval“, TimeValue (Seconds (1.0); /告诉客户端在两个数 据包之间要等待多长时间 echoClient.SetAttribute (“PacketSize“, UintegerValue (1024); /告诉客户端它的数据包 应该承载多少数据 /告诉 echo 客户端何时来开始和停止 ApplicationContainer clientApps = echoClient.Install (nodes.Get (0); clientApps.Start (Seconds (2.0); clientApps.Stop (Seconds (10.0); /*应用 程序部分结束*/ Simulator:Run (); /运行 模拟器 Simulator:Destroy (); /销毁所有被创建的对象 return 0; 2. Second.cc #include “ns3/core-module.h“ #include “ns3/network-module.h“ #include “ns3/csma-module.h“ #include “ns3/internet-module.h“ #include “ns3/point-to-point-module.h“ #include “ns3/applications-module.h“ #include “ns3/ipv4-global-routing-helper.h“ / Default Network Topology 拓扑分布 / / 10.1.1.0 / n0 - n1 n2 n3 n4 / point-to-point | | | | / = / LAN 10.1.2.0 /n0 和 n1 实现点到点通信,n1n4 是个 csma 有线局域网。网络可以实现 n0 经由 n1, 和 n4 进行通信。 using namespace ns3; NS_LOG_COMPONENT_DEFINE (“SecondScriptExample“);/定义日志组件 int main (int argc, char *argv) bool verbose = true;/定义 bool 变量用于决定是否开启日志组件,默认开启 uint32_t nCsma = 3;/变量,用于定义 csma 网络中有多少个 node CommandLine cmd; cmd.AddValue (“nCsma“, “Number of “extra“ CSMA nodes/devices“, nCsma); cmd.AddValue (“verbose“, “Tell echo applications to log if true“, verbose); /命令行参数,设置是否开启 logging cmd.Parse (argc,argv); if (verbose) LogComponentEnable (“UdpEchoClientApplication“, LOG_LEVEL_INFO); LogComponentEnable (“UdpEchoServerApplication“, LOG_LEVEL_INFO); nCsma = nCsma = 0 ? 1 : nCsma; /*网络拓扑部分*/ /p2p 链路的两个节点创建 NodeContainer p2pNodes; p2pNodes.Create (2); /创建 csma 网络节点 NodeContainer csmaNodes; csmaNodes.Add (p2pNodes.Get (1);/将 p2p 节点 1 加到 csma 网络中 csmaNodes.Create (nCsma); /设置 p2p 传输速率和信道延迟 PointToPointHelper pointToPoint; pointToPoint.SetDeviceAttribute (“DataRate“, StringValue (“5Mbps“); pointToPoint.SetChannelAttribute (“Delay“, StringValue (“2ms“); /安装 p2p 网卡到 p2p 网络节点 NetDeviceContainer p2pDevices; p2pDevices = pointToPoint.Install (p2pNodes); /设置 csma 传输速率和信道延迟,注意传输速率有 channel 指定,而非 device 属性。 (CSMA 不允许同一信道上有多个不同数据率的设备) CsmaHelper csma; csma.SetChannelAttribute (“DataRate“, StringValue (“100Mbps“); csma.SetChannelAttribute (“Delay“, TimeValue (NanoSeconds (6560); NetDeviceContainer csmaDevices; csmaDevices = csma.Install (csmaNodes); /安装协议 InternetStackHelper stack; stack.Install (p2pNodes.Get (0);/p2p 的 n0 节点,n1 节点在 csma 网络中安装协议栈 stack.Install (csmaNodes); Ipv4AddressHelper address; address.SetBase (“10.1.1.0“, “255.255.255.0“); Ipv4InterfaceContainer p2pInterfaces; p2pInterfaces = address.Assign (p2pDevices); address.SetBase (“10.1.2.0“ , “255.255.255.0“); Ipv4InterfaceContainer csmaInterfaces; csmaInterfaces = address.Assign (csmaDevices); /*应用程序部分*/ UdpEchoServerHelper echoServer (9);/服务器端口号 /将 server 服务器安装在 csma 网络的 n4 节点。假定 nCsma=3 ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma); serverApps.Start (Seconds (1.0); serverApps.Stop (Seconds (10.0); UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9);/设定远程服 务器的 IP 地址和端口号 echoClient.SetAttribute (“MaxPackets“, UintegerValue (1); echoClient.SetAttribute (“Interval“, TimeValue (Seconds (1.0); echoClient.SetAttribute (“PacketSize“, UintegerValue (1024); ApplicationContainer clientApps = echoClient.Install (p2pNodes.Get (0); clientApps.Start (Seconds (2.0); clientApps.Stop (Seconds (10.0); /*建立网络路由*/ Ipv4GlobalRoutingHelper:PopulateRoutingTables (); /*开启 pcap 追踪*/ /开启 p2pHelper,csmaHelper 类对象的 pcap pointToPoint.EnablePcapAll (“second“); csma.EnablePcap (“second“, csmaDevices.Get (1), true); Simulator:Run (); Simulator:Destroy (); return 0; 3. thid.cc #include “ns3/core-module.h“ #include “ns3/point-to-point-module.h“ #include “ns3/network-module.h“ #include “ns3/applications-module.h“ #include “ns3/wifi-module.h“ #include “ns3/mobility-module.h“ #include “ns3/csma-module.h“ #include “ns3/internet-module.h“ / Default Network Topology 网络拓扑 / / Wifi 10.1.3.0 / AP / * * * * / | | | | 10.1.1.0 / n5 n6 n7 n0 - n1 n2 n3 n4 / point-to-point | | | | / = / LAN 10.1.2.0 /n0,n5-n7:wifi 网络,n0 为 AP,n5,n6,n7 为无线 STA; n0 和 n1:p2p 通信; n1- n4:csma 网络。示例中实现了节点 n7 和 n4 通信。 using namespace ns3; NS_LOG_COMPONENT_DEFINE (“ThirdScriptExample“); int main (int argc, char *argv) bool verbose = true;/用于是否启用 logging 组件 uint32_t nCsma = 3;/设置 nCsma 和 nWifi 的额外 STA 个数 uint32_t nWifi = 3; CommandLine cmd; cmd.AddValue (“nCsma“, “Number of “extra“ CSMA nodes/devices“, nCsma); cmd.AddValue (“nWifi“, “Number of wifi STA devices“, nWifi); cmd.AddValue (“verbose“, “Tell echo applications to log if true“, verbose); cmd.Parse (argc,argv); if (nWifi 18) std:cout 四、 实验结果与分析 任务一: 1 使用 build.py 编译 图 1 build.py 编译结果 2.运行“ ./test.py -c core”脚本进行 ns-3 软件包单元测试 命令:./test.py -c core 图 2 ./test.py -c core 编译结果 任务二: 1.运行 first.cc 图 3 first.cc 运行结果 2.运行 second.cc 图 4 second.cc 运行结果 3.运行 third.cc 图 5 third.cc 运行结果 通过该例子,我们来看看两个基本概念:拓扑生成器类和 Applications 类 (1)拓扑生成器 NodeContainer 类: 节点概念是我们的一个关键抽象概念。节点代表一台能够加入诸如协议栈,应用以及外 设卡等等的东西的计算机。NodeContainer 的拓扑生成器提供一种简便的方式来创建、管 理和使用任何节点对象,我们用这些节点来运行模拟器。 PointToPointHelper 类: PointToPointHelper 被用来做关于创建,配置和安装设备的工作。在这个脚本中仅需使 用 PointToPointHelper 来配置和连接 ns-3 的 PointToPointNetDevice 和 PointToPointChannel 对象。 字符串“DataRate” 与 PointToPointNetDevice 的一个属性相对应,PointToPointChannel 也 有一个 Delay 属性。 NetDeviceContainer 类: PointToPointHelper 的 Install()方法以一个 NodeContainer 对象作为一个参数。在 Install() 方法内,一个 NetDeviceContainer 被创建了。对于在 NodeContainer 对象中的每一个节点 (对于一个点到点链路必须明确有两个节点),一个 PointToPointNetDevice 被创建和保存在 设备容器内。一个 PointToPointChannel 对象被创建,两个 PointToPointNetDevices 与之连 接。当 PointToPointHelper 对象创建时,那些在生成器中就被预先地设置的属性被用来初 始化对象对应的属性值。 当调用了 pointToPoint.Install(nodes)后,我们会有两个节点,每一个节点安装了点到点 网络设备,在它们之间是一个点到点信道。两个设备会被配置在一个有 2 毫秒传输延时的 信道上以 5M 比特每秒的速率传输数据。 Inter
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川卫生康复职业学院《统计计算与应用软件》2023-2024学年第二学期期末试卷
- 玉溪职业技术学院《材料科学基础(Ⅰ)》2023-2024学年第二学期期末试卷
- 西安美术学院《民航服务英语(一)》2023-2024学年第二学期期末试卷
- 重庆城市职业学院《数据模型与决策》2023-2024学年第二学期期末试卷
- 辽宁体育运动职业技术学院《中医临床》2023-2024学年第一学期期末试卷
- 重庆化工职业学院《工具书与文献检索》2023-2024学年第二学期期末试卷
- 信息技术员劳动合同
- 厂家厂房承包合同
- 宾馆经营权承包合同
- 养殖产销买卖合同协议书
- 下肢动脉闭塞护理查房
- 诉讼异地管辖申请书范本 法院
- 2024年杭州市能源集团招聘笔试参考题库含答案解析
- 提高压疮预防措施的落实率
- 车辆租赁服务技术规范书
- 新生儿呼吸窘迫综合征教学护理查房
- 神经发育障碍
- 低血容量性休克急救护理课件
- 冷却塔热力计算书1
- 小于胎龄儿和大于胎龄儿课件
- 第八章土壤退化过程与环境质量课件
评论
0/150
提交评论