Ns3 Projects for B.E/B.Tech M.E/M.Tech PhD Scholars.  Phone-Number:9790238391   E-mail: ns3simulation@gmail.com

How to Implement Wide Area Networks in ns3

To implement Wide Area Networks (WAN) in ns-3 by setting up a network which connects multiple local area networks (LANs) or metropolitan area networks (MANs) over large geographical distances we lay complete guidance. Here’s step-by-step guide to implement a Wide Area Network (WAN) in ns-3.

Step-by-Step Guide to Implement a Wide Area Network (WAN) in ns-3

  1. Set Up Your Development Environment
  1. Install ns-3:
    • Follow the official ns-3 installation guide.
  2. Install Required Modules:
    • Ensure you have all necessary ns-3 modules installed, such as Internet, Point-to-Point, and Applications modules.
  1. Create a Basic Wide Area Network Simulation Script

Here’s an example script to set up a basic WAN scenario using ns-3:

#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”

#include “ns3/mobility-module.h”

using namespace ns3;

NS_LOG_COMPONENT_DEFINE (“WideAreaNetworkExample”);

int main (int argc, char *argv[])

{

  // Set simulation parameters

  uint32_t numLANs = 3;

  uint32_t numNodesPerLAN = 5;

  double simTime = 30.0; // Simulation time in seconds

  CommandLine cmd;

  cmd.AddValue(“numLANs”, “Number of LANs”, numLANs);

  cmd.AddValue(“numNodesPerLAN”, “Number of nodes per LAN”, numNodesPerLAN);

  cmd.AddValue(“simTime”, “Simulation time”, simTime);

  cmd.Parse(argc, argv);

  // Create LANs and WAN core nodes

  NodeContainer coreNodes;

  coreNodes.Create(numLANs);

  std::vector<NodeContainer> LANs;

  for (uint32_t i = 0; i < numLANs; ++i)

  {

    NodeContainer lan;

    lan.Create(numNodesPerLAN);

    LANs.push_back(lan);

  }

  // Create Point-to-Point links between core nodes

  PointToPointHelper pointToPoint;

  pointToPoint.SetDeviceAttribute(“DataRate”, StringValue(“1Gbps”));

  pointToPoint.SetChannelAttribute(“Delay”, StringValue(“10ms”));

 

  NetDeviceContainer coreDevices;

  for (uint32_t i = 0; i < numLANs – 1; ++i)

  {

    NetDeviceContainer link = pointToPoint.Install(coreNodes.Get(i), coreNodes.Get(i + 1));

    coreDevices.Add(link);

  }

  // Install the Internet stack on core nodes and LAN nodes

  InternetStackHelper internet;

  internet.Install(coreNodes);

  for (auto &lan : LANs)

  {

    internet.Install(lan);

  }

  // Assign IP addresses to core devices

  Ipv4AddressHelper ipv4;

  ipv4.SetBase(“10.1.1.0”, “255.255.255.0”);

  ipv4.Assign(coreDevices);

  // Set up Point-to-Point connections within LANs

  for (uint32_t i = 0; i < numLANs; ++i)

  {

    PointToPointHelper lanPointToPoint;

    lanPointToPoint.SetDeviceAttribute(“DataRate”, StringValue(“100Mbps”));

    lanPointToPoint.SetChannelAttribute(“Delay”, StringValue(“2ms”));

    NetDeviceContainer lanDevices;

    for (uint32_t j = 0; j < numNodesPerLAN – 1; ++j)

    {

      NetDeviceContainer link = lanPointToPoint.Install(LANs[i].Get(j), LANs[i].Get(j + 1));

      lanDevices.Add(link);

    }

    // Assign IP addresses to LAN devices

    std::string base = “192.168.” + std::to_string(i + 1) + “.0”;

    ipv4.SetBase(base.c_str(), “255.255.255.0”);

    ipv4.Assign(lanDevices);

    // Install mobility model (optional, for visualization)

    MobilityHelper mobility;

    mobility.SetPositionAllocator(“ns3::GridPositionAllocator”,

                                  “MinX”, DoubleValue(10.0 * i),

                                  “MinY”, DoubleValue(10.0),

                                  “DeltaX”, DoubleValue(5.0),

                                  “DeltaY”, DoubleValue(10.0),

                                  “GridWidth”, UintegerValue(numNodesPerLAN),

                                  “LayoutType”, StringValue(“RowFirst”));

    mobility.SetMobilityModel(“ns3::ConstantPositionMobilityModel”);

    mobility.Install(LANs[i]);

  }

 

  // Create applications

  uint16_t port = 9;

  // Install a UDP echo server on the first node of the first LAN

  UdpEchoServerHelper echoServer(port);

  ApplicationContainer serverApps = echoServer.Install(LANs[0].Get(0));

  serverApps.Start(Seconds(1.0));

  serverApps.Stop(Seconds(simTime));

  // Install a UDP echo client on the first node of the last LAN

  UdpEchoClientHelper echoClient(LANs[0].Get(0)->GetObject<Ipv4>()->GetAddress(1, 0).GetLocal(), port);

  echoClient.SetAttribute(“MaxPackets”, UintegerValue(100));

  echoClient.SetAttribute(“Interval”, TimeValue(Seconds(1.0)));

  echoClient.SetAttribute(“PacketSize”, UintegerValue(1024));

  ApplicationContainer clientApps = echoClient.Install(LANs[numLANs – 1].Get(0));

  clientApps.Start(Seconds(2.0));

  clientApps.Stop(Seconds(simTime));

  // Enable tracing

  pointToPoint.EnablePcapAll(“wan-example”);

  // Run the simulation

  Simulator::Stop(Seconds(simTime));

  Simulator::Run();

  Simulator::Destroy();

 

  return 0;

}

Explanation of the Script

Here we have enlightened the basic steps of implementing WAN in ns-3:

  1. Include Necessary Headers:
    • Include headers for ns-3 core, network, internet, point-to-point, mobility, and applications modules.
  2. Set Simulation Parameters:
    • Define the number of LANs, number of nodes per LAN, and simulation time.
  3. Create Nodes:
    • Create core nodes for the WAN and LAN nodes using NodeContainer.
  4. Set Up Point-to-Point Links:
    • Use PointToPointHelper to set up point-to-point links between core nodes and within each LAN.
  5. Install Internet Stack:
    • Install the Internet stack on the core nodes and LAN nodes using InternetStackHelper.
  6. Assign IP Addresses:
    • Assign IP addresses to the core devices and LAN devices using Ipv4AddressHelper.
  7. Set Up Mobility:
    • Optionally, set up a mobility model for visualization using MobilityHelper.
  8. Create Applications:
    • Install a UDP echo server on the first node of the first LAN and a UDP echo client on the first node of the last LAN to simulate communication.
  9. Enable Tracing:
    • Enable pcap tracing to capture packet traces for analysis.
  10. Run the Simulation:
    • Set the simulation stop time, run the simulation, and clean up using Simulator::Stop, Simulator::Run, and Simulator::Destroy.

Further Enhancements

  1. Dynamic Traffic Patterns:
    • Implement dynamic traffic patterns to simulate real-world scenarios more accurately.
  2. Advanced Mobility Models:
    • Implement more realistic mobility models for mobile nodes within the WAN.
  3. Quality of Service (QoS):
    • Implement QoS mechanisms to prioritize critical applications and ensure timely delivery.
  4. Network Performance Metrics:
    • Collect and analyze performance metrics such as throughput, latency, packet delivery ratio, and resource utilization.
  5. Fault Tolerance and Resilience:
    • Implement and evaluate fault tolerance mechanisms and resilience strategies for WANs.
  6. Security:
    • Implement security mechanisms to protect data and services in the WAN environment.

We all get to know about implementing the process of Wide Area Networks in ns-3 environment by reading the above lines. Contact us for professionals coding support for your work.