#Un client, un server, la cache sullo stesso nodo del server

set ns [new Simulator]

set nf [open outhttp.nam w]

$ns namtrace-all $nf

#topologia

set clie1 [$ns node]

set servcac [$ns node]

$ns duplex-link $clie1 $servcac 1.5Mb 10ms DropTail

$ns rtproto Session

#file di uscita di ns

set log [open "http.log" w]

#generatore di pagine che potranno essere richieste

set pgp [new PagePool/Math]

#generatore delle dimensioni delle pagine

set tmp [new RandomVariable/Constant]

#valore medio di una pagina

$tmp set val_ 1024

$pgp ranvar-size $tmp

#generatore dell'eta' delle pagine

set tmp [new RandomVariable/Exponential]

#valore medio dell'eta'

$tmp set avg_ 5

$pgp ranvar-age $tmp

#creazione server e collegamento dei server al generatore di pagine

set servera [new Http/Server $ns $servcac]

$servera set-page-generator $pgp

$servera log $log

#creazione della cache

set cache1 [new Http/Cache $ns $servcac]

$cache1 log $log

#creazione del client

set client1 [new Http/Client $ns $clie1]

#processo di Poisson per modellare la sequenza di richieste

set tmp1 [new RandomVariable/Exponential]

#intervallo medio tra due richieste

$tmp1 set avg_ 5

$client1 set-interval-generator $tmp1

$client1 set-page-generator $pgp

$client1 log $log

set startTime 1

set finishTime 180

$ns at $startTime "start-connection"

$ns at $finishTime "finish"

proc start-connection { } {

global ns servera cache1 client1

$client1 connect $cache1

$cache1 connect $servera

$client1 start-session $cache1 $servera

}

proc finish { } {

global ns log nf

$ns flush-trace

flush $log

close $log

close $nf

exec nam outhttp.nam &

exit 0

}

$ns run