set ns [new Simulator]
set nf [open out.nam w] 
set tr [open out.tr w] 
#set ak [new Akaroa]
$ns namtrace-all $nf 
set expo1 [new RandomVariable/Exponential]
$expo1 set avg_ 1
set expo2 [new RandomVariable/Exponential]
$expo2 set avg_ 98
set node1 [$ns node]
set node2 [$ns node]
set link [$ns simplex-link $node1 $node2 1kb 0ms DropTail]
set qu  [$link queue]
$qu set limit_ 10000000 
$ns simplex-link-op $node1 $node2 queuePos 0.5
#$link trace $ns $tr 
set src [new Agent/UDP]
$ns attach-agent $node1 $src
set qmon [$ns monitor-queue $node1 $node2 ""]
set number 0
#$ak AkDeclareParameters 2

proc finish {} {
    global ns number nf tr
    $ns flush-trace 
    puts "[expr $number/[$ns now]]"
    close $nf
    close $tr
    exit 0 
} 

proc sendpacket {} {
    global ns ak number src expo1 expo2 
    set then [$ns now]
    $ns at [expr $then + [$expo1 value]] "sendpacket"
    set bytes [expr round ([$expo2 value])]
#    $ak AkObservation 1 $bytes
    #puts "$bytes"
    set number [expr $number + $bytes]
    $src send $bytes
    #puts "[expr $number/[$ns now]]"
}

proc observe {} {
    global ns qmon ak link
    #puts "[$link sample-queue-size]"
    set now [$ns now]
    set pkt [$qmon set pkts_]
    #puts "$now $pkt"
    $ns at [expr $now + 1] "observe"
#    $ak AkObservation 2 $pkt
}

set sink [new Agent/Null]
$ns attach-agent $node2 $sink
$ns connect $src $sink
$ns at 0.00001 "sendpacket"
$ns at 0.00001 "observe"
$ns at 100000.0 "finish"

$ns run

