ns3中third.cc学习,它模拟了一个包括点对点和CSMA的有线网络,以及WIFI无线网络的混合场景。
网络拓扑示意图:

//头文件
#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"           //WIFI模块
#include "ns3/mobility-module.h"      //移动模块
#include "ns3/csma-module.h"         //CSMA模块
#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.0using namespace ns3;//声明命名空间NS_LOG_COMPONENT_DEFINE ("ThirdScriptExample");int main (int argc, char *argv[])
{bool verbose = true;uint32_t nCsma = 3;uint32_t nWifi = 3;bool tracing = false;CommandLine cmd;cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma);cmd.AddValue ("nWifi", "Number of wifi STA devices", nWifi);//读取命令行参数,“nWifi”参数控制脚本中的无线节点数量。数值可以在waf命令中设置。//./waf --run "third --n WiFi=18"    //无线节点数量18cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose);cmd.AddValue ("tracing", "Enable pcap tracing", tracing);cmd.Parse (argc,argv);
  // The underlying restriction of 18 is due to the grid position// allocator's configuration; the grid layout will exceed the// bounding box if more than 18 nodes are provided.if (nWifi > 18){std::cout << "nWifi should be 18 or less; otherwise grid layout exceeds the bounding box" << std::endl;return 1;}if (verbose){LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);}

点对点网络:

  NodeContainer p2pNodes;p2pNodes.Create (2);PointToPointHelper pointToPoint;pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));NetDeviceContainer p2pDevices;p2pDevices = pointToPoint.Install (p2pNodes);

CSMA网络:

//声明NodeContainer放置已经成为CSMA网络的一部分节点,在点到点的结点容器中得到第一结点,把它加入到CSMA设备的结点容器中,在建立一些“多余的”结点NodeContainer csmaNodes;csmaNodes.Add (p2pNodes.Get (1));//双接口结点csmaNodes.Create (nCsma);//创建CSMA网络节点CsmaHelper csma;//CSMA助手类//设置CSMA信道属性:传输速率为100Mbps,传播延迟6560nscsma.SetChannelAttribute ("DataRate", StringValue ("100Mbps"));csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560)));NetDeviceContainer csmaDevices;csmaDevices = csma.Install (csmaNodes);//连接结点与信道,在节点中设置网络设备

WiFi网络:(由一个接入点和nWiFi个移动节点组成)

//接下来创建的节点会成为无线网络的一部分,创建多个命令行参数指定的“站”节点,使用点对点链路“最左边”节点作为接入点。NodeContainer wifiStaNodes;wifiStaNodes.Create (nWifi);NodeContainer wifiApNode = p2pNodes.Get (0);//设置Channel和WiFiPhy
//默认传播延迟模型,损耗模型,误码率模型YansWifiChannelHelper channel = YansWifiChannelHelper::Default ();YansWifiPhyHelper phy = YansWifiPhyHelper::Default ();phy.SetChannel (channel.Create ());//设置WiFiMac并在结点中安装NetDeviceWifiHelper wifi;wifi.SetRemoteStationManager ("ns3::AarfWifiManager");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, wifiStaNodes);mac.SetType ("ns3::ApWifiMac",//AP结点"Ssid", SsidValue (ssid));NetDeviceContainer apDevices;//安装AP结点apDevices = wifi.Install (phy, mac, wifiApNode);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 (wifiStaNodes);
//设置移动模型mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");mobility.Install (wifiApNode);InternetStackHelper stack;stack.Install (csmaNodes);stack.Install (wifiApNode);stack.Install (wifiStaNodes);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);address.SetBase ("10.1.3.0", "255.255.255.0");address.Assign (staDevices);address.Assign (apDevices);UdpEchoServerHelper echoServer (9);ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma));serverApps.Start (Seconds (1.0));serverApps.Stop (Seconds (10.0));UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9);echoClient.SetAttribute ("MaxPackets", UintegerValue (1));echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));echoClient.SetAttribute ("PacketSize", UintegerValue (1024));ApplicationContainer clientApps = echoClient.Install (wifiStaNodes.Get (nWifi - 1));clientApps.Start (Seconds (2.0));clientApps.Stop (Seconds (10.0));Ipv4GlobalRoutingHelper::PopulateRoutingTables ();Simulator::Stop (Seconds (10.0));if (tracing == true)   //将上文的tracing设置为true可生成跟踪文件{pointToPoint.EnablePcapAll ("third");phy.EnablePcap ("third", apDevices.Get (0));csma.EnablePcap ("third", csmaDevices.Get (0), true);}Simulator::Run ();Simulator::Destroy ();return 0;
}

模拟运行结果:

可产生.pcap跟踪文件,third-0-0.pcap,third-0-1.pcap,third-1-0.pcap,third-1-1.pcap
例如:

NetAnim仿真

NS-3——学习(3)相关推荐

  1. NS各种常用资料(转)

    原文来自于: http://www.netforum.com.cn/forum_posts.asp?TID=9306&PN=1 (一). NS常用基本网站 1. Maillist个人觉得是寻求 ...

  2. NS各种常用资料 [转载]

    (一). NS常用基本网站 1. Maillist个人觉得是寻求问题答案最好的地方. http://mailman.isi.edu/pipermail/ns-users/ 2. 柯老师的网站,包含很多 ...

  3. NS版块可下载资源综合(updated 2007.12.12)--百思论坛

    NS版块可下载资源综合(updated 2007.12.12) 由于广大NSer们的共同努力,本版块已初具规模,为了方便广大新手们下载有用资源,综合了本版块可下载资源的链接: 由于本人时间及精力有限, ...

  4. [转]NS2上实现一个简单的路由协议

    NS2版本:2.34 要实现简单的路由协议: 就是按照你的要求从节点1发到节点2在从节点2发到节点3,我修改的是node节点的addr-classifier功能,因为addr-classifier是负 ...

  5. ipv4v6双栈技术_【第二十六期】IPv6系列应用篇——数据中心IPv4/IPv6双栈架构探讨...

    背景 2017年,工业和信息化部发布了<推进互联网协议第六版(IPv6)规模部署行动计划>的通知,从国家层面推动下一代IP技术--IPv6的普及和应用.目标到2020年末,IPv6活跃用户 ...

  6. NS2相关学习——在ns中模拟无线场景

    之前学习的都是有线场景下的NS2相关应用,现在开始,终于要学习无线啦!无线是我研究的重点,要好好学习呀! 在本节中,我们将学习使用ns中提供的移动无线仿真模型. 该部分由两部分组成. 在第一小节中,我 ...

  7. linux ns级定时器_linux学习13,一文弄懂内核的“绝对公平调度”机制是如何设计的...

    前面两节介绍了一下 linux 中进程的资源,本节再来学习下 linux 中 cfs 进程的调度. linux 进程的时间记账 上一节说到为了尽量让每个进程都有相对公平的机会运行,linux 在设计进 ...

  8. 【IPv6】NS,NA 报文学习

    原本地址:https://blog.51cto.com/qiaopeng688/2150114?source=dra IPV6邻居发现报文学习 IPv6的邻节点发现协议的所有功能都由以下报文来完成: ...

  9. ns的安装与使用及tcl的入门学习

    1 安装linux (1)windows下删除卷,为安装linux提供空间 (2)下载ubantuISO文件,通过ultraISO刻录到U盘 (3)按照网上教程分配空间,完成linux安装 2 安装N ...

  10. openfoam学习心得--N-S方程无数种写法汇总与转换

    openfoam学习心得–N-S方程无数种写法汇总与转换以及守恒与非守恒型 在学习openfoam的途中,楼主被流体中存在的无数个方程.同一个方程无数种写法弄的晕头转向,决定对此做一些总结,方便以后查 ...

最新文章

  1. 做时间序列预测没必要深度学习!GBDT性能超DNN
  2. linux c 下信号量 windows下event_windows和linux下配置jdk环境
  3. python 查找算法_七大查找算法(Python)
  4. matlab如何画函数的外包络曲线,怎样在MATLAB中划出一个函数的包络线?
  5. 系统性能衡量维度、指标
  6. java xml 序列化_java-序列化为XML时忽略父类
  7. WCF部署到IIS不使用svc文件
  8. 打破“信息孤岛”不能透支信息安全
  9. 名为 cursor_jinserted 的游标不存在_一个工程师必须了解的测量常识,你不知道怎么行...
  10. unicode编码java_JAVA转化Unicode编码
  11. word转PDF(使用liberOffice插件)
  12. 二级计算机excel以宏保存,excel宏保存 设置宏保存位置的操作方法
  13. 《老路用得上的商学课》91-95学习笔记
  14. python怎么读取txt数据_对python .txt文件读取及数据处理方法总结
  15. PowerShell 实现企业微信机器人推送消息
  16. 遇到问题---maven----Unable to process Jar entry
  17. STM32 基础系列教程 16 - I2S(模拟)
  18. centos7升级系统内核
  19. stormmedia文件夹,360downloads文件夹,FavoriteVideo文件夹是干什么的?
  20. System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d

热门文章

  1. fast marching method 计算内波相速度
  2. stm32f103r6最小系统原理图_stm32最小系统原理及结构组成
  3. #创新应用#点心桌面:桌面美化利器!
  4. 《操作系统》计算机专业英文整理
  5. 中邮揽投无法扫一扫二维码问题分析
  6. bcd码和16进制的区别
  7. 计算机的过去和现在作文英语,现在和过去的英语作文
  8. 垃圾回收篇~~垃圾回收器
  9. kiwi支持html5播放器,KiWi浏览器 一款支持安装谷歌插件的安卓浏览器
  10. Apache Twill —— 分布式应用开发框架