⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 finish.tcl

📁 R. Lo Cigno, P. Larcheri 802.11e closed-loop scheduling Description: ns-2 package for 802.11e clo
💻 TCL
📖 第 1 页 / 共 2 页
字号:
#######################################################################                                                                    ## finish: Called at the end of the simulation, it produces the       ##         output file by calling others subroutines                  ##                                                                    #######################################################################proc finish {} {        global file line opt num_n num_udp num_tcp num_voip	set qline "--------------------"        set line $qline$qline$qline$qline$qline$qline$qline$qline$qline$qline        dump_stat        if {$opt(tcp) == 1} {                TCP_stat        }        if {$opt(udp) == 1} {                UDP_stat        }        if {$opt(voip) == 1} {                UDP_voip_stat        }       	LL_stat	IFQ_stat	flush $file(finish)	MAC_stat	NET_stat	ERM_stat	ERM_change	if {$opt(tcp) == 1} {                delay_stat "tcp" $num_tcp        }  	if {$opt(udp) == 1} {                delay_stat "udp" $num_udp        }        if {$opt(voip) == 1} {                delay_voip_stat $num_voip        }}#######################################################################                                                                    ## TCP_stat: Writes on the output file the TCP statistics             ##                                                                    #######################################################################proc TCP_stat {} {        global file line num_tcp fl stat opt nd        set tcp_temp [list 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]        set tcp_dim [list 8 12 12 12 12 12 12 10 9 12.0 12.0 8.3 8 10.4 8]        set tcp_dim_tit [list 8 12 12 12 12 12 12 10 9 12 12 8 8 10 8]        set tcp_tip [list s s d d d d d d d f f f f f d]        set tcp_val ""        set tcp_tit ""	foreach k $tcp_temp {		append tcp_val "%[lindex $tcp_dim $k][lindex $tcp_tip $k] "		append tcp_tit "%[lindex $tcp_dim_tit $k]s "	}        puts $file(finish) "#$line\n#"        puts $file(finish) "#\t\t\t\tTCP Statistics\n#"        puts $file(finish) "# [format $tcp_tit flow_id direction pkt_to_send pkt_tx pkt_rcv ack_tx ack_rcv \                fast_rec timeout throughput goodput avg_wnd max_wnd idle_time n_flow]\n#"		        foreach fid [range 1 $num_tcp] {		puts $file(finish) "  [format $tcp_val tcp_$fid $fl($fid) [expr $stat(tcp,pkt_to_send,$fid) + 1] $stat(tcp,pkt_tx,$fid) \                        $stat(tcp,pkt_rcv,$fid) $stat(tcp,ack_tx,$fid) $stat(tcp,ack_rcv,$fid) \                        $stat(tcp,fast_rec,$fid) $stat(tcp,timeout,$fid) \                        [expr $stat(tcp,pkt_tx,$fid) * 8 * $opt(tcp_size) / [expr $opt(stop).0 - $opt(start) - $stat(tcp,idle_time,$fid)]] \                        [expr [expr $stat(tcp,pkt_to_send,$fid) + 1] * 8.0 * $opt(tcp_size) / [expr $opt(stop).0 - $opt(start) - $stat(tcp,idle_time,$fid)]] \                        [expr $stat(tcp,win_avg,$fid) / $stat(tcp,win_count,$fid)] \                        [expr $stat(tcp,win_max,$fid).0 / $stat(tcp,win_count,$fid)] $stat(tcp,idle_time,$fid) $stat(tcp,n_flow,$fid)]"        }        if {$opt(onoff) == 2} {                foreach fid [range [expr -$num_tcp] -1] {			puts $file(finish) "  [format $tcp_val tcp_$fid $fl($fid) [expr $stat(tcp,pkt_to_send,$fid) + 1] $stat(tcp,pkt_tx,$fid) \                                $stat(tcp,pkt_rcv,$fid) $stat(tcp,ack_tx,$fid) $stat(tcp,ack_rcv,$fid) \                                $stat(tcp,fast_rec,$fid) $stat(tcp,timeout,$fid) \                                [expr $stat(tcp,pkt_tx,$fid) * 8 * $opt(tcp_size) / [expr $opt(stop).0 - $opt(start) - $stat(tcp,idle_time,$fid)]] \                                [expr [expr $stat(tcp,pkt_to_send,$fid) + 1] * 8.0 * $opt(tcp_size) / [expr $opt(stop).0 - $opt(start) - $stat(tcp,idle_time,$fid)]] \                                [expr $stat(tcp,win_avg,$fid) / $stat(tcp,win_count,$fid)] \                                [expr $stat(tcp,win_max,$fid).0 / $stat(tcp,win_count,$fid)] $stat(tcp,idle_time,$fid) $stat(tcp,n_flow,$fid)]"                }        }}#######################################################################                                                                    ## UDP_stat: Writes on the output file the UDP statistics             ##                                                                    #######################################################################proc UDP_stat {} {        global file line num_udp udp_fl stat opt nd        set udp_temp [list 0 1 2 3 4]        set udp_dim [list 8 12 12 12 12]        set udp_dim_tit [list 8 12 12 12 12]        set udp_tip [list s s d d f]        set udp_val ""        set udp_tit ""	foreach k $udp_temp {		append udp_val "%[lindex $udp_dim $k][lindex $udp_tip $k] "		append udp_tit "%[lindex $udp_dim_tit $k]s "	}        puts $file(finish) "#$line\n#"        puts $file(finish) "#\t\t\t\tUDP Statistics\n#"        puts $file(finish) "# [format $udp_tit flow_id direction pkt_tx pkt_rcv throughput]\n#"        foreach fid [range 1 $num_udp] {                puts $file(finish) "  [format $udp_val udp_$fid $udp_fl($fid) $stat(udp,pkt_tx,$fid) $stat(udp,pkt_rcv,$fid) \                        [expr $stat(udp,pkt_rcv,$fid) * 8 * $opt(udp_size) / [expr $opt(stop).0 - $opt(start)]]]"        }}proc UDP_voip_stat {} {        global file line num_voip voip_fl stat opt nd        set voip_temp [list 0 1 2 3 4 5 6 7]        set voip_dim [list 8 12 12 12 12 12 12 12]        set voip_dim_tit [list 8 12 12 12 12 12 12 12]        set voip_tip [list s s d d f d d f]        set voip_val ""        set voip_tit ""	foreach k $voip_temp {		append voip_val "%[lindex $voip_dim $k][lindex $voip_tip $k] "		append voip_tit "%[lindex $voip_dim_tit $k]s "	}        puts $file(finish) "#$line\n#"        puts $file(finish) "#\t\t\t\tVoIP Statistics\n#"        puts $file(finish) "# [format $voip_tit flow_id direction pkt_tx_S pkt_rcv_S throughput_S pkt_tx_D pkt_rcv_D throughput_D]\n#"        foreach fid [range 1 $num_voip] {                puts $file(finish) "  [format $voip_val voip_$fid $voip_fl($fid) $stat(voipc,pkt_tx,$fid) $stat(voipc,pkt_rcv,$fid) \                        [expr $stat(voipc,byte_rcv,$fid) * 8 / [expr $opt(stop).0 - $opt(start)]] \                        $stat(voips,pkt_tx,$fid) $stat(voips,pkt_rcv,$fid) \                        [expr $stat(voips,byte_rcv,$fid) * 8 / [expr $opt(stop).0 - $opt(start)]]]"        }}#######################################################################                                                                    ## LL_stat: Writes on the output file the LLC statistics              ##                                                                    #######################################################################proc LL_stat {} {        global file line stat num_n nd        set ll_temp [list 0 1 2 3 4 5 6 7 8]        set ll_dim [list 8 12 12 12 10 12 12 10 10]        set ll_dim_tit [list 8 12 12 12 10 12 12 10 10]        set ll_tip [list s s d d d d d d d]        set ll_val ""        set ll_tit ""        foreach k $ll_temp {                append ll_val "%[lindex $ll_dim $k][lindex $ll_tip $k] " 		append ll_tit "%[lindex $ll_dim_tit $k]s " 	}        puts $file(finish) "#\n#$line\n#"        puts $file(finish) "#\t\t\t\tLL Statistics\n#"        puts $file(finish) "# [format $ll_tit node_id pkt_type rcv_appl tx_ifq tx_arp_down rcv_mac \                tx_appl tx_arp_up arp_tx_ifq]\n#"        foreach fid [lessof $num_n] {                foreach tip {message ARP tcp ack udp voip} {                        puts $file(finish) "  [format $ll_val ll_$nd($fid) $tip $stat(ll,rcv_appl,$fid,$tip) \                                $stat(ll,tx_ifq,$fid,$tip) $stat(ll,tx_arp_down,$fid,$tip) $stat(ll,rcv_mac,$fid,$tip) $stat(ll,tx_appl,$fid,$tip) \                                $stat(ll,tx_arp_up,$fid,$tip) $stat(ll,arp_tx_ifq,$fid,$tip)]"                }                puts $file(finish) "#"        }}#######################################################################                                                                    ## IFQ_stat: Writes on the output file the Interface Queue statistics ##                                                                    #######################################################################proc IFQ_stat {} {        global file line stat obj num_bs_queue nd num_n opt        set bs_ifq_temp [list 0 1 2 3 4 5 6]        set bs_ifq_dim [list 10 12 12 12 12 12.3 12]        set bs_ifq_dim_tit [list 10 12 12 12 12 12 12]        set bs_ifq_tip [list s s d d d f d]        set bs_ifq_val ""        set bs_ifq_tit ""        foreach k $bs_ifq_temp {                append bs_ifq_val "%[lindex $bs_ifq_dim $k][lindex $bs_ifq_tip $k] " 		append bs_ifq_tit "%[lindex $bs_ifq_dim_tit $k]s " 	}        puts $file(finish) "#$line\n#"        puts $file(finish) "#\t\t\t\tIFQ Statistics\n#"        puts $file(finish) "# [format $bs_ifq_tit queue_id pkt_type rcv drop timeout avg_size limit]\n#"        foreach num [lessof $num_n] {                $obj(ifq,$num) dump_queue                set stat(bs_q_limit,$num) [$obj(ifq,$num) set limit_]                foreach fid [lessof $num_bs_queue] {                        foreach tip {message ARP tcp ack udp voip} {                                puts $file(finish) "  [format $bs_ifq_val ifq_$nd($num)_$fid $tip $stat(bs_ifq,rcv,$fid,$tip) \                                        $stat(bs_ifq,drop,$fid,$tip) $stat(bs_ifq,tout,$fid,$tip) [expr $stat(bs_q_size,$fid) / [expr $stat(bs_q_arrv,$fid) + 0.00000000000000001]] \                                                $stat(bs_q_limit,$num)]"                        }                        puts $file(finish) "#"                }                set num_bs_queue 0        }}#######################################################################                                                                    ## MAC_stat: Writes on the output file the MAC statistics             ##                                                                    #######################################################################proc MAC_stat {} {        global file line num_tcp stat num_n nd num_mac_tc obj        set mac_temp [list 0 1 2 3 4 5 6 7 8 9 10 11 12 13]        set mac_dim [list 10 10 10 10 10 10 10 12 12 12 12 12 10 10]        set mac_dim_tit [list 10 10 10 10 10 10 10 12 12 12 12 12 10 10]        set mac_tip [list s s d d d d d d d d d d d d]        set mac_val ""        set mac_tit ""	set cfb_TCP_tot 0	set cfb_VoIP_tot 0        foreach k $mac_temp {                append mac_val "%[lindex $mac_dim $k][lindex $mac_tip $k] " 		append mac_tit "%[lindex $mac_dim_tit $k]s " 	}        puts $file(finish) "#$line\n#"        puts $file(finish) "#\t\t\t\tMAC Statistics\n#"	puts $file(finish) [format "# %12s %12s %12s %12s %12s %12s %12s %12s\n#" marker cap_% cap_avg_dur cap_num cfp_%_max cfp_%_tot cfp_avg_dur cfp_num]	$obj(mac,0) dump_tc	puts $file(finish) [format "  %12s %12f %12f %12d %12f %12f %12f %12d" hcf_stats $stat(mac,cap_percent_tot) $stat(mac,cap_avg_time) $stat(mac,cap_num) \                                                                          $stat(mac,cfp_percent_max) $stat(mac,cfp_percent_tot) $stat(mac,cfp_avg_time) \                                                                          $stat(mac,cfp_num)]	set num_mac_tc 0        puts $file(finish) [format "#\n# %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s\n#" node_id real_coll virt_coll virtcoll \											cfb_avg_dur cfb_num cfb_bad_end TCP_fast TCP_slow VoIP_fast VoIP_slow]        foreach num [lessof $num_n] {		if {$num == 0} {			$obj(mac,$num) dump_tc	                foreach fid [lessof $num_mac_tc] {                        	puts $file(finish) [format "  %12s %12f %12d %12d %12f %12d %12d %12d %12d %12d %12d" col_$nd($num)_$fid $stat(mac,col,$fid) \										$stat(mac,virt_col,$fid) \                                                                                $stat(mac,virtcoll) $stat(mac,$fid,cfb_avg_time) $stat(mac,$fid,cfb_num) \										$stat(mac,$fid,cfb_num_bad_end) \										$stat(mac,$fid,cfb_data_fast_recv) $stat(mac,$fid,cfb_data_slow_recv) \										$stat(mac,$fid,cfb_voice_fast_recv) $stat(mac,$fid,cfb_voice_slow_recv)]                	}		} else {			if {$num == 1} {				puts $file(finish) [format "#\n# %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s\n#" node_id real_coll virt_coll virtcoll \													cfb_avg_dur cfb_num cfb_bad_end TCP VoIP noData]			}	                $obj(mac,$num) dump_tc			foreach fid [lessof $num_mac_tc] {				set cfb_TCP_tot [expr $cfb_TCP_tot + $stat(mac,$fid,cfb_data_fast_recv)]				set cfb_VoIP_tot [expr $cfb_VoIP_tot + $stat(mac,$fid,cfb_voice_fast_recv)]	                        puts $file(finish) [format "  %12s %12f %12d %12d %12f %12d %12d %12d %12d %12d" col_$nd($num)_$fid $stat(mac,col,$fid) \										$stat(mac,virt_col,$fid) \                                                                                $stat(mac,virtcoll) $stat(mac,$fid,cfb_avg_time) $stat(mac,$fid,cfb_num) \										$stat(mac,$fid,cfb_num_bad_end) \										$stat(mac,$fid,cfb_data_fast_recv) $stat(mac,$fid,cfb_voice_fast_recv) \										$stat(mac,$fid,cfb_noDataToSend)]			}		}		set num_mac_tc 0        }	puts $file(finish) [format "\n  %12s %90d %12d" totals $cfb_TCP_tot $cfb_VoIP_tot]	        puts $file(finish) "#\n# [format $mac_tit node_id pkt_type rcv_ifq mac_busy rtx max_rtx send_net rcv_net rcv_net_col rcv_net_err \                rcv_net_oth rcv_net_my dupl send_ll]\n#"        foreach num [lessof $num_n] {                $obj(mac,$num) dump_tc                foreach fid [lessof $num_mac_tc] {                        foreach tip {message ARP tcp ack udp voip mac_rts mac_cts mac_ack} {                                puts $file(finish) "  [format $mac_val mac_$nd($num)_$fid $tip $stat(mac,rcv_ifq,$fid,$tip) \                                        $stat(mac,busy,$fid,$tip) $stat(mac,rtx,$fid,$tip) $stat(mac,max_rtx,$fid,$tip) $stat(mac,send_erm,$fid,$tip) \                                        $stat(mac,rcv_chn,$fid,$tip) $stat(mac,rcv_chn_col,$fid,$tip) $stat(mac,rcv_chn_err,$fid,$tip) \                                        $stat(mac,rcv_chn_other,$fid,$tip) $stat(mac,rcv_chn_my,$fid,$tip) $stat(mac,dupl,$fid,$tip) $stat(mac,send_ll,$fid,$tip)]"                        }                        puts $file(finish) "#"                }                set num_mac_tc 0        }}#######################################################################                                                                    ## ERM_stat: Writes on the output file the Error Model statistics     ##                                                                    #######################################################################proc ERM_stat {} {        global file line stat num_n nd opt macadd        $opt(timer_list) dump_chn        set erm_temp [list 0 1 2 3 4 5 6 7 8 9 10]        set erm_dim [list 8 12 12 12 12 12 14.10 12 12 14.10 12]        set erm_dim_tit [list 8 12 12 12 12 12 14 12 12 14 12]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -