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

How to Calculate Network Bandwidth in ns3

Calculating bandwidth in ns3, involves measuring the amount of data transmitted through a network link in a given period of time. Usually, bandwidth is expressed in bits per second (bps). Below are the steps to calculate bandwidth in ns3.

Steps for calculating bandwidth

  1. Set up the simulation :
  • To simulate the network, create a network topology with nodes, protocols and links configured.
  1. Install applications :
  • To generate and receive traffic, set up application.
  1. Trace the packets :
  • To record the amount of data transferred, use ns3 tracing capabilities.
  1. Calculate bandwidth :
  • To calculate the bandwidth over the desired period, use the traced data.

Below is an example to demonstrate the process:

  1. set up the simulation

Create a simple network topology. Point-to-point link between two nodes.

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

using namespace ns3;

NS_LOG_COMPONENT_DEFINE (“NetworkBandwidthExample”);

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

{

// Create two nodes

NodeContainer nodes;

nodes.Create (2);

// Set up the point-to-point link

PointToPointHelper pointToPoint;

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

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

// Install the link devices on the nodes

NetDeviceContainer devices;

devices = pointToPoint.Install (nodes);

// Install the internet stack

InternetStackHelper stack;

stack.Install (nodes);

// Assign IP addresses

Ipv4AddressHelper address;

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

Ipv4InterfaceContainer interfaces = address.Assign (devices);

// Set up the UDP echo server and client

uint16_t port = 9; // well-known echo port number

UdpEchoServerHelper echoServer (port);

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

serverApps.Start (Seconds (1.0));

serverApps.Stop (Seconds (10.0));

UdpEchoClientHelper echoClient (interfaces.GetAddress (1), port);

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

echoClient.SetAttribute (“Interval”, TimeValue (Seconds (0.01))); // 100 packets per second

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

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

clientApps.Start (Seconds (2.0));

clientApps.Stop (Seconds (10.0));

// Enable tracing

AsciiTraceHelper ascii;

pointToPoint.EnableAsciiAll (ascii.CreateFileStream (“network-bandwidth.tr”));

// Run the simulation

Simulator::Run ();

Simulator::Destroy ();

return 0;

}

  1. Install applications

In the above example, on one node a UDP echo server is installed. and on another node, a UDP echo client is installed. The client sends 1000 packets, each 1024 bytes in size, at an interval of 0.01 seconds.

  1. Trace the packets

There are several ways to trace packets in ns3. We can use either ASCII or PCAP tracing. But in our example, we enabled ASCII tracing.

  1. Calculate bandwidth

Parse the trace file to extract the total number of bytes transferred and the time period over which the transfer occurred after the simulation. Here is a basic way to process the trace file :

Example Python Script to Calculate Bandwidth

The following is an example script to calculate  bandwidth in python.

total_bytes = 0

start_time = None

end_time = None

with open(“network-bandwidth.tr”, “r”) as trace_file:

for line in trace_file:

if “UdpEchoClient” in line and “Sent” in line:

time = float(line.split()[1])  # Assuming the time is the second field

size = int(line.split()[5])    # Assuming the packet size is the sixth field

total_bytes += size

if start_time is None:

start_time = time

end_time = time

duration = end_time – start_time

bandwidth_bps = (total_bytes * 8) / duration  # Convert bytes to bits and divide by time

bandwidth_mbps = bandwidth_bps / 1e6          # Convert bps to Mbps

print(f”Total Bytes: {total_bytes}”)

print(f”Duration: {duration} seconds”)

print(f”Bandwidth: {bandwidth_mbps} Mbps”)

Explanation

  1. Simulation setup :

Two nodes are created. Those nodes are connected using a point-to-point link.

  1. Application setup :

On one node, a UDP echo server is installed. and On another node, a UDP echo client is installed. Configure the client to send a specified number of packets at a specified interval.

  1. Packet tracing :

To record packet events, enable ASCII.

  1. Calculating bandwidth :

to extract the total number of bytes transferred and the time period over which the transfer occurred, parse the trace files. Calculate bandwidth by using this data.

So, we had learned on calculating bandwidth in ns3 by measuring the amount of data transferred over a network link in a given period of time.

Please share your details with us, and we will conduct a performance analysis by calculating the bandwidth in ns3 simulation to provide you with the best results.