#!/usr/bin/tclsh exec echo "\nEifel\trto\tcc\tTime\tSegs\tSpr\tNorm" >>tcp_goodput.txt set tcp_rcv TCPSink/Sack1/DelAck # TCP/Sack1 TCP/Fack set tcp_snd TCP/Fack foreach snd {Sack1 Fack} { foreach nr {true false} { foreach eifel {false true} { exec echo -n "$eifel\t$snd\t$nr\t" >>tcp_goodput.txt exec echo "set cbr_rate 1000kbps" >tmp.tcl exec echo "set tcp_snd TCP/$snd" >>tmp.tcl exec echo "Agent/TCP set sack_nr_ $nr" >>tmp.tcl exec echo "Agent/TCP set eifel_ $eifel" >>tmp.tcl exec ns atp.tcl ton_params.tcl tmp.tcl >tmp.ns set fn [join [concat $snd $nr $eifel] "_"] exec mv out.tr $fn } } } exit 0 #no cbr #Sack Eifel exec echo -n "false\tsack\tno-cbr\t" >>tcp_goodput.txt exec echo "set cbr_rate 1kbps" >tmp.tcl exec echo "set tcp_snd TCP/Sack1" >>tmp.tcl exec ns atp.tcl ton_params.tcl tmp.tcl >tmp.ns exec mv out.tr no_cbr_sack exec echo -n "true\tsack\tno-cbr\t" >>tcp_goodput.txt exec echo "set cbr_rate 1kbps" >tmp.tcl exec echo "set tcp_snd TCP/Sack1" >>tmp.tcl exec echo "Agent/TCP set eifel_ true" >>tmp.tcl exec ns atp.tcl ton_params.tcl tmp.tcl >tmp.ns exec mv out.tr no_cbr_sack_eifel foreach cc_ {5 1} { exec echo "set tcp_snd TCP/Fack" >tmp.tcl exec echo "Agent/TCP set eifel_cc_ $cc_" >>tmp.tcl exec echo "Agent/TCP set eifel_ true" >>tmp.tcl exec echo "set cbr_rate 1000kbps" >>tmp.tcl exec echo -n "fack-e\t\t$cc_\t" >>tcp_goodput.txt exec ns atp.tcl ton_params.tcl tmp.tcl >tmp.ns set fn [join [concat "true" "rto" $cc_] "_"] # exec mv out.tr $fn puts "starting new set\n" } foreach rto_ {0 1 2 3} { exec echo "set tcp_snd TCP/Fack" >tmp.tcl exec echo "Agent/TCP set eifel_rto_ $rto_" >>tmp.tcl exec echo "Agent/TCP set eifel_ true" >>tmp.tcl exec echo "set cbr_rate 1000kbps" >>tmp.tcl exec echo -n "fack-e\t$rto_\t\t" >>tcp_goodput.txt exec ns atp.tcl ton_params.tcl tmp.tcl >tmp.ns set fn [join [concat "eifel" $rto_] "_"] # exec mv out.tr $fn puts "starting new set\n" }