g使用awk脚本计算吞吐量



我已经编写了以下awk脚本来计算NS2.35中路由协议的平均吞吐量。下面给出了我的示例代码。

BEGIN {
   recvdSize = 0
   startTime = 400
   stopTime = 0
}
{
         event = $1
         time = $2
         node_id = $3
         pkt_size = $8
         level = $4
# Store start time
if (level == "AGT" && event == "s" && pkt_size >= 512) {
if (time < startTime) {
         startTime = time
         }
   }
# Update total received packets' size and store packets arrival time
if (level == "AGT" && event == "r" && pkt_size >= 512) {
   if (time > stopTime) {
         stopTime = time
         }
   # Rip off the header
   #hdr_size = pkt_size % 512
   #pkt_size -= hdr_size
   # Store received packet's size
   recvdSize += pkt_size
   }
}
END {
   printf("Average Throughput[kbps] = %.2ftt  StartTime=%.2ftStopTime=%.2fn",(recvdSize/(stopTime-startTime))*(8/1000),startTime,stopTime)
}

现在我只想计算CBR数据包(TCP)的吞吐量和平均吞吐量,并将其显示出来。我还需要在代码中添加哪些内容?


您可以尝试读取ns2的其他默认吞吐量脚本:awk#perl#python__scripts-10.2015.tar.gz中大约有22个thr*.awk文件,以及一些perl脚本thr*.pl:$ ls | grep -i thr

链接https://drive.google.com/file/d/0B7S255p3kFXNOUIteTVSWjdzQU0/view?usp=sharing

包中的专用tcp脚本是calc_tcp_goodput.awk、show_tcp_con、show_tcp_con.awk。


throughput.awk

开始{

   recvdSize = 0
   startTime = 400
   stopTime = 0

}

         event = $1
         time = $2
         node_id = $3
         pkt_size = $8
         level = $4

#存储开始时间

如果(level="MAC"&&event=="s"&&pkt_size>=300){

if (time < startTime) {
         startTime = time
         }
   }

#更新接收到的总数据包大小并存储数据包到达时间

如果(level="MAC"&&event=="r"&&pkt_size>=300){

   if (time > stopTime) {
         stopTime = time
         }
   # Rip off the header
   hdr_size = pkt_size % 512
   pkt_size -= hdr_size
   # Store received packet's size
   recvdSize += pkt_size
   }

}

完{打印"=====================================================+\n";

   printf("ttThroughput[kbps]         : %.2fn",(recvdSize/(stopTime-startTime))*(8/1000))

打印"\n+=====================================================+\n";

}

执行命令:

awk-f throughput.awk-out.tr(跟踪文件名)

最新更新