Amin Bashiri
Amin Bashiri

Reputation: 318

NS2: Random delay for links

The network that I'm trying to simulate

I want to simulate the above network in NS2 and as you can see nodes 2 and 6 have links with variable delays. These variable delays should be random values between 5ms and 25ms.

This is how I make the links:

#Create six nodes
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
set n6 [$ns node]


#Create links between the nodes
$ns duplex-link $n1 $n3 100Mb 5ms DropTail
$ns duplex-link $n2 $n3 100Mb ? DropTail

$ns duplex-link $n3 $n4 100Kb 1ms DropTail

$ns duplex-link $n4 $n5 100Mb 5ms DropTail
$ns duplex-link $n4 $n6 100Mb ? DropTail

I don't know what to put instead of those question marks to get what I want.

Upvotes: 2

Views: 329

Answers (2)

Mohsen Fayyaz
Mohsen Fayyaz

Reputation: 74

You can generate random numbers using the rand() function.

Here's a function I wrote to generate a random number between min and max including them

proc random_generator {min max} {
    return [expr {int(rand()*[expr $max - $min + 1] ) + $min}]
}

Use it like this

set recvr_delay1 [random_generator 5 25]
set recvr_delay2 [random_generator 5 25]

Hope it helps :)

Upvotes: 1

Amin Bashiri
Amin Bashiri

Reputation: 318

I found out that this is the way to do it.

#Create six nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]

set recvr_delay1 [new RandomVariable/Uniform];
$recvr_delay1 set min_ 5ms
$recvr_delay1 set max_ 25ms

set recvr_delay2 [new RandomVariable/Uniform];
$recvr_delay2 set min_ 5ms
$recvr_delay2 set max_ 25ms

# TODO: make these delays random
#Create links between the nodes
$ns duplex-link $n0 $n2 100Mb 5ms DropTail
$ns duplex-link $n1 $n2 100Mb $recvr_delay1 DropTail

$ns duplex-link $n2 $n3 100Kb 1ms DropTail

$ns duplex-link $n3 $n4 100Mb 5ms DropTail
$ns duplex-link $n3 $n5 100Mb $recvr_delay2 DropTail

Upvotes: 2

Related Questions