我已经编写了以下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(跟踪文件名)