利用NS3部署不同拓扑无线网络

实验题目

利用NS2/NS3部署一个星型无线网络(一个AP,不少于5个接入点)、一个多跳无线网络(不少于6个网络节点)。并测量两种网络拓扑下的网络链路吞吐量,用图表表示。

实验目的

理解不同无线网络拓扑对性能的影响。

实验环境

操作系统 Linux Ubuntu 7.5.0

网络仿真软件 NS3-3.29

可视化程序 NetAnim

绘图软件 gnuplot

程序运行方法

一、将两个主程序放至NS3主程序waf同目录(ns-3.29)的文件夹scratch下,这个目录是NS3默认的脚本存放目录

启动waf来进行编译:

./waf --run scratch/star
./war --run scratch/hoc

二、编译成功后进行代码可视化,进入ns-allinone-3.29/netanim-3.108目录,使用Qt5的编译器qmake进行编译,执行指令make生成可执行文件NetAnim,运行./NetAnim

qmake ./NetAnim.pro
./NetAnim

打开编译所生成的.xml查看仿真图像即可查看可视化效果。

三、利用.awk脚本求吞吐量,将之前生成的.tr文件用gawk编译:

gawk -f throughout.awk star.tr > star
gawk -f throughout.awk hoc.tr > hoc

使用gnuplot来画图查看吞吐量:

gnuplot
plot "star" with lines
plot "hoc" with lines

实验内容及步骤

星型拓扑网络

星型网络的拓扑结构图如下:

创建网络节点

它用一个节点作为中心节点,其他节点直接与中心节点相连。整个网络由中心节点进行集中式管理,各节点的通信都要经过中心节点。AP,也就是无线接入点,就是本实验中网络的中心节点。 STA站点,每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点。 这里设置了6个接入点:

uint32_t nSta = 6;
NodeContainer staNodes;
staNodes.Create(nSta);
NodeContainer apNodes;
apNodes.Create(1);

配置信道属性

设置通信信道和物理层,使用的是默认的信道和PHY模型:

YansWifiChannelHelper channel=YansWifiChannelHelper::Default();
YansWifiPhyHelper phy=YansWifiPhyHelper::Default();
phy.SetChannel(channel.Create());

利用WiFi中的远程基站管理WifiRemoteStationManager,该函数的第一个参数就是设置速率控制方法,可选的参数如下图:

这里选择了AarfWifiManager(AARF速率控制算法):

WifiHelper wifi;
wifi.SetRemoteStationManager("ns3::AarfWifiManager");

之后配置Mac类型以及基础设置SSID,就是无线网的名字为ns-3-ssid,并且安装AP和STA:

WifiMacHelper mac;
Ssid ssid=Ssid("ns-3-ssid"); mac.SetType("ns3::StaWifiMac","Ssid",SsidValue(ssid),"ActiveProbing",BooleanValue(false));
NetDeviceContainer staDevices;
staDevices=wifi.Install(phy,mac,staNodes);
mac.SetType("ns3::ApWifiMac","Ssid",SsidValue(ssid));
NetDeviceContainer apDevices;
apDevices=wifi.Install(phy,mac,apNode);

然后加入移动模型,让STA可以移动,在xy轴正负50范围内随机移动,AP 固定:

MobilityHelper mobility;
mobility.SetPositionAllocator("ns3::GridPositionAllocator","MinX",DoubleValue(0.0),"MinY",DoubleValue(0.0),"DeltaX",DoubleValue(5.0),"DeltaY",DoubleValue(10.0),"GridWidth",UintegerValue(3),"LayoutType",StringValue("RowFirst"));
mobility.SetMobilityModel("ns3::RandomWalk2dMobilityModel","Bounds",RectangleValue(Rectangle(-50,50,-50,50)));
mobility.Install(staNodes);
mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
mobility.Install(apNode);

安装TCP/IP协议族

设置IP地址。安装了TCP/IP协议栈的节点还不能直接通信,还需要为节点的网络设备分配IP地址:声明一个地址生成器对象,地址从10.1.1.0开始,并以255.255.255.0为子网掩码分配地址,地址分配默认是从1开始并单调递增。

InternetStackHelper stack;
stack.Install(staNodes);
stack.Install(apNode);Ipv4AddressHelper address;
address.SetBase("10.1.1.0","255.255.255.0");
Ipv4InterfaceContainer wifiInterfaces;
wifiInterfaces=address.Assign(staDevices);
address.Assign(apDevices);

安装应用层

NS-3中的应用是对物理世界中应用程序内部网络通信功能的抽象,即模拟分组的发送和接收行为。常用Application的子类有:
1、UdpEcho
2、OnOffApplication
3、PacketSink

这里要安装UdpEcho的应用程序。创建一个服务器端echo服务应用echoSever,必须告知助手服务器和客户端所共知的一个端口号(此处为9号端口),否则这个助手不能起任何作用。echoSever在模拟自启动后1.0s时开始监听并接收9号端口的数据在接收到数据包后向echoClient返回一个相同大小的UDP数据包,并在10.0s停止。echo客户端应用的设置与回显服务器端类似,也有一个UdpEchoClientHelper来管理。

UdpEchoServerHelper echoServer(9);
ApplicationContainer serverApps=echoServer.Install(staNodes.Get(0));
serverApps.Start(Seconds(1.0));
serverApps.Stop(Seconds(15.0));
UdpEchoClientHelper echoClient(wifiInterfaces.GetAddress(0),9);
echoClient.SetAttribute("MaxPackets",UintegerValue(50));
echoClient.SetAttribute("Interval",TimeValue(Seconds(0.5)));
echoClient.SetAttribute("PacketSize",UintegerValue(1024));

应用对象需要一个时间参数来开始产生数据通信并且可能在一个可选的时间点停止。这些时间点是用ApplicationContainer的方法Start和Stop来设置的。

ApplicationContainer clientApps=echoClient.Install(staNodes.Get(nSta-1));
clientApps.Start(Seconds(1.0));
clientApps.Stop(Seconds(10.0));

数据生成

包括生成pcap用于查看具体数据包内容、生成用于netanim的xml文件、对数据包进行追踪得到.tr文件用于后续数据处理

phy.EnablePcap("star", apDevices.Get(0));
AnimationInterface anim("star-made-by-ls.xml");
AsciiTraceHelper asciiTraceHelper;
phy.EnableAsciiAll(asciiTraceHelper.CreateFileStream("star-made-by-ls.tr"));

启动与结束

最后所需要做的就是运行模拟器,这是用全局函数Simulator::Run来做到的:

Simulator::Run();
Simulator::Destroy();

多跳无线网络

多跳无线网络没有一个固定的ap,也没有固定的sta,每一个节点都可以成为ap和sta,所以需要建立一个hocwifi网络。 hoc网是一种多跳的、无中心的、自组织无线网络,又称为多跳网。

整个网络没有固定的基础设施,每个节点都是移动的,并且都能以任意方式动态地保持与其它节点的联系。在这种网络中,由于终端无线覆盖取值范围的有限性,两个无法直接进行通信的用户终端可以借助其它节点进行分组转发。每一个节点同时是一个路由器,它们能完成发现以及维持到其它节点路由的功能。

除了应用层之外,代码与之前星型网络的编写区别不大,节点上的设置略有不同,直接创建adhoc节点:

uint32_t nAdHoc = 6;
NodeContainer adHocNodes;
adHocNodes.Create(nAdHoc);

应用层采用OnOffApplication,就是按照OnOff模式,向一个节点发送流量。该模块的源代码也在first.cc中可以找到。

在脚本中调用Application::StartApplication之后,On和Off各自定义的随机值交替切换。也就是在Off模式时,没有流量产生;在On状态下产生CBR流量,也就是恒定比特率 Constants Bit Rate,这就是仿真使用的CBR流量源。

设置的两个属性OnTime表示在On状态的随机值,OffTime表示在Off状态的随机值:

onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));

如上设置表示一直处于发送状态。

计算吞吐量

分析吞吐量时利用了gawk工具,利用了awk脚本。从网上找一个名为throughout.awk的脚本即可计算吞吐量,但要修改一下脚本文件中IP设置模块:

myScrIP = "10.1.3.5";#This is the link that we pay attention to
myDstIP = "10.1.3.1";

对于星型网络需要设置STA设备的首个和最后一个ip,AP为10.1.3.0,那么第一个STA为10.1.3.1,;

对于多跳无线网络可以设置为首个和其余任意一个ip,需要一个一个查看

之后用gawk命令对两个tr文件分别执行脚本:

gawk -f throughout.awk star.tr > star
gawk -f throughout.awk hoc.tr > hoc

打开gnuplot,绘制图表即可:

plot "star" with lines
plot "hoc" with lines

运行结果

星型网络:

(一)网络可视化图

(二)吞吐量曲线

(三)pcap包

多跳网络:

(一)网络可视化图

(二)吞吐量曲线

10.1.3.1到10.1.3.2:

10.1.3.1到10.3.1.3:

10.1.3.1到10.1.3.4:

10.1.3.1到10.1.3.5:

(三)pcap包

参考资料

NS3样例程序first.cc

https://blog.csdn.net/qq_31676673/article/details/87992757

利用NS3部署不同拓扑无线网络相关推荐

  1. ns-3脚本初识——WIFI无线网络:third脚本

    ns-3脚本初识--WIFI无线网络:third脚本 ps:本文所有文件和目录的默认根目录均为ns-3.29/. 正如在构建点到点拓扑时看到的点到点拓扑和CSMA拓扑助手对象一样,将在本节中看到等效的 ...

  2. 无线网和网吧服务器,为网吧量身定做网吧无线网络部署方案

    提起网吧,已经有十一年的历史了,可人们已经很难找寻中国第一家网吧的身影,只是依稀记得一个咖啡馆提供了上网服务.时至今日,网吧已经罕有咖啡馆这样的休闲因素,再看咖啡厅和一些西餐厅,都提供了新潮的上网接入 ...

  3. 一文读懂去中心化无线网络DeWi

    无线网络是通往互联网的门户,但并不透明,这种情况很快就会改变.几十年来,电信服务一直控制着通信栈.随着互联网的转型,托管4K视频和数以百万计的物联网传感器,一些人质疑电信行业能否服务好下一代互联网用户 ...

  4. 【无线网络技术专题(十)】企业无线网络规划设计与交付流程

    无线专题共12篇,本文为第十篇(点击标题跳转历史文章): 无线专题(一):无线网络的前世今生 无线专题(二):Wi-Fi6与5G之战 无线专题(三):无线网络是通过空气传输数据吗? 无线专题(四):你 ...

  5. 3G无线网络对规划优化软件技术分析(转)

    一个全面的.具有多种技术以及用户友好界面的网络规划和优化软件,在移动运营商的无线网络规划及设计过程中起着举足轻重的作用.该软件不仅要具有强大的工程建设能力,而且应是一个开放的.可升级的和灵活的技术信息 ...

  6. 【典型室内场景无线网络部署方案】

    WLAN室内覆盖设计原则 1.WLAN室内覆盖规划需要在同一楼层区域内进行,针对该单楼层用户进行需求实现设计.楼内不同楼层应该独立设计,分别考虑覆盖设计方案. 2.在进行勘测设计时,首先应该考虑AP与 ...

  7. 【无线网络技术专题(九)】全网最全!典型室内场景无线网络部署方案!

    无线专题共12篇,本文为第九篇(点击标题跳转历史文章): 无线专题(一):无线网络的前世今生 无线专题(二):Wi-Fi6与5G之战 无线专题(三):无线网络是通过空气传输数据吗? 无线专题(四):你 ...

  8. 利用无线网络数据包分析无线网络安全

    转载:http://security.ctocio.com.cn/236/11489236.shtml 导言 无线网络的弊端在于你总是无法看到所面对的问题.在无线网络中,建立连接并不像连接有线网络那样 ...

  9. 企业无线网络部署的“时”与“机”

    千万别说企业无线是一个还不成熟.中看不中用,或是已经过期的概念,无论你如何理解,也改变不了企业无线产品和市场正处于龙卷风时期的事实,也即是说产品技术发展非常迅速,市场高速增长,越来越多的厂商不断被吸引 ...

最新文章

  1. Solr中Field常用属性
  2. linux系统源配置(根据自己理解编写,不当之处,敬请指教)
  3. 一种实现(无须root)手机截屏方案
  4. 《微信公众平台开发最佳实践》——2.4 本章小结
  5. 立镖机器人浙江_立镖在美国获2020 NextGen供应链解决方案奖
  6. java 双重检查锁 有序_Java中的双重检查锁(double checked locking)
  7. 万圣节海报素材PSD分层模板
  8. 10、Windows API 文件系统
  9. vux loadmore + axios 实现点击加载更多
  10. Activity的生命周期方面复习笔记
  11. android关于16进制转字符串的问题
  12. QNX系统开启telnet远程登录
  13. Rate 函数在PromQL 查询中的使用
  14. Solaris设置用户密码问题
  15. apache2.4配置https协议(key文件、crt文件、csr文件生成方法)
  16. Unity 获取设备信息
  17. heartbeat: ha.cf配置文件中文详解
  18. 无心剑七绝《梅西封王》
  19. IE8升级为IE11兼容性错误及解决方法总结
  20. 程序员求职攻略(《程序员面试笔试宝典》)之自己的强项或是研究方向与中意的工作岗位不一致怎么办?...

热门文章

  1. 【吴刚】淘宝天猫网站设计初级入门标准视频教程-吴刚-专题视频课程
  2. 唯美的古风句子——喜欢
  3. Unity(十八):利用反射来执行Unity编辑器的源码方法
  4. 接入滴滴打车html5 网页版,接入滴滴打车html5 网页版
  5. 微信h5实现分享给朋友url改变_h5 微信分享朋友和朋友圈
  6. windows桌面应用_现代Windows 8应用与Windows桌面应用不同的7种方式
  7. Revit插件推荐[三]
  8. 河南理工大学计算机考研,【计算机考研】院校信息-河南理工大学
  9. Android深入四大组件(七)Android8.0 根Activity启动过程(后篇)
  10. list列表根据父子关系组成树形实例