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

📄 finish.tcl

📁 R. Lo Cigno, P. Larcheri 802.11e closed-loop scheduling Description: ns-2 package for 802.11e clo
💻 TCL
📖 第 1 页 / 共 2 页
字号:
        set erm_tip [list s s s s d d f d d f d]        set erm_val ""        set erm_tit ""        foreach k $erm_temp {                append erm_val "%[lindex $erm_dim $k][lindex $erm_tip $k] " 		append erm_tit "%[lindex $erm_dim_tit $k]s " 	}        puts $file(finish) "#$line\n#"        puts $file(finish) "#\t\t\t\tError Model Statistics\n#"        puts $file(finish) "# [format $erm_tit who src dst pkt_type rcv_net_other error_other p_error_other rcv_net_my error_my p_error_my send_chn]\n#"        foreach fid [lessof [expr $num_n * [expr $num_n - 1] / 2]] {                foreach tip {tcp ack udp voip mac_rts mac_cts mac_ack} {                        puts $file(finish) "  [format $erm_val erm_$fid $macadd($stat(errmo_src,$fid)) $macadd($stat(errmo_dst,$fid)) $tip \                                $stat(errmo,$fid,rcv_mac,$tip) $stat(errmo,$fid,corrup,$tip) \                                [expr $stat(errmo,$fid,corrup,$tip) / [expr $stat(errmo,$fid,rcv_mac,$tip) + 0.000000000001]] \                                $stat(errmo,$fid,rcv_mac_my,$tip) $stat(errmo,$fid,corrup_my,$tip) \                                [expr $stat(errmo,$fid,corrup_my,$tip) / [expr $stat(errmo,$fid,rcv_mac_my,$tip) + 0.000000000001]] \                                $stat(errmo,$fid,send_chn,$tip)]"                }                puts $file(finish) "#"        }}#######################################################################                                                                    ## NET_stat: Writes on the output file the Wireless Physic statistics ##                                                                    #######################################################################proc NET_stat {} {        global file line stat num_n nd        set chn_temp [list 0 1 2 3 4 5]        set chn_dim [list 8 12 12 12 12 12]        set chn_dim_tit [list 8 12 12 12 12 12]        set chn_tip [list s s d d d d]        set chn_val ""        set chn_tit ""        foreach k $chn_temp {                append chn_val "%[lindex $chn_dim $k][lindex $chn_tip $k] " 		append chn_tit "%[lindex $chn_dim_tit $k]s " 	}        puts $file(finish) "#$line\n#"        puts $file(finish) "#\t\t\t\tNetwork Statistics\n#"        puts $file(finish) "# [format $chn_tit node_id pkt_type rcv_chn drop bit_error send_mac]\n#"        foreach fid [lessof $num_n] {                foreach tip {message ARP tcp ack udp voip mac_rts mac_cts mac_ack} {                        puts $file(finish) "  [format $chn_val chn_$nd($fid) $tip $stat(chn,rcv_erm,$fid,$tip) $stat(chn,drop,$fid,$tip) \                                $stat(chn,error,$fid,$tip) $stat(chn,send_mac,$fid,$tip)]"                }                puts $file(finish) "#"        }}#######################################################################                                                                    ## ERM_change: Writes on the output file others Error Model           ##             statistics                                             ##                                                                    #######################################################################proc ERM_change {} {        global file line stat num_n nd opt macadd        set cst_temp [list 0 1 2 3 4 5 6]        set cst_dim [list 8 12 12 14.4 14.4 14.10 14.10]        set cst_dim_tit [list 8 12 12 14 14 14 14]        set cst_tip [list s s s f f f f]        set cst_val ""        set cst_tit ""        foreach k $cst_temp {                append cst_val "%[lindex $cst_dim $k][lindex $cst_tip $k] " 		append cst_tit "%[lindex $cst_dim_tit $k]s " 	}        puts $file(finish) "#$line\n#"        puts $file(finish) "#\t\t\t\tError Model Time Change\n#"        puts $file(finish) "# [format $cst_tit who src dst burst_BG burst_BB pGB perr]\n#"        foreach fid [lessof [expr $num_n * [expr $num_n - 1] / 2]] {                set burst_BG [expr $stat(errmo,$fid,av_badG).0 / $stat(errmo,$fid,n_badG).0]                set burst_BB [expr $stat(errmo,$fid,av_badB).0 / [expr $stat(errmo,$fid,n_badB).0 + 0.0000000000000001]]                set pGB [expr $stat(errmo,$fid,n_badB).0 / [expr $stat(errmo,$fid,n_badB).0 + $stat(errmo,$fid,n_badG).0]]                set perr [expr [expr $stat(errmo,$fid,av_badG).0 + $stat(errmo,$fid,av_badB).0] / \                        [expr $stat(errmo,$fid,av_badG).0 + $stat(errmo,$fid,av_badB).0 + $stat(errmo,$fid,av_good).0]]                puts $file(finish) "  [format $cst_val tch_$fid $macadd($stat(errmo_src,$fid)) $macadd($stat(errmo_dst,$fid)) \                        $burst_BG $burst_BB $pGB $perr]"        }}#######################################################################                                                                    ## delay_stat: Writes on the output file the packets delay and        ##             variance statistics                                    ##                                                                    ##             who: the statistic type (tcp or udp)                   ##             num: the number of flow of type 'who'                  ##                                                                    #######################################################################proc delay_stat {who num} {        global file line num_tcp fl udp_fl stat opt nd        set dly_temp [list 0 1 2 3 4 5 6]        set dly_dim [list 12 12 12.8 12.8 12.8 12.8 12.8]        set dly_dim_tit [list 12 12 12 12 12 12 12]        set dly_tip [list s s f f f f f]        set var_tip [list s s g g g g g]        set dly_val ""        set dly_tit ""	foreach k $dly_temp {		append dly_val "%[lindex $dly_dim $k][lindex $dly_tip $k] "                append var_val "%[lindex $dly_dim_tit $k][lindex $var_tip $k] "		append dly_tit "%[lindex $dly_dim_tit $k]s "	}        if {$who == "tcp"} {                set temp2 "data"		set temp3 "TCP"        } else {                set temp2 "cbr"		set temp3 "CBR"        }        puts $file(finish) "#\n#$line\n#"        puts $file(finish) "#\t\t\t\t $temp3 DELAY Statistics\n#"        puts $file(finish) "# [format $dly_tit flow_id direction LL_delay queue_delay MAC_delay chn_delay up_delay]\n#"        foreach fid [range 1 $num] {                if {$who == "tcp"} {                        set temp $fl($fid)                } else {                        set temp $udp_fl($fid)                }                puts $file(finish) "  [format $dly_val dly_${temp2}_$fid $temp [expr $stat($who,delay,ll,$fid) / $stat($who,time_count,$fid).0] \                        [expr $stat($who,delay,ifq,$fid) / $stat($who,time_count,$fid).0] \                        [expr $stat($who,delay,mac,$fid) / $stat($who,time_count,$fid).0] \                        [expr $stat($who,delay,channel,$fid) / $stat($who,time_count,$fid).0] \                        [expr $stat($who,delay,up,$fid) / $stat($who,time_count,$fid).0]]"        }	if {$opt(onoff) == 2 && $who == "tcp"} {                foreach fid [range [expr -$num] -1] {                        puts $file(finish) "  [format $dly_val dly_${temp2}_$fid $fl($fid) [expr $stat($who,delay,ll,$fid) / $stat($who,time_count,$fid).0] \                                [expr $stat($who,delay,ifq,$fid) / $stat($who,time_count,$fid).0] \                                [expr $stat($who,delay,mac,$fid) / $stat($who,time_count,$fid).0] \                                [expr $stat($who,delay,channel,$fid) / $stat($who,time_count,$fid).0] \                                [expr $stat($who,delay,up,$fid) / $stat($who,time_count,$fid).0]]"                }        }        puts $file(finish) "#\n#$line\n#"        puts $file(finish) "#\t\t\t\t $temp3 JITTER Statistics\n#"        puts $file(finish) "# [format $dly_tit flow_id direction LL_delay queue_delay MAC_delay chn_delay up_delay]\n#"        foreach fid [range 1 $num] {                if {$who == "tcp"} {                        set temp $fl($fid)                } else {                        set temp $udp_fl($fid)                }                puts $file(finish) "  [format $var_val var_${temp2}_$fid $temp \                        $stat($who,var,ll,$fid) $stat($who,var,ifq,$fid) $stat($who,var,mac,$fid) \                        $stat($who,var,channel,$fid) $stat($who,var,up,$fid)]"        }	if {$opt(onoff) == 2 && $who == "tcp"} {                foreach fid [range [expr -$num] -1] {                        puts $file(finish) "  [format $var_val var_${temp2}_$fid $fl($fid) \                                $stat($who,var,ll,$fid) $stat($who,var,ifq,$fid) $stat($who,var,mac,$fid) \                                $stat($who,var,channel,$fid) $stat($who,var,up,$fid)]"                }        }}proc delay_voip_stat {num} {        global file line num_voip fl voip_fl stat opt nd	global delaydistup delaydistdown BINSIZE NUMBINS maxup maxdown        set dly_voip_temp [list 0 1 2 3 4 5 6 7 8 9 10 11]        set dly_voip_dim [list 12 12 12.8 12.8 12.8 12.8 12.8 12.8 12.8 12.8 12.8 12.8]        set dly_voip_dim_tit [list 12 12 12 12 12 12 12 12 12 12 12 12]        set dly_voip_tip [list s s f f f f f f f f f f]        set var_voip_tip [list s s g g g g g g g g g g]        set dly_voip_val ""        set dly_voip_tit ""	foreach k $dly_voip_temp {		append dly_voip_val "%[lindex $dly_voip_dim $k][lindex $dly_voip_tip $k] "                append var_voip_val "%[lindex $dly_voip_dim_tit $k][lindex $var_voip_tip $k] "		append dly_voip_tit "%[lindex $dly_voip_dim_tit $k]s "	}        puts $file(finish) "#\n#$line\n#"        puts $file(finish) "#\t\t\t\t VoIP DELAY Statistics\n#"        puts $file(finish) "# [format $dly_voip_tit flow_id direction LL_delay_S queue_delay_S MAC_delay_S chn_delay_S up_delay_S LL_delay_D queue_delay_D MAC_delay_D chn_delay_D up_delay_D]\n#"        foreach fid [range 1 $num] {		if { $stat(voipc,time_count,$fid) == 0 } { set stat(voipc,time_count,$fid) 1 }		if { $stat(voips,time_count,$fid) == 0 } { set stat(voips,time_count,$fid) 1 }                puts $file(finish) "  [format $dly_voip_val dly_voce_$fid $voip_fl($fid) \                        [expr $stat(voipc,delay,ll,$fid) / $stat(voipc,time_count,$fid).0] \                        [expr $stat(voipc,delay,ifq,$fid) / $stat(voipc,time_count,$fid).0] \                        [expr $stat(voipc,delay,mac,$fid) / $stat(voipc,time_count,$fid).0] \                        [expr $stat(voipc,delay,channel,$fid) / $stat(voipc,time_count,$fid).0] \                        [expr $stat(voipc,delay,up,$fid) / $stat(voipc,time_count,$fid).0] \                        [expr $stat(voips,delay,ll,$fid) / $stat(voips,time_count,$fid).0] \                        [expr $stat(voips,delay,ifq,$fid) / $stat(voips,time_count,$fid).0] \                        [expr $stat(voips,delay,mac,$fid) / $stat(voips,time_count,$fid).0] \                        [expr $stat(voips,delay,channel,$fid) / $stat(voips,time_count,$fid).0] \                        [expr $stat(voips,delay,up,$fid) / $stat(voips,time_count,$fid).0]]"        }        puts $file(finish) "#\n#$line\n#"        puts $file(finish) "#\t\t\t\t VoIP JITTER Statistics\n#"        puts $file(finish) "# [format $dly_voip_tit flow_id direction LL_delay_S queue_delay_S MAC_delay_S chn_delay_S up_delay_S LL_delay_D queue_delay_D MAC_delay_D chn_delay_D up_delay_D]\n#"        foreach fid [range 1 $num] {                puts $file(finish) "  [format $var_voip_val var_voce_$fid $voip_fl($fid) \                        $stat(voipc,var,ll,$fid) $stat(voipc,var,ifq,$fid) $stat(voipc,var,mac,$fid) $stat(voipc,var,channel,$fid) \                        $stat(voipc,var,up,$fid) $stat(voips,var,ll,$fid) $stat(voips,var,ifq,$fid) $stat(voips,var,mac,$fid) \                        $stat(voips,var,channel,$fid) $stat(voips,var,up,$fid)]"        }		# delay distribution	set numup 0.0	set numdown 0.0	for { set i 0 } { $i <= $NUMBINS } { incr i } { 		set numup [expr $numup + $delaydistup($i)]		set numdown [expr $numdown + $delaydistdown($i)]	}		set outlier [expr $NUMBINS + 1]	set outliersup $delaydistup($outlier)        set outliersdown $delaydistup($outlier) 	puts $file(finish) "#\n\n\n\n#$line\n#"       	puts $file(finish) "#\t\t\t\t VoIP DELAY Distribution"	puts $file(finish) "# Samples up = [expr int($numup)] - Samples down = [expr int($numdown)]"	puts $file(finish) "# Outliers up = $outliersup - Outliers down = $outliersdown"        puts $file(finish) "# Max delay up = $maxup - Max delay down = $maxdown"       	puts $file(finish) "# bin       infbin      nup      pdfup         cumup       ndown     pdfdown        cumdown"		set cumup 0.0	set cumdown 0.0	set aveup 0.0	set avedown 0.0	for { set i 0 } { $i <= $NUMBINS } { incr i } {         	set nup $delaydistup($i)		if { $nup > 0 } {			set pdfup [expr $nup/$numup]			set cumup [expr $cumup + $pdfup]			set aveup [expr $aveup + $pdfup * ($i + 0.5) * $BINSIZE]		} else {			set pdfup 0.0		}				set ndown $delaydistdown($i)		if { $ndown > 0 } {			set pdfdown [expr $ndown/$numdown]			set cumdown [expr $cumdown + $pdfdown]			set avedown [expr $avedown + $pdfdown * ($i + 0.5) * $BINSIZE]		} else {			set pdfdown 0.0		}				if { $nup > 0 || $ndown > 0 } {			puts $file(finish) [format "%5d   %10.4f   %6d   %1.10f  %1.10f  %6d   %1.10f   %1.10f" \                        	$i  [expr $i * $BINSIZE]  $nup  $pdfup  $cumup  $ndown  $pdfdown  $cumdown]		}			}			puts $file(finish) "# average delay up = $aveup - average delay down = $avedown"}set NUMBINS 16000set BINSIZE 0.0001 ;# 0.1 millisecset maxup 0.0set maxdown 0.0for { set i 0 } { $i <= [expr $NUMBINS + 1] } { incr i } { 	set delaydistup($i) 0	set delaydistdown($i) 0}	 proc udpdelaysample { addr fid value } {	global delaydistup delaydistdown BINSIZE NUMBINS maxup maxdown        	# puts "delay sample at $addr, fid $fid, value $value"		# dir = 0 -> upstream / dir = 1 -> downstream 	set dir [string index $addr 0]		set bin [expr int($value/$BINSIZE)]	if { $bin > $NUMBINS } { 		puts "Warning: delay out of range : $value"		set bin [expr $NUMBINS + 1]	}		if $dir { 		incr delaydistdown($bin) 		if { $value > $maxdown } { set maxdown $value }	} else { 		incr delaydistup($bin) 		if { $value > $maxup } { set maxup $value }	} }

⌨️ 快捷键说明

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