How to Implement Shortest Path Routing in NS2

To implement Shortest Path Routing in NS2 has needs to mimic the network in which the data packets are transmitted together with shortest path among source and destination nodes. The shortest path is usually determined according to the factors such as hop count, link delay, or bandwidth. Since NS2 does not directly support a shortest path routing protocol by default, and we can mimic the shortest path routing by using NS2’s built-in routing mechanisms or physically describing the routes based on precomputed shortest paths. The following are the implementation procedure to execute the shortest path routing in ns2:

Steps to Implement Shortest Path Routing in NS2

  1. Set Up NS2 Environment
    • Make sure that NS2 is installed and properly configured on the computer.
  2. Design the Network Topology
    • Generate a network topology with multiple nodes and links of changing latency or bandwidths, so that the shortest path can be calculated and used for routing.
  3. Use NS2’s Built-in Link-State (LS) Routing
    • NS2 has a built-in routing protocol for shortest path routing known as LS that simulate a simple link-state protocol in which the routes are computed based on link weights usually a hop count.

Example OTcl Script for Shortest Path Routing

The given below is an sample OTcl script that configures a simple network and mimic the shortest path routing using NS2’s built-in LS protocol.

# Define the simulation environment

set ns [new Simulator]

# Open the trace file for recording data

set tracefile [open out.tr w]

$ns trace-all $tracefile

# Define the finish procedure

proc finish {} {

global ns tracefile

$ns flush-trace

close $tracefile

exec nam out.nam &

exit 0

}

# Create network nodes

set node1 [$ns node]

set node2 [$ns node]

set node3 [$ns node]

set node4 [$ns node]

set node5 [$ns node]

# Create duplex links between nodes

$ns duplex-link $node1 $node2 10Mb 10ms DropTail

$ns duplex-link $node2 $node3 10Mb 10ms DropTail

$ns duplex-link $node3 $node4 10Mb 10ms DropTail

$ns duplex-link $node4 $node5 10Mb 10ms DropTail

$ns duplex-link $node1 $node5 5Mb 50ms DropTail

$ns duplex-link $node2 $node4 5Mb 30ms DropTail

# Enable shortest path routing protocol

$ns rtproto LS

# Attach TCP agents to node1 and node5 to test routing

set tcp [new Agent/TCP]

$ns attach-agent $node1 $tcp

set sink [new Agent/TCPSink]

$ns attach-agent $node5 $sink

# Connect the TCP agent and sink

$ns connect $tcp $sink

# Create an FTP application and attach it to TCP

set ftp [new Application/FTP]

$ftp attach-agent $tcp

# Start the FTP application

$ns at 1.0 “$ftp start”

# Stop the simulation at 10.0 seconds

$ns at 10.0 “finish”

# Run the simulation

$ns run

  1. Explanation of the Script:
  • Network Topology: This script generates a simple five-node network with multiple paths among the nodes. Links among the nodes have different latency and bandwidths that permits the routing protocol to select the shortest path.
  • Shortest Path Routing (LS): The line $ns rtproto LS that permits NS2’s built-in link-state routing protocol that calculates the shortest path (based on hop count) and populates the routing tables for each node.
  • Traffic Generation: A TCP agent is attached to node1 as the sender and a TCPSink agent to node5 as the receiver. An FTP application creates traffic to validate the shortest path routing.
  • Simulation: The simulation execute for 10 seconds, during that data is sent from node1 to node5, using the shortest path determined by the link-state routing protocol.
  1. Run the Simulation
  • Save the OTcl script to a file like shortest_path_routing.tcl.
  • Execute the script using NS2:

ns shortest_path_routing.tcl

  • The simulation will make a trace file (out.tr) and a Network Animator (NAM) file (out.nam). We can use NAM to visualize the network and examine on how packets are transmitted together with the shortest path.
  1. Analysing the Trace File
  • The trace file (out.tr) includes the elaborated data about the packets sent, received, and dropped. We can use tools such as grep or awk to extract the parameters such as like throughput, latency, and packet loss.
  • We can also open the configured .nam file in NAM to visually examine how packets are transmitted in the network and confirm whether the shortest path is used.
  1. Enhancements
  • Modify Link Weights: Adapt the bandwidth and latency of the links to see how the shortest path routing protocol adjust to changes in network topology.
  • Multiple Traffic Flows: Attach more traffic sources and sinks to validate on how shortest path routing operates with multiple concurrent flows.
  • Dynamic Link Failures: Establish link failures during the simulation to see how the protocol recalculates the shortest path in which the certain paths become unavailable.
  • Comparison with Other Routing Protocols: Execute diverse routing protocols like distance vector and compare their performance with shortest path routing.
  1. Manual Shortest Path Routing (Optional)

If we want more control over the routes, we can physically describe the shortest paths using the add-route command in NS2. This approach can includes the precomputing the shortest paths and directly emulate the routing tables for each node.

Example:

$node1 add-route $node5 1   ;# Direct link

$node2 add-route $node3 1

$node3 add-route $node4 1

$node4 add-route $node5 1

This technique will guide you through the implementation of shortest path using ns2 tool and it contains the details regarding the how to setup the simulation, design the network topology and how to execute the built-in link state routing with samples. We intend to expand on how the shortest path routing is performed in other simulation settings.

Hit up ns2project.com to connect with our talented developers for top-notch advice on Shortest Path Routing in NS2. We’re here to guide your projects and make sure they’re completed on schedule. Our crew knows how to tackle things like hop count, link delay, and bandwidth, all customized to meet your project requirements. Just share the details of your project with us, and we’ll give you the best support we can!