How to Implement Optimal Routing in NS2

 

To implement the Optimal routing that refers to discovering the finest path according to the particular metric like shortest distance, lowest delay, or least cost. In this simulation tool NS2, we execute the optimal routing with the help of the dynamic routing protocol such as Dijkstra’s algorithm for shortest-path routing or adjusting one of the existing protocols to enhance rely on the preferred metric. Receive personalized support for implementing Optimal Routing in NS2. Given below is a common procedure to implement it in NS2:

Steps to Implement Optimal Routing in NS2:

  1. Install and Set Up NS2

Make sure NS2 is installed and configured properly on the system. If NS2 is not installed, then we can download it from NS2’s official website.

  1. Choose the Routing Metric

Optimal routing is usually enhances one of the given metrics:

  • Shortest path (minimal hop count)
  • Lowest delay (minimizing network latency)
  • Least cost (minimizing transmission cost, bandwidth, etc.)
  1. Use a Dynamic Routing Protocol

To replicate this optimal routing, we can be used a built-in dynamic routing protocol in the simulation NS2, such as:

  • OSPF (Open Shortest Path First): Discover the shortest path based on link state routing.
  • Dijkstra’s Algorithm: Computes the best path using the shortest-path method.
  • AODV (Ad hoc On-Demand Distance Vector): On-demand routing protocol, which discover the shortest path in a mobile ad-hoc network.

If we desire a custom method then we can execute a custom algorithm or adjust existing routing protocols in the NS2.

  1. Modify the Tcl Script

We can allow a dynamic routing protocol in NS2, which is executes the optimal routing depends on the shortest path, lowest cost, etc. The following is a sample using Dijkstra’s shortest path with static routing for wired networks:

Example Tcl Script for Optimal Routing Using Static Shortest Path:

# Create a new NS2 simulator instance

set ns [new Simulator]

# Create trace and NAM files for output

set tracefile [open “optimal_trace.tr” w]

$ns trace-all $tracefile

set namfile [open “optimal.nam” w]

$ns namtrace-all $namfile

# Define network topology with 5 nodes

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

set n4 [$ns node]

# Create duplex links between nodes (bandwidth, delay)

$ns duplex-link $n0 $n1 2Mb 10ms DropTail

$ns duplex-link $n0 $n2 2Mb 20ms DropTail

$ns duplex-link $n1 $n3 2Mb 10ms DropTail

$ns duplex-link $n2 $n3 2Mb 15ms DropTail

$ns duplex-link $n3 $n4 2Mb 10ms DropTail

# Enable static routing

$ns rtproto Static

# Manually define routes (optimal routing based on shortest path or delay)

# For example: Route from n0 to n4 via n1 and n3 (shortest path based on delay)

$ns manual-route $n0 $n4 $n1 $n3 $n4

# Attach TCP agents to nodes n0 and n4

set tcp0 [new Agent/TCP]

$ns attach-agent $n0 $tcp0

set sink [new Agent/TCPSink]

$ns attach-agent $n4 $sink

# Connect the agents

$ns connect $tcp0 $sink

# Create a CBR traffic source

set cbr [new Application/Traffic/CBR]

$cbr attach-agent $tcp0

$cbr set packetSize_ 512

$cbr set interval_ 0.05

# Schedule CBR traffic to start and stop at defined times

$ns at 1.0 “$cbr start”

$ns at 4.5 “$cbr stop”

# End the simulation after 5.0 seconds

$ns at 5.0 “finish”

# Procedure to finish the simulation

proc finish {} {

global ns tracefile namfile

$ns flush-trace

close $tracefile

close $namfile

exec nam optimal.nam &

exit 0

}

# Run the simulation

$ns run

  1. Key Components of the Tcl Script for Optimal Routing:
  • Manual Routing for Optimal Paths: In the above instance, we are manually describe the finest routes according to the shortest path using latency as the metric.
  • Nodes and Links: These nodes like n0, n1, n2, n3, n4 and the links among them are described, with latency and bandwidths signifying link costs.
  • Static Routing (Manual): The routing paths are defined manually with the help of the manual-route command and permitting us to set the best path from n0 to n4 through n1 and n3 based on link delay.
  • Traffic Generation: A TCP agent is added to n0 and a TCPSink agent to n4. A CBR (Constant Bit Rate) traffic source is used to produce traffic among the nodes.
  1. Run the Simulation

When the Tcl script is prepared, run the simulation in NS2:

ns optimal_simulation.tcl

It will produce the trace file (optimal_trace.tr) and NAM file (optimal.nam).

  1. Analyse Results

We can visualize the simulation using the NAM (Network Animator) to monitor the optimal routing path:

nam optimal.nam

In the NAM, we would monitor, which packets are routed along the best path from n0 to n4 via n1 and n3, rely on the shortest delay.

  1. Use Dynamic Routing for More Complex Optimal Routing

If we need to use a more difficult dynamic routing protocol such as OSPF or AODV to execute optimal routing, follow these steps:

  • Allow dynamic routing protocols using $ns rtproto <protocol_name>.
  • For example, to permit OSPF, use:

$ns rtproto OSPF

  • This routing protocol will dynamically calculate the optimal path depends on the present state of the network like link costs, bandwidth, or delay.

Conclusion:

  • Optimal routing can be executed in the NS2 by using a dynamic routing protocol such as OSPF or by manually set up the static routes according to the selected parameters such as shortest path, least delay, etc.
  • If we desire the dynamic performance (reacting to link changes or failures) then we can use a built-in dynamic protocol.
  • For simple instances, we can manually describe the static optimal routes using manual-route.

The procedure to execute and evaluate the Optimal Routing in the simulation tool NS2 has been thoroughly explained above. Specific details will follow soon regarding this topic in various tool.