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

How to Implement interior protocol in ns3

To implement an interior routing protocol (IGP) in ns-3, can be done in two ways. By using one of the built-in protocols in ns3 like OSPF, RIP, or by creating a custom protocol. ns-3 does not natively support OSPF, so we explain the interior routing protocol (IGP) using the RIP (Routing Information Protocol) as an example. Here’s a step-by-step guide to implementing RIP in ns-3.

Step-by-Step Guide to Implementing interior Protocol in ns3:

  1. Set Up Your Environment

Ensure that ns3 is installed.

  1. Create a New ns-3 Script

Create a new simulation script in the scratch directory of the ns3 installation. For example, create a file named rip-simulation.cc.

cd ns3.xx

cd scratch

touch rip-simulation.cc

3. Include Necessary Headers

In the rip-simulation.cc file, include the necessary headers for the simulation process.

#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/rip-helper.h”

 

using namespace ns3;

4. Set Up the Network Topology

Define the network topology. Let’s create a basic topology with three nodes connected in a line and use RIP as the routing protocol.

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

{

  CommandLine cmd;

  cmd.Parse (argc, argv);

  NodeContainer nodes;

  nodes.Create (3);

  PointToPointHelper pointToPoint;

  pointToPoint.SetDeviceAttribute (“DataRate”, StringValue (“5Mbps”));

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

  NetDeviceContainer devices;

  devices = pointToPoint.Install (nodes.Get (0), nodes.Get (1));

  devices.Add (pointToPoint.Install (nodes.Get (1), nodes.Get (2)));

  InternetStackHelper stack;

  RipHelper rip;

  Ipv4ListRoutingHelper list;

  list.Add (rip, 0);

  stack.SetRoutingHelper (list);

  stack.Install (nodes);

 

  Ipv4AddressHelper address;

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

  Ipv4InterfaceContainer interfaces = address.Assign (devices.Get (0));

  interfaces.Add (address.Assign (devices.Get (1)));

  address.SetBase (“10.1.2.0”, “255.255.255.0”);

  interfaces.Add (address.Assign (devices.Get (2)));

  // Set up applications (e.g., a UDP echo server and client)

  UdpEchoServerHelper echoServer (9);

  ApplicationContainer serverApps = echoServer.Install (nodes.Get (2));

  serverApps.Start (Seconds (1.0));

  serverApps.Stop (Seconds (10.0));

  UdpEchoClientHelper echoClient (interfaces.GetAddress (2), 9);

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

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

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

  ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));

  clientApps.Start (Seconds (2.0));

  clientApps.Stop (Seconds (10.0));

  Simulator::Run ();

  Simulator::Destroy ();

  return 0;

}

5. Configure the RIP Protocol

In this example, the RIP protocol is installed and configured using the RipHelper class. The RipHelper class configures the RIP routing protocol on the nodes.

6. Build and Run the Simulation

After writing the script, we need to build and run it.

./waf build

./waf –run scratch/rip-simulation

7. Analyze the Results

After running the simulation, we can analyze the results based on our needs. We want to add logging or tracing to observe the behavior of the RIP protocol.

Complete Example Script

Here’s an example script for reference:

#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/rip-helper.h”

using namespace ns3;

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

{

  CommandLine cmd;

  cmd.Parse (argc, argv);

  NodeContainer nodes;

  nodes.Create (3);

  PointToPointHelper pointToPoint;

  pointToPoint.SetDeviceAttribute (“DataRate”, StringValue (“5Mbps”));

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

  NetDeviceContainer devices;

  devices = pointToPoint.Install (nodes.Get (0), nodes.Get (1));

  devices.Add (pointToPoint.Install (nodes.Get (1), nodes.Get (2)));

  InternetStackHelper stack;

  RipHelper rip;

  Ipv4ListRoutingHelper list;

  list.Add (rip, 0);

  stack.SetRoutingHelper (list);

  stack.Install (nodes);

  Ipv4AddressHelper address;

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

  Ipv4InterfaceContainer interfaces = address.Assign (devices.Get (0));

  interfaces.Add (address.Assign (devices.Get (1)));

  address.SetBase (“10.1.2.0”, “255.255.255.0”);

  interfaces.Add (address.Assign (devices.Get (2)));

  // Set up applications (e.g., a UDP echo server and client)

  UdpEchoServerHelper echoServer (9);

  ApplicationContainer serverApps = echoServer.Install (nodes.Get (2));

  serverApps.Start (Seconds (1.0));

  serverApps.Stop (Seconds (10.0));

  UdpEchoClientHelper echoClient (interfaces.GetAddress (2), 9);

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

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

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

  ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));

  clientApps.Start (Seconds (2.0));

  clientApps.Stop (Seconds (10.0));

  Simulator::Run ();

  Simulator::Destroy ();

  return 0;

}

We had learnt to implementation of the interior routing protocol by using one of the in-built protocol RIP (Routing information protocol) as an example for IGP in ns3 environment. Facing any hardships then reach out for us for best programming support.