BW.in.pl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #!/usr/bin/perl -w
  2. #
  3. # Copyright (C) 2001 by USC/ISI
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms are permitted
  7. # provided that the above copyright notice and this paragraph are
  8. # duplicated in all such forms and that any documentation, advertising
  9. # materials, and other materials related to such distribution and use
  10. # acknowledge that the software was developed by the University of
  11. # Southern California, Information Sciences Institute.  The name of the
  12. # University may not be used to endorse or promote products derived from
  13. # this software without specific prior written permission.
  14. #
  15. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  16. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  17. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18. #
  19. # This work is supported by DARPA through SAMAN Project
  20. # (http://www.isi.edu/saman/), administered by the Space and Naval
  21. # Warfare System Center San Diego under Contract No. N66001-00-C-8066
  22. #
  23. sub usage {
  24.     print STDERR <<END;
  25.   usage: $0 [-w FilenameExtention]
  26.     Options:
  27.             -w string  specify the filename extention
  28. END
  29.     exit 1;
  30. }
  31. BEGIN {
  32.     $dblibdir = "./";
  33.     push(@INC, $dblibdir);
  34. }
  35. use DbGetopt;
  36. require "dblib.pl";
  37. my(@orig_argv) = @ARGV;
  38. &usage if ($#ARGV < 0);
  39. my($prog) = &progname;
  40. my($dbopts) = new DbGetopt("w:?", @ARGV);
  41. my($ch);
  42. while ($dbopts->getopt) {
  43.     $ch = $dbopts->opt;
  44.     if ($ch eq 'w') {
  45. $fext = $dbopts->optarg;
  46.     } else {
  47. &usage;
  48.     };
  49. };
  50. $finbw=join(".",$fext,"inbound.BW");
  51. $c1="";
  52. $s1="";
  53. $j=0;
  54. local(@datan);
  55. local(@n);
  56. #estimate delay and bottleneck bandwidth for inbound traffic
  57. open(INBW,"> $finbw") || die("cannot open $finbwn");
  58. while (<>) {
  59. ($client,$server,$time,$seq) = split(' ',$_);
  60.         #estimate bottleneck bandwidth between remove servers and ISI clients
  61.         if (($c1 ne $client ) || ($s1 ne $server)) {
  62. #take at least 3 samples for estimation
  63.          if ( $j gt 3 ) {
  64.    @datan = sort numerically @n;
  65.    $m=int($j/2);
  66. #    print INBW "$c1 $s1 $datan[$m]n";
  67.        print INBW "$datan[$m]n";
  68. #    print INBW "$datan[0]n";
  69. }
  70. $#n=0;
  71. $j=0;
  72. } else {
  73.         $len = $seq - $q;
  74. $interval = ($time - $t) * 1000000;
  75. $bw=0;
  76. if (($interval gt 0) && ($len gt 0)) {
  77. $bw =  $len / $interval;
  78. }
  79. if ($bw gt 0) {
  80. $n[$j]=$bw;
  81. $j=$j + 1;
  82. }
  83. }
  84. $c1=$client;
  85. $s1=$server;
  86. $t=$time;
  87. $q=$seq;
  88. }
  89. if ( $j gt 3 ) {
  90.     @datan = sort numerically @n;
  91.     $m=int($j/2);
  92.     print INBW "$datan[$m]n";
  93. }
  94. close(INBW);
  95. sub numerically { $a <=> $b; }