How to Implement Network Route Readjustment in NS2

To implement network route readjustment in NS2 has numerous steps to follow that includes to adjust or expanding the routing protocols to enthusiastically update or readapt the transmission according to the varying network conditions like link failures, node mobility, congestion, or energy levels. Route readjustment makes sure that data packets identify optimal paths even in the face of network topology changes. Share your research specifics with us, and we will offer you with the most accurate simulation results.

In NS2, popular routing protocols such as AODV (Ad hoc On-Demand Distance Vector) and DSR (Dynamic Source Routing) already have mechanisms for route discovery and maintenance, however additional logic can be establish to trigger route readjustment based on numerous parameters like:

  • Link quality or signal strength
  • Congestion or packet loss rate
  • Node energy level
  • Traffic load

In the given below are procedures to implement network route readjustment in NS2:

Step-by-Step Implementation:

  1. Understand the Existing Routing Protocol

NS2 supports a variety of routing protocols, like AODV, DSR, DSDV, and others. For instance, AODV is an on-demand protocol that generates routes when needed and maintains them until they break.

In AODV, the protocol maintains routes by:

  • Route Discovery: When a node needs a route to a destination, it broadcasts a Route Request (RREQ) packet.
  • Route Maintenance: When a link along the route breaks, a Route Error (RERR) is sent, and the route is invalidated.

The goal is to readjust routes proactively or reactively when network conditions change.

  1. Define a Trigger for Route Readjustment

We need to regulate the performance metric that will trigger the route readjustment. Common triggers include:

  • Link failure: When a link breaks because of node mobility or poor signal.
  • Congestion: When the packet loss rate exceeds a threshold or the queue length grows too large.
  • Energy levels: In energy-constrained networks like WSN, routes can need to be adapted based on node energy levels to prevent overusing low-energy nodes.
  • Traffic load: Route changes can be triggered according to traffic load, distributing traffic evenly via the network.
  1. Modify the Routing Protocol

We can expand the existing routing protocol such as AODV or DSR by adding logic to manage route readjustment. The C++ source files for AODV are usually located in the aodv directory (aodv.cc, aodv.h).

Example: Adding Route Readjustment Based on Link Quality (AODV)

To Adjust the AODV protocol to readjust routes according to link quality, that would:

  • Monitor link quality metrics (such as signal strength, SNR, or packet delivery ratio).
  • Trigger route readjustment when the link quality drops below a particular threshold.
  • Start a new route discovery process to discover a better route.

3.1. Monitor Link Quality

We can observe the signal strength or parameters in the recvReply() or recvError() functions in the AODV protocol.

void AODV::recvReply(Packet *p) {

struct hdr_ip *ih = HDR_IP(p);

struct hdr_aodv_reply *rp = HDR_AODV_REPLY(p);

// Example: Check the signal strength or other link quality metrics

double link_quality = getLinkQuality(rp->rp_src);

// If link quality is below a threshold, trigger route readjustment

if (link_quality < MIN_LINK_QUALITY_THRESHOLD) {

// Trigger route readjustment

triggerRouteReadjustment(rp->rp_dst);

}

// Normal processing of the reply packet

}

3.2. Trigger Route Readjustment

We can generate a function triggerRouteReadjustment() to invalidate the current route and start a new route discovery process.

void AODV::triggerRouteReadjustment(nsaddr_t dst) {

// Invalidate the current route to the destination

rt_entry *rt = rtable.rt_lookup(dst);

if (rt != 0) {

rt->rt_flags = RTF_INVALID;

}

// Initiate a new route discovery process

sendRequest(dst);

}

3.3. Route Discovery Process

When the route readjustment is triggered, the protocol sends a new Route Request (RREQ) to learn a better route.

void AODV::sendRequest(nsaddr_t dst) {

Packet *p = Packet::alloc();

struct hdr_aodv_request *rq = HDR_AODV_REQUEST(p);

// Fill in the RREQ packet details

rq->rq_type = AODVTYPE_RREQ;

rq->rq_hop_count = 0;

rq->rq_dst = dst;

rq->rq_src = index;

rq->rq_bcast_id = bid++;

// Send the RREQ packet to neighbors

sendBroadcast(p);

}

  1. Implement Route Readjustment Logic for Other Metrics

Similarly, we can execute route readjustment according to other parameters such as energy levels, congestion, or traffic load.

Example: Route Readjustment Based on Node Energy Levels

If we need to adjust routes according to the energy levels of nodes, we can modify the protocol to validate the energy of nodes along the route and avoid low-energy nodes.

void AODV::recvReply(Packet *p) {

struct hdr_ip *ih = HDR_IP(p);

struct hdr_aodv_reply *rp = HDR_AODV_REPLY(p);

// Example: Check the energy level of the node

double energy = getEnergyLevel(rp->rp_src);

// If the energy level is below a threshold, trigger route readjustment

if (energy < MIN_ENERGY_THRESHOLD) {

triggerRouteReadjustment(rp->rp_dst);

}

// Normal processing of the reply packet

}

  1. Integrate Route Readjustment with Packet Handling

In NS2, packets are processed at several layers (MAC, Network, etc.). Make sure that route readjustment logic is incorporated with packet forwarding and route maintenance so that packets are properly routed when routes are readjusted.

For instance, when a route is invalidated, we need to make sure that packets in the queue are either dropped or re-routed using the new route.

  1. Tcl Script to Simulate Route Readjustment

In the Tcl simulation script, we can configure the scenario to validate route readjustment. This contains to describe the network topology, mobility, and traffic.

# Create a simulator

set ns [new Simulator]

# Create nodes

set node1 [$ns node]

set node2 [$ns node]

set node3 [$ns node]

# Define routing protocol (AODV with route readjustment)

$ns rtproto AODV

# Set up mobility and traffic sources

# Run the simulation

$ns run

  1. Analyse the Results

After executing the simulation, we can evaluate the performance of the network to see how route readjustment affects parameters such as:

  • Throughput
  • Packet delivery ratio
  • End-to-end delay
  • Energy consumption (if energy-aware routing is implemented)

We can use trace files to capture these parameters and compare them with and without route readjustment.

Through the manual, we had get knowledge about how to execute and analyse the outcomes for network route readjustment in ns2 tool that provides the best path for transmission among the nodes even in the face of network topology changes. We will provide the further details on how the network route readjustment performs in other simulation scenarios.