How to Start DYMO Protocol Projects Using NS2

To start Dynamic MANET On-demand (DYMO) protocol projects in NS2, which is a reactive routing protocol that frequently utilised within Mobile Ad-hoc Networks (MANETs), it is indented for enhancing AODV with delivering the simpler and scalable route discovery. Here’s a structured guide to get started:

Steps to Start DYMO Protocol Projects in NS2

  1. Set Up NS2 Environment

Make sure that NS2 is properly installed and functioning on the machine.

  • Install NS2 (for Ubuntu/Linux):

sudo apt-get update

sudo apt-get install ns2

  • Verify NS2 Installation:

ns

If effectively installed NS2 then we can observe the NS2 interpreter (%).

  1. Add DYMO Support to NS2

The DYMO protocol isn’t portion of standard NS2. We can download and utilise the DYMO patch for allowing DYMO.

Steps to Install DYMO Patch:

  1. Download DYMO Patch:
    • We will need to receive DYMO patches for NS2 from sources such as:
      • DYMO for NS2
    • Sample patch file as dymo_ns2.patch.
  2. Apply DYMO Patch:
    • Open NS2 directory:

cd ns-allinone-2.35/ns-2.35

    • Utilize the patch:

patch -p1 < /path/to/dymo_ns2.patch

  1. Recompile NS2:

./configure

make

  1. Verify DYMO Installation: Seek DYMO for confirming the set up within the routing protocols:

grep -i “DYMO” ns-2.35/tcl/lib/ns-default.tcl

  1. Write a TCL Script for DYMO Simulation

After DYMO installation, we should make a TCL script for replicating DYMO within a MANET scenario.

DYMO TCL Script Example:

# Initialize the simulator

set ns [new Simulator]

# Define trace and NAM output files

set tr [open dymo-output.tr w]

$ns trace-all $tr

set nf [open dymo-output.nam w]

$ns namtrace-all $nf

# Define nodes

set val(nn) 10 ;# Number of nodes

set val(x) 500 ;# X dimension of topology

set val(y) 500 ;# Y dimension of topology

# Define simulation parameters

set val(stop) 20.0 ;# Simulation time

set val(rp) DYMO   ;# Routing protocol

# Set up the topology

set topo [new Topography]

$topo load_flatgrid $val(x) $val(y)

# Create and configure nodes

for {set i 0} {$i < $val(nn)} {incr i} {

set node_($i) [$ns node]

$node_($i) random-motion 0

}

# Define node mobility

$ns at 0.0 “$node_(0) setdest 200 200 10”

$ns at 0.0 “$node_(1) setdest 300 400 15”

$ns at 0.0 “$node_(2) setdest 400 300 12”

$ns at 5.0 “$node_(3) setdest 100 100 8”

# Attach Traffic (UDP + CBR)

set udp [new Agent/UDP]

set null [new Agent/Null]

$ns attach-agent $node_(0) $udp

$ns attach-agent $node_(4) $null

$ns connect $udp $null

set cbr [new Application/Traffic/CBR]

$cbr attach-agent $udp

$cbr set packetSize_ 512

$cbr set rate_ 500kb

# Start Traffic

$ns at 0.5 “$cbr start”

$ns at 19.5 “$cbr stop”

# Finish Procedure

$ns at $val(stop) “finish”

proc finish {} {

global ns tr nf

$ns flush-trace

close $tr

close $nf

exec nam dymo-output.nam &

exit 0

}

# Run Simulation

$ns run

  1. Run the DYMO Simulation
  1. We can store the tcl simulation script like dymo_simulation.tcl.
  2. Then, execute the DYMO simulation with NS2:

ns dymo_simulation.tcl

  1. Outputs:
    • NAM File (dymo-output.nam): It helps to envision the simulation.
    • Trace File (dymo-output.tr): Make use of trace file to record the packet events  for analysis.
  1. Analyze Simulation Results

Key Metrics to Evaluate:

  1. Packet Delivery Ratio (PDR): Estimate the percentage of packet that are effectively distributed to the total transmitted packets.

awk ‘{if ($1 == “r” && $4 == “cbr”) rec++} END {print “PDR:”, rec}’ dymo-output.tr

  1. End-to-End Delay: We will need to compute the average time for data packets:

awk ‘{if ($1 == “r” && $4 == “cbr”) {delay[$6] = $2 – start[$6]}} END {for (i in delay) sum += delay[i]; print “Avg Delay:”, sum/NR}’ dymo-output.tr

  1. Routing Overhead: Measure the volume of routing control packets such as DYMO RREQ, RREP:

awk ‘{if ($1 == “s” && $4 == “DYMO”) overhead++} END {print “Routing Overhead:”, overhead}’ dymo-output.tr

  1. Enhance Your DYMO Project
  2. Larger Topologies:
  • For analysing the scalability we can maximize the volume of topologies nodes with the support of random node placement.
  1. Mobility Models:
  • Add Random Waypoint Mobility use other mobility models for dynamic node movement:

$ns at 0.0 “$node_(i) setdest 100 200 10”

  1. Traffic Patterns:
  • Make use of FTP through TCP traffic models for reliable interaction:

set tcp [new Agent/TCP]

$ns attach-agent $node_(0) $tcp

set ftp [new Application/FTP]

$ftp attach-agent $tcp

  1. Fault Tolerance:
  • Launch node or link failures for fault tolerance:

$ns rtmodel-at 5.0 down $node_(2) $node_(3)

$ns rtmodel-at 10.0 up $node_(2) $node_(3)

  1. Performance Comparison:
  • We want to equate the performance of DYMO with other routing protocols such as AODV and DSR.
  1. Visualization and Plotting
  • Envision the node movements and route discovery applying NAM.
  • Analyze trace files to utilize AWK scripts.
  • With the help of Gnuplot or Matplotlib tools, we can design the graphs:
    • Packet Delivery Ratio vs Number of Nodes
    • End-to-End Delay vs Mobility
    • Routing Overhead vs Traffic Load

Example DYMO Project Ideas:

  1. DYMO’s energy Efficiency within Wireless Sensor Networks.
  2. Scalability of DYMO Protocol under large MANET topologies.
  3. Comparison of DYMO and AODV using MANETs.
  4. QoS-aware DYMO Protocol for Real-Time Uses.
  5. Performance Investigation of DYMO in High Mobility.

By using a step-by-step method in NS2, we have successfully performed simulations and analysis for DYMO Protocol projects. Expect more advanced insights and project ideas to be shared later.