#!/bin/tcsh # # Usage: process-ECN-marks fwdPM ftp ID duration warmup pairs # if ( $? != 0 || $# < 6 ) then echo "Usage: $0 fwdPM ftp ID duration warmup pairs" exit 2 endif # command-line arguments set fwdPM = $1 set ftp = $2 set ID = $3 set duration = $4 set warmup = $5 set pairs = $6 set run = 1 set datadir = "./processed" if (! -e $datadir) then echo "ERR> processed directory must already exist!" exit endif set pattern = "${fwdPM}cs-${ftp}FTP-$ID-${duration}s" set file = $pattern-ECN.trq if (! -e $file) then echo "ERR> need to run grab-marks first!" endif printf "%-5.2f" $fwdPM >! tmp set rate = `cat tmp` # ::::::::::::::::::::::::::::: ECN-MARKS :::::::::::::::::::::::::::::::::: if ($ID == "0CL") then set queues = "01" else if ($ID == "1CL") then set queues = "01 12" else if ($ID == "2CL") then set queues = "01 12 34" else if ($ID == "3CL") then set queues = "01 12 34 56" endif foreach q ($queues) # :: AGGREGATE :::: # compute ecn-marks # (FTP flows are srcs 8-9. HTTP flows are srcs 10-11. CT are srcs 12+) set marksfile = "$datadir/MARKS-$q" if ! (-e $marksfile) then echo "# c/s ftp ID run markp% markp packets markb% markb bytes" > $marksfile endif printf "%-5.2f %-3s %-3s %-3d " $fwdPM $ftp $ID $run >> $marksfile set temp = tmp-$q if ($q == "01") then awk '{if ($3==0 && $4==1) print}' $file >! $temp else if ($q == "12") then awk '{if ($3==1 && $4==2) print}' $file >! $temp else if ($q == "34") then awk '{if ($3==3 && $4==4) print}' $file >! $temp else if ($q == "56") then awk '{if ($3==5 && $4==6) print}' $file >! $temp endif set marks = `wc -l $temp | awk '{print $1}'` set marksb = `awk 'NR == 1 {marksb=0} {marksb=marksb+$6} END {print marksb}' $temp` if ($marksb == "") then set marksb = 0 endif set pckts = `grep $rate $datadir/DROPS-$q | grep $ftp | grep $ID | grep $run | awk '{print $7}'` set bytes = `grep $rate $datadir/DROPS-$q | grep $ftp | grep $ID | grep $run | awk '{print $10}'` set percent = 0 if ($pckts != 0 && $pckts != "") then set percent = `perl -e "print $marks/$pckts * 100.0"` endif set percentB = 0 if ($bytes != 0 && $bytes != "") then set percentB = `perl -e "print $marksb/$bytes * 100.0"` endif printf "%-5.2f %-7d %-7d %-5.2f %-9d %-9d\n" $percent $marks $pckts $percentB $marksb $bytes >> $marksfile # :: E2E HTTP ONLY :::: # compute marks for web traffic # (FTP flows are srcs 8-9. HTTP flows are srcs 10-11. CT are srcs 12+) set marksfile = "$datadir/MARKS-$q-HTTP" if ! (-e $marksfile) then echo "# c/s ftp ID run markp% markp packets markb% markb bytes" > $marksfile endif printf "%-5.2f %-3s %-3s %-3d " $fwdPM $ftp $ID $run >> $marksfile set marks = `awk '{if ($3<$4 && $7>=10 && $7<12) print}' $temp | wc -l | awk '{print $1}'` if ($marks == "") then set marks = 0 endif set marksb = `awk 'NR == 1 {marksb=0} {if ($3<$4 && $7>=10 && $7<12) marksb=marksb+$6} END {print marksb}' $temp` if ($marksb == "") then set marksb = 0 endif set pckts = `grep $rate $datadir/DROPS-$q-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $7}'` set bytes = `grep $rate $datadir/DROPS-$q-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $10}'` set percent = 0 if ($pckts != 0 && $pckts != "") then set percent = `perl -e "print $marks/$pckts * 100.0"` endif set percentB = 0 if ($bytes != 0 && $bytes != "") then set percentB = `perl -e "print $marksb/$bytes * 100.0"` endif printf "%-5.2f %-7d %-7d %-5.2f %-9d %-9d\n" $percent $marks $pckts $percentB $marksb $bytes >> $marksfile # :: E2E FTP ONLY :::: # compute marks for ftp traffic # (FTP flows are srcs 8-9. HTTP flows are srcs 10-11. CT are srcs 12+) set marksfile = "$datadir/MARKS-$q-FTP" if ! (-e $marksfile) then echo "# c/s ftp ID run markp% markp packets markb% markb bytes" > $marksfile endif printf "%-5.2f %-3s %-3s %-3d " $fwdPM $ftp $ID $run >> $marksfile set marks = `awk '{if ($3<$4 && $7>=8 && $7<10) print}' $temp | wc -l | awk '{print $1}'` if ($marks == "") then set marks = 0 endif set marksb = `awk 'NR == 1 {marksb=0} {if ($3<$4 && $7>=8 && $7<10) marksb=marksb+$6} END {print marksb}' $temp` if ($marksb == "") then set marksb = 0 endif set pckts = `grep $rate $datadir/DROPS-$q-FTP | grep $ftp | grep $ID | grep $run | awk '{print $7}'` set bytes = `grep $rate $datadir/DROPS-$q-FTP | grep $ftp | grep $ID | grep $run | awk '{print $10}'` set percent = 0 if ($pckts != 0 && $pckts != "") then set percent = `perl -e "print $marks/$pckts * 100.0"` endif set percentB = 0 if ($bytes != 0 && $bytes != "") then set percentB = `perl -e "print $marksb/$bytes * 100.0"` endif printf "%-5.2f %-7d %-7d %-5.2f %-9d %-9d\n" $percent $marks $pckts $percentB $marksb $bytes >> $marksfile # :: CT-HTTP ONLY :::: # compute marks for cross-traffic web flows # (FTP flows are srcs 8-9. HTTP flows are srcs 10-11. CT are srcs 12-23) if ($q != "01" && $q != "src") then set marksfile = "$datadir/MARKS-$q-CT" if ! (-e $marksfile) then echo "# c/s ftp ID run markp% markp packets markb% markb bytes" > $marksfile endif printf "%-5.2f %-3s %-3s %-3d " $fwdPM $ftp $ID $run >> $marksfile set marks = `awk '{if ($3<$4 && $7>=12 && $7<24) print}' $temp | wc -l | awk '{print $1}'` if ($marks == "") then set marks = 0 endif set marksb = `awk 'NR == 1 {marksb=0} {if ($3<$4 && $7>=12 && $7<24) marksb=marksb+$6} END {print marksb}' $temp` if ($marksb == "") then set marksb = 0 endif set pckts = `grep $rate $datadir/DROPS-$q-CT | grep $ftp | grep $ID | grep $run | awk '{print $7}'` set bytes = `grep $rate $datadir/DROPS-$q-CT | grep $ftp | grep $ID | grep $run | awk '{print $10}'` set percent = 0 if ($pckts != 0 && $pckts != "") then set percent = `perl -e "print $marks/$pckts* 100.0"` endif set percentB = 0 if ($bytes != 0 && $bytes != "") then set percentB = `perl -e "print $marksb/$bytes * 100.0"` endif printf "%-5.2f %-7d %-7d %-5.2f %-9d %-9d\n" $percent $marks $pckts $percentB $marksb $bytes >> $marksfile endif end # :: E2E MARKS :::: # :: E2E HTTP MARKS :::: set marksfile = "$datadir/MARKS-HTTP" if ! (-e $marksfile) then echo "# c/s ftp ID run markp% markp packets markb% markb bytes" > $marksfile endif printf "%-5.2f %-3s %-3s %-3d " $fwdPM $ftp $ID $run >> $marksfile set pcktsHTTP = `grep $rate $datadir/DROPS-src-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $7}'` set marks01 = `grep $rate $datadir/MARKS-01-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` set marks12 = `grep $rate $datadir/MARKS-12-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` if ($ID != "1CL") then set marks34 = `grep $rate $datadir/MARKS-34-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` endif if ($ID == "3CL") then set marks56 = `grep $rate $datadir/MARKS-56-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` endif set marksHTTP = `expr $marks01 + $marks12` if ($ID != "1CL") then set marksHTTP = `expr $marksHTTP + $marks34` endif if ($ID == "3CL") then set marksHTTP = `expr $marksHTTP + $marks56` endif set percent = 0 if ($pcktsHTTP != 0) then set percent = `perl -e "print $marksHTTP/$pcktsHTTP * 100"` endif printf "%-5.2f %-7d %-7d " $percent $marksHTTP $pcktsHTTP >> $marksfile set bytesHTTP = `grep $rate $datadir/DROPS-src-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $10}'` set marks01 = `grep $rate $datadir/MARKS-01-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $9}'` set marks12 = `grep $rate $datadir/MARKS-12-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $9}'` if ($ID != "1CL") then set marks34 = `grep $rate $datadir/MARKS-34-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $9}'` endif if ($ID == "3CL") then set marks56 = `grep $rate $datadir/MARKS-56-HTTP | grep $ftp | grep $ID | grep $run | awk '{print $9}'` endif set BmarksHTTP = `expr $marks01 + $marks12` if ($ID != "1CL") then set BmarksHTTP = `expr $BmarksHTTP + $marks34` endif if ($ID == "3CL") then set BmarksHTTP = `expr $BmarksHTTP + $marks56` endif set percent = 0 if ($bytesHTTP != 0) then set percent = `perl -e "print $BmarksHTTP/$bytesHTTP * 100"` endif printf "%-5.2f %-9d %-9d\n" $percent $BmarksHTTP $bytesHTTP >> $marksfile # :: E2E FTP MARKS :::: set marksfile = "$datadir/MARKS-FTP" if ! (-e $marksfile) then echo "# c/s ftp ID run markp% markp packets markb% markb bytes" > $marksfile endif printf "%-5.2f %-3s %-3s %-3d " $fwdPM $ftp $ID $run >> $marksfile # $rate is set above in HTTP marks set pcktsFTP = `grep $rate $datadir/DROPS-src-FTP | grep $ftp | grep $ID | grep $run | awk '{print $7}'` set marks01 = `grep $rate $datadir/MARKS-01-FTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` set marks12 = `grep $rate $datadir/MARKS-12-FTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` if ($ID != "1CL") then set marks34 = `grep $rate $datadir/MARKS-34-FTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` endif if ($ID == "3CL") then set marks56 = `grep $rate $datadir/MARKS-56-FTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` endif set marksFTP = `expr $marks01 + $marks12` if ($ID != "1CL") then set marksFTP = `expr $marksFTP + $marks34` endif if ($ID == "3CL") then set marksFTP = `expr $marksFTP + $marks56` endif set percent = 0 if ($pcktsFTP != 0) then set percent = `perl -e "print $marksFTP/$pcktsFTP * 100"` endif printf "%-5.2f %-7d %-7d " $percent $marksFTP $pcktsFTP >> $marksfile set bytesFTP = `grep $rate $datadir/DROPS-src-FTP | grep $ftp | grep $ID | grep $run | awk '{print $10}'` set marks01 = `grep $rate $datadir/MARKS-01-FTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` set marks12 = `grep $rate $datadir/MARKS-12-FTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` if ($ID != "1CL") then set marks34 = `grep $rate $datadir/MARKS-34-FTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` endif if ($ID == "3CL") then set marks56 = `grep $rate $datadir/MARKS-56-FTP | grep $ftp | grep $ID | grep $run | awk '{print $6}'` endif set BmarksFTP = `expr $marks01 + $marks12` if ($ID != "1CL") then set BmarksFTP = `expr $BmarksFTP + $marks34` endif if ($ID == "3CL") then set BmarksFTP = `expr $BmarksFTP + $marks56` endif set percent = 0 if ($bytesFTP != 0) then set percent = `perl -e "print $BmarksFTP/$pcktsFTP * 100"` endif printf "%-5.2f %-9d %-9d\n" $percent $BmarksFTP $bytesFTP >> $marksfile # ::: E2E MARKS :::: set marksfile = "$datadir/MARKS" if ! (-e $marksfile) then echo "# c/s ftp ID run markp% markp packets markb% markb bytes" > $marksfile endif printf "%-5.2f %-3s %-3s %-3d " $fwdPM $ftp $ID $run >> $marksfile set pckts = `expr $pcktsFTP + $pcktsHTTP` set marks = `expr $marksFTP + $marksHTTP` set percent = 0 if ($pckts != 0) then set percent = `perl -e "print $marks/$pckts * 100"` endif printf "%-5.2f %-7d %-7d " $percent $marks $pckts >> $marksfile set bytes = `expr $bytesFTP + $bytesHTTP` set marks = `expr $BmarksFTP + $BmarksHTTP` set percent = 0 if ($bytes != 0) then set percent = `perl -e "print $marks/$bytes * 100"` endif printf "%-5.2f %-9d %-9d\n" $percent $marks $bytes >> $marksfile # ::::::::::::::::::::::::::::: CLEANUP :::::::::::::::::::::::::::::::::: foreach q (01 12 34 56 dst) if (-e tmp-$q) then rm tmp-$q endif if (-e tmp) then rm tmp endif end