计算机网络实验——ns3仿真最短路由选择算法

实验设计:

  • 九个节点的ad-hoc网络,路由协议采用最短路由选择算法

          计算机网络实验——ns3仿真最短路由选择算法_第1张图片

实验目的:

  • 采用Floyd-Warshall算法实现ad-hoc网最短路由选择
  • 学习NS3仿真模拟器

实验设置:

  • 开发环境:Windows 10 Pro + VS2012 Express
  • 开发工具:NS3+ Mercurial
  • 开发语言:C++

实验心得:

Mercurial:

  • 基于pyhton的轻量级分布式版本控制

  • 基于 GNU General Public License (GPL) 授权的开源项目

  • 分布式:更轻松的管理。更健壮的系统。对网络的依赖性更低。

NS3:

  • 06年开源项目

  • 离散事件模拟器,C++语言编写。

  • 仿真脚本语言:Python与C++。

  • 可视化工具NetAnim

  • 可生成PCAP包trace文件供仿真分析

  • 计算机网络实验——ns3仿真最短路由选择算法_第2张图片

最短路由选择算法:

  • 静态路由算法

  • 目的:在一个由router构成的子网内,算法根据信道带宽,通信延时,队列长度,平均通信量,通信距离等指标,计算各router间通信最短路由表

  • 常见:Dijsktra,Floyd

Floyd-Warshall算法:

  • 是解决任意两点间的最短路径

  • 通常可以在任何图中使用,包括有向图]、带负权边的图

  • O(n^3)的算法复杂度

UDP客户端与服务端通信:

  • UDPServer用来收发包

  • UDP client则发包和接受来自Server的回应

  • UDP client 可有带CONNECT和不带CONNECT,和TCP通信的区别在于建立连接无需三次握手

Ad hoc 网络:

  • 前身是分组无线网(Packet Radio Network)。研究源于军事通信的需要,并已经持续了近20年。

  • Ad Hoc源自于拉丁语,意思是“for this”引申为“for this purpose only”,即Ad hoc网络是一种有特殊用途的网络。

  • IEEE802.11标准委员会采用了“Ad hoc网络”一词来描述这种特殊的自组织对等式多跳移动通信网络,Ad hoc网络就此诞生。

  • Ad Hoc结构是一种省去了无线中介设备AP而搭建起来的对等网络结构,只要安装了无线网卡,计算机彼此之间即可实现无线互联。

  • 原理是网络中的一台计算机主机建立点到点连接,相当于虚拟AP,而其他计算机就可以直接通过这个点对点连接进行网络互联与共享。

IPv4:

  • IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基础的协议。

  • Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。

  • 基于IPv4的网络难以实现网络实名制,一个重要原因就是因为IP资源的共用,因为IP资源不够,所以不同的人在不同的时间段共用一个IP,IP和上网用户无法实现一一对应。而IPv6的普及将改变现状,因为IPv6一个重要的应用将是实现网络实名制下的互联网身份证/VIeID,

NS3编程:

  • wifiHelper类,指定无线链路标准,涉及传输速率等网络参数

    • 第一代wifi标准 80211(80211b)

      1997年完成,传输速率支持1Mbps 和 2Mbps。支持采用FHSS(跳频)和DSSS(直接序列扩频),采用不同技术的设备是无法兼容的。

      WifiHelper wifi;
      wifi.SetStandard (WIFI_PHY_STANDARD_80211b);

       

  • YansWifiPhyHelper:描述天线相关参数,依赖于YansWifiChannelHelper 指定无线电传播模型:包括传播延时和衰减模型

    YansWifiPhyHelper wifiPhy =  YansWifiPhyHelper::Default ();
    YansWifiChannelHelper wifiChannel;
    wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
    wifiChannel.AddPropagationLoss ("ns3::LogDistancePropagationLossModel");
    wifiPhy.SetChannel (wifiChannel.Create ());

     

  • Mac层设备根据802.11b标准,设置传输速率1Mbps,采用DSSS拓频技术,DSSS技术将2.4G频段划分为14个信道,以chipping sequence 处理数据串,如待传送的数据为1, 则用 展频码“01001000111”代替1,展频码自身都够冗余校验,提升抗干扰能力。

    wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode",StringValue ("DsssRate1Mbps"), "ControlMode",StringValue ("DsssRate1Mbps"));

     

  • InternetStackHelper 类为节点聚合TCP/UDP/IP等功能所需协议,这里使用继承了ns3中IPv4路由协议实现ns3::IPv4RoutingHelper增加了最短路由算法的ShortestPathRouterHelper

    ShortestPathRoutingHelper sr;
    Ptr srt = CreateObject ();
    sr.Set ("RoutingTable", PointerValue (srt));
    ​
    //对现有节点nodes聚合IP/TCP/UDP功能。
    InternetStackHelper internet;
    internet.SetRoutingHelper (sr);
    internet.Install (nodes);

     

  • Ipv4AddressHelper 类为网络设备分配IPv4地址

    Ipv4AddressHelper ipv4;
    ipv4.SetBase ("10.1.1.0", "255.255.255.0"); 
    Ipv4InterfaceContainer iface = ipv4.Assign (devices);

     

  • 取代third.cc里的路由信息语句,此处ShortestPathRoutingTable类获悉各路由节点IP信息,并更新静态最短路径路由表

    for (uint16_t i = 0; i < numNodes; i++)
    {
          srt->AddNode (nodes.Get (i),   iface.GetAddress (i)); 
    }
    srt->UpdateRoute (60);

     

  • 任取通信距离大于可大范围的网络设备分别安装UDP服务端应用和UDP客户端应用,进行测试

  • 当 Simulator::Run 被调用时,系统会开始遍历预设事件的列表并执行。首先它会在1.0 s时运行事件,这个事件会使echo服务端应用生效。接下来仿真器会运行在t=2.0 s时的事件,即让echo客户端应用开始。

    UdpServerHelper echoServer (9);
    ​
    ApplicationContainer serverApps = echoServer.Install (nodes.Get (8));
    serverApps.Start (Seconds (1.0));
    serverApps.Stop (Seconds (20.0));
      
    ​
    UdpClientHelper client (iface.GetAddress (8), 9);
    client.SetAttribute ("MaxPackets", UintegerValue (2));
    client.SetAttribute ("Interval", TimeValue (Seconds (1)));
    client.SetAttribute ("PacketSize", UintegerValue (1000));
    ​
     
    ApplicationContainer clientApps;
    clientApps = client.Install (nodes.Get (1)); 
    clientApps.Start (Seconds (2.0));
    clientApps.Stop (Seconds (20.0));
    ​
    Simulator::Run ();
    Simulator::Destroy ();

     

 

你可能感兴趣的:(计算机网络)