#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