tcp.awk
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
源码类别:

通讯编程

开发平台:

Visual C++

  1. BEGIN {
  2. if (dir == "")
  3. dir = ".";
  4. }
  5. {
  6. time = $2;
  7. saddr = $4;
  8. sport = $6;
  9. daddr = $8;
  10. dport = $10;
  11. hiack = $14;
  12. cwnd = $18;
  13. ssthresh = $20;
  14. srtt = $26;
  15. rttvar = $28;
  16. ownd = $34;
  17. owndcorr = $36;
  18. nrexmit = $38;
  19. if (!((saddr, sport, daddr, dport) in starttime)) {
  20. starttime[saddr, sport, daddr, dport] = time;
  21. ind[saddr, sport, daddr, dport] = sprintf("%s,%s-%s,%s", saddr, sport, daddr, dport);
  22. }
  23. if ((cwnd >= 100) && (!((saddr, sport, daddr, dport) in cwndtime))) {
  24. cwndtime[saddr, sport, daddr, dport] = time;
  25. cwndhiack[saddr, sport, daddr, dport] = hiack;
  26. }
  27. if ((time >= mid) && (!((saddr, sport, daddr, dport) in middletime))) {
  28. middletime[saddr, sport, daddr, dport] = time;
  29. middlehiack[saddr, sport, daddr, dport] = hiack;
  30. }
  31. if ((time >= turnon) && (!((saddr, sport, daddr, dport) in turnontime))) {
  32. turnontime[saddr, sport, daddr, dport] = time;
  33. turnonhiack[saddr, sport, daddr, dport] = hiack;
  34. }
  35. if (time <= turnoff) {
  36. turnofftime[saddr, sport, daddr, dport] = time;
  37. turnoffhiack[saddr, sport, daddr, dport] = hiack;
  38. numrexmit[saddr, sport, daddr, dport] = nrexmit;
  39. }
  40. endtime[saddr, sport, daddr, dport] = time;
  41. highest_ack[saddr, sport, daddr, dport] = hiack;
  42. if (!((saddr, sport, daddr, dport) in cwndfile)) {
  43. cwndfile[saddr, sport, daddr, dport] = sprintf("%s/cwnd-%d,%d-%d,%d.out", dir, saddr, sport, daddr, dport);
  44. printf "TitleText: (%d,%d)->(%d,%d)n", saddr, sport, daddr, dport > cwndfile[saddr,sport,daddr,dport];
  45. printf "Device: Postscriptn" > cwndfile[saddr,sport,daddr,dport];
  46. }
  47. if (!((saddr, sport, daddr, dport) in ssthreshfile)) {
  48. ssthreshfile[saddr, sport, daddr, dport] = sprintf("%s/ssthresh-%d,%d-%d,%d.out", dir, saddr, sport, daddr, dport);
  49. printf "TitleText: (%d,%d)->(%d,%d)n", saddr, sport, daddr, dport > ssthreshfile[saddr,sport,daddr,dport];
  50. printf "Device: Postscriptn" > ssthreshfile[saddr,sport,daddr,dport];
  51. }
  52. if (!((saddr, sport, daddr, dport) in owndfile)) {
  53. owndfile[saddr, sport, daddr, dport] = sprintf("%s/ownd-%d,%d-%d,%d.out", dir, saddr, sport, daddr, dport);
  54. printf "TitleText: (%d,%d)->(%d,%d)n", saddr, sport, daddr, dport > owndfile[saddr,sport,daddr,dport];
  55. printf "Device: Postscriptn" > owndfile[saddr,sport,daddr,dport];
  56. }
  57. if (!((saddr, sport, daddr, dport) in owndcorrfile)) {
  58. owndcorrfile[saddr, sport, daddr, dport] = sprintf("%s/owndcorr-%d,%d-%d,%d.out", dir, saddr, sport, daddr, dport);
  59. printf "TitleText: (%d,%d)->(%d,%d)n", saddr, sport, daddr, dport > owndcorrfile[saddr,sport,daddr,dport];
  60. printf "Device: Postscriptn" > owndcorrfile[saddr,sport,daddr,dport];
  61. }
  62. if (!((saddr, sport, daddr, dport) in srttfile)) {
  63. srttfile[saddr, sport, daddr, dport] = sprintf("%s/srtt-%d,%d-%d,%d.out", dir, saddr, sport, daddr, dport);
  64. printf "TitleText: (%d,%d)->(%d,%d)n", saddr, sport, daddr, dport > srttfile[saddr,sport,daddr,dport];
  65. printf "Device: Postscriptn" > srttfile[saddr,sport,daddr,dport];
  66. }
  67. if (!((saddr, sport, daddr, dport) in rttvarfile)) {
  68. rttvarfile[saddr, sport, daddr, dport] = sprintf("%s/rttvar-%d,%d-%d,%d.out", dir, saddr, sport, daddr, dport);
  69. printf "TitleText: (%d,%d)->(%d,%d)n", saddr, sport, daddr, dport > rttvarfile[saddr,sport,daddr,dport];
  70. printf "Device: Postscriptn" > rttvarfile[saddr,sport,daddr,dport];
  71. }
  72. printf "%g %gn", time, cwnd > cwndfile[saddr, sport, daddr, dport];
  73. printf "%g %dn", time, ssthresh > ssthreshfile[saddr, sport, daddr, dport];
  74. printf "%g %dn", time, ownd > owndfile[saddr, sport, daddr, dport];
  75. printf "%g %dn", time, owndcorr > owndcorrfile[saddr, sport, daddr, dport];
  76. printf "%g %gn", time, srtt > srttfile[saddr, sport, daddr, dport];
  77. printf "%g %gn", time, rttvar > rttvarfile[saddr, sport, daddr, dport];
  78. 1} 
  79. END {
  80. for (f in cwndfile) {
  81. close(cwndfile[f]);
  82. }
  83. for (f in ssthreshfile) {
  84. close(ssthreshfile[f]);
  85. }
  86. for (f in owndfile) {
  87. close(owndfile[f]);
  88. }
  89. for (f in owndcorrfile) {
  90. close(owndcorrfile[f]);
  91. }
  92. for (f in srttfile) {
  93. close(srttfile[f]);
  94. }
  95. for (f in rttvarfile) {
  96. close(rttvarfile[f]);
  97. }
  98.   for (i in starttime) {
  99. if (endtime[i] == starttime[i]) 
  100. print starttime[i], endtime[i], highest_ack[i];
  101. bw = calc_bw(0,highest_ack[i],starttime[i],endtime[i]);
  102. #  bw = (highest_ack[i]/(endtime[i] - starttime[i]))*8.0;
  103. # duration = endtime[i] - starttime[i];
  104. duration = 15;
  105. if (i in cwndtime) {
  106. ss_bw = calc_bw(cwndhiack[i],highest_ack[i],cwndtime[i],endtime[i]);
  107. # ss_bw = ((highest_ack[i] - cwndhiack[i])/(endtime[i] - cwndtime[i]))*8.0;
  108. ss_starttime = cwndtime[i] - starttime[i];
  109. }
  110. else {
  111. ss_bw = -1;
  112. ss_starttime = -1;
  113. }
  114. if (i in middletime) {
  115. sh_bw = calc_bw(middlehiack[i],highest_ack[i],middletime[i],endtime[i]);
  116. # sh_bw = ((highest_ack[i] - middlehiack[i])/(endtime[i] - middletime[i]))*8.0;
  117. }
  118. else {
  119. sh_bw = -1;
  120. }
  121. on_bw = -1;
  122. if (i in turnontime) {
  123. if (turnontime[i] < turnofftime[i]) {
  124. # on_bw = calc_bw(turnonhiack[i],turnoffhiack[i],turnontime[i],turnofftime[i]);
  125. on_bw = calc_bw(turnonhiack[i],turnoffhiack[i],turnon,turnoff);
  126. # on_bw = ((turnoffhiack[i] - turnonhiack[i])/(turnofftime[i] - turnontime[i]))*8.0;
  127. }
  128. }
  129.   print ind[i], duration, bw, ss_starttime, ss_bw, sh_bw, on_bw > "thruput";
  130. print ind[i], numrexmit[i] > "numrexmit";
  131.   }
  132. close("thruput");
  133. close("numrexmit");
  134. for (i in ind) {
  135. print ind[i] > "index.out"
  136. }
  137. close("index.out");
  138. }
  139. function calc_bw(startseq, endseq, starttime, endtime) {
  140. if (endtime > starttime ) {
  141. return ((endseq-startseq)*8.0/(endtime-starttime));
  142. }
  143. else {
  144. return -1;
  145. }
  146. }