📄 script.tcl
字号:
####################################################################### ## dump_stat: Reads the values of some C++ variables at the end of ## the simulation ## #######################################################################proc dump_stat {} { global opt stat obj num_n num_tcp num_udp num_voip foreach nn [lessof $num_n] { foreach who {ll} { foreach tip {rcv_appl tx_ifq tx_arp_down tx_arp_up tx_appl arp_tx_ifq rcv_mac} { foreach typ {message ack tcp udp voip ARP} { set stat($who,$tip,$nn,$typ) [$obj(ll,$nn) set "$tip\_$typ"] ;# LLC statistics } } } foreach who {chn} { foreach tip {rcv_erm drop error send_mac} { foreach typ {ARP message ack tcp udp voip mac_rts mac_cts mac_ack} { set stat($who,$tip,$nn,$typ) [$obj(netif,$nn) set "$tip\_$typ"] ;# WirelessPhy statistics } } } } if {$opt(tcp) == 1 && $opt(onoff) != 2} { foreach nn [range 1 $num_tcp] { if {$opt(onoff) == 0} { set stat(tcp,pkt_tx,$nn) [$obj(tcp,$nn) set ndatapack_] ;# TCP statistics set stat(tcp,pkt_to_send,$nn) [$obj(tcp,$nn) set seqno_] set stat(tcp,ack_rcv,$nn) [$obj(tcp,$nn) set nackpack_] set stat(tcp,pkt_rcv,$nn) [$obj(tcp_sink,$nn) set npackrecv] set stat(tcp,ack_tx,$nn) [$obj(tcp_sink,$nn) set nacksent] set stat(tcp,win_avg,$nn) [$obj(tcp,$nn) set win_avg] set stat(tcp,win_max,$nn) [$obj(tcp,$nn) set win_max] } set stat(tcp,delay,ll,$nn) [$obj(tcp_sink,$nn) set time4] ;# TCP packet delay statistics set stat(tcp,delay,ifq,$nn) [$obj(tcp_sink,$nn) set time6] set stat(tcp,delay,mac,$nn) [$obj(tcp_sink,$nn) set time7] set stat(tcp,delay,channel,$nn) [$obj(tcp_sink,$nn) set time8] set stat(tcp,delay,up,$nn) [$obj(tcp_sink,$nn) set time12] set stat(tcp,var,ll,$nn) [$obj(tcp_sink,$nn) set vartime4] set stat(tcp,var,ifq,$nn) [$obj(tcp_sink,$nn) set vartime6] set stat(tcp,var,mac,$nn) [$obj(tcp_sink,$nn) set vartime7] set stat(tcp,var,channel,$nn) [$obj(tcp_sink,$nn) set vartime8] set stat(tcp,var,up,$nn) [$obj(tcp_sink,$nn) set vartime12] set stat(tcp,time_count,$nn) [$obj(tcp_sink,$nn) set ntemp_count] } } if {$opt(tcp) == 1 && $opt(onoff) == 2} { foreach nn [range [expr -$num_tcp] $num_tcp] { if {$nn != 0} { set stat(tcp,delay,ll,$nn) [$obj(tcp_sink,$nn) set time4] ;# TCP packet delay statistics set stat(tcp,delay,ifq,$nn) [$obj(tcp_sink,$nn) set time6] set stat(tcp,delay,mac,$nn) [$obj(tcp_sink,$nn) set time7] set stat(tcp,delay,channel,$nn) [$obj(tcp_sink,$nn) set time8] set stat(tcp,delay,up,$nn) [$obj(tcp_sink,$nn) set time12] set stat(tcp,var,ll,$nn) [$obj(tcp_sink,$nn) set vartime4] set stat(tcp,var,ifq,$nn) [$obj(tcp_sink,$nn) set vartime6] set stat(tcp,var,mac,$nn) [$obj(tcp_sink,$nn) set vartime7] set stat(tcp,var,channel,$nn) [$obj(tcp_sink,$nn) set vartime8] set stat(tcp,var,up,$nn) [$obj(tcp_sink,$nn) set vartime12] set stat(tcp,time_count,$nn) [$obj(tcp_sink,$nn) set ntemp_count] } } } if {$opt(udp) == 1} { foreach nn [range 1 $num_udp] { set stat(udp,pkt_tx,$nn) [$obj(udp,$nn) set seqno_] ;# UDP packet delay statistics set stat(udp,pkt_rcv,$nn) [$obj(null,$nn) set nudprecv] set stat(udp,delay,ll,$nn) [$obj(null,$nn) set udptime4] set stat(udp,delay,ifq,$nn) [$obj(null,$nn) set udptime6] set stat(udp,delay,mac,$nn) [$obj(null,$nn) set udptime7] set stat(udp,delay,channel,$nn) [$obj(null,$nn) set udptime8] set stat(udp,delay,up,$nn) [$obj(null,$nn) set udptime12] set stat(udp,var,ll,$nn) [$obj(null,$nn) set udpvartime4] set stat(udp,var,ifq,$nn) [$obj(null,$nn) set udpvartime6] set stat(udp,var,mac,$nn) [$obj(null,$nn) set udpvartime7] set stat(udp,var,channel,$nn) [$obj(null,$nn) set udpvartime8] set stat(udp,var,up,$nn) [$obj(null,$nn) set udpvartime12] set stat(udp,time_count,$nn) [$obj(null,$nn) set nudp_count] set stat(udp,byte_rcv,$nn) [$obj(null,$nn) set voip_byte_rcv] } } if {$opt(voip) == 1} { foreach nn [range 1 $num_voip] { set stat(voipc,pkt_tx,$nn) [$obj(voipc,$nn) set seqno_] ;# VoIP packet delay statistics set stat(voipc,pkt_rcv,$nn) [$obj(voips,$nn) set nudprecv] set stat(voipc,delay,ll,$nn) [$obj(voips,$nn) set udptime4] set stat(voipc,delay,ifq,$nn) [$obj(voips,$nn) set udptime6] set stat(voipc,delay,mac,$nn) [$obj(voips,$nn) set udptime7] set stat(voipc,delay,channel,$nn) [$obj(voips,$nn) set udptime8] set stat(voipc,delay,up,$nn) [$obj(voips,$nn) set udptime12] set stat(voipc,var,ll,$nn) [$obj(voips,$nn) set udpvartime4] set stat(voipc,var,ifq,$nn) [$obj(voips,$nn) set udpvartime6] set stat(voipc,var,mac,$nn) [$obj(voips,$nn) set udpvartime7] set stat(voipc,var,channel,$nn) [$obj(voips,$nn) set udpvartime8] set stat(voipc,var,up,$nn) [$obj(voips,$nn) set udpvartime12] set stat(voipc,time_count,$nn) [$obj(voips,$nn) set nudp_count] set stat(voipc,byte_rcv,$nn) [$obj(voips,$nn) set voip_byte_rcv] set stat(voips,pkt_tx,$nn) [$obj(voips,$nn) set seqno_] set stat(voips,pkt_rcv,$nn) [$obj(voipc,$nn) set nudprecv] set stat(voips,delay,ll,$nn) [$obj(voipc,$nn) set udptime4] set stat(voips,delay,ifq,$nn) [$obj(voipc,$nn) set udptime6] set stat(voips,delay,mac,$nn) [$obj(voipc,$nn) set udptime7] set stat(voips,delay,channel,$nn) [$obj(voipc,$nn) set udptime8] set stat(voips,delay,up,$nn) [$obj(voipc,$nn) set udptime12] set stat(voips,var,ll,$nn) [$obj(voipc,$nn) set udpvartime4] set stat(voips,var,ifq,$nn) [$obj(voipc,$nn) set udpvartime6] set stat(voips,var,mac,$nn) [$obj(voipc,$nn) set udpvartime7] set stat(voips,var,channel,$nn) [$obj(voipc,$nn) set udpvartime8] set stat(voips,var,up,$nn) [$obj(voipc,$nn) set udpvartime12] set stat(voips,time_count,$nn) [$obj(voipc,$nn) set nudp_count] set stat(voips,byte_rcv,$nn) [$obj(voipc,$nn) set voip_byte_rcv] } }}if {$opt(tcp) == 1 && $opt(onoff) != 2} { foreach who {tcp} { foreach nn [range 1 $num_tcp] { foreach tip {fast_rec timeout} { set stat($who,$tip,$nn) 0 } set stat($who,win_count,$nn) 1 set stat($who,n_flow,$nn) 0 set stat($who,idle_time,$nn) 0.0 if {$opt(onoff) == 1} { foreach tip {pkt_tx ack_rcv pkt_rcv ack_tx win_avg win_max win_count old_timeout old_fast_rec old_delay} { set stat($who,$tip,$nn) 0 } set stat($who,pkt_to_send,$nn) -1 } } }}if {$opt(tcp) == 1 && $opt(onoff) == 2} { foreach who {tcp} { foreach nn [range [expr -$num_tcp] $num_tcp] { if {$nn != 0} { foreach tip {fast_rec timeout} { set stat($who,$tip,$nn) 0 } set stat($who,win_count,$nn) 1 set stat($who,n_flow,$nn) 0 set stat($who,idle_time,$nn) 0.0 foreach tip {pkt_tx ack_rcv pkt_rcv ack_tx win_avg win_max win_count old_timeout old_fast_rec old_delay} { set stat($who,$tip,$nn) 0 } set stat($who,pkt_to_send,$nn) -1 } } }}####################################################################### ## TCP_fastrtx: called by tcp-newreno.cc when a Fast Recovery occurs ## ## fid: The TCP flow identifier ## #######################################################################proc TCP_fastrtx {fid} { global stat incr stat(tcp,fast_rec,$fid)}####################################################################### ## TCP_timeout: called by tcp-reno.cc when a Timeout occurs ## ## fid: the TCP flow identifier ## seqno: TCP transmission sequence number ## ackno: the first TCP packet not 'acked' yet ## #######################################################################proc TCP_timeout {fid seqno ackno} { global stat if {$seqno > $ackno} { incr stat(tcp,timeout,$fid) }}set num_bs_queue 0####################################################################### ## BS_queue: called by drop-tail.cc to dump Interface Queue ## statistics ## ## n: queue identifier ## q_arrv: total number of packet arrival ## q_size: average queue size ## rcv_*: packets received from the LLC ## drop_*: packets discarded due to saturation #
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -