bash - ns2中有处理有线传输trace文件的awk脚本吗?
问题描述
我正在尝试编写一个用于处理有线网络传输的 awk 脚本。到目前为止,我已经阅读了很多 awk 脚本,但它们都是为无线技术编写的,因此我发现自己可以编写自己的 awk 脚本来处理跟踪文件。我对度量计算有些困惑。
我试图编写下面提供的 awk 脚本,但我偶然发现了几个问题。他们是:
如果我们从节点 0 向节点 1 发送一个 tcp 数据包,并假设该数据包成功到达节点 1,但在返回的途中,作为确认数据包的“ack”数据包被丢弃。我们会认为数据包传递率是 50% 还是 0?
在确定平均延迟时,我们是只考虑源-中间路径还是整个源-目的地路径?
在判断一个数据包是否被成功接收时,我们是否应该将源端接收到的最终“ack”数据包视为已接收?或者只是接收数据包的目的地?
{ strEvent = $1; rTime = $2; from_node = $3; to_node = $4; pkt_type = $5; pkt_size = $6; flgStr = $7; flow_id = $8; src_addr = $9; dest_addr = $10; seq_no = $11; pkt_id = $12; if(pkt_type == "tcp"){ if (pkt_id > idHighestPacket) idHighestPacket = pkt_id; if (pkt_id < idLowestPacket) idLowestPacket = pkt_id; if(rTime>rEndTime) rEndTime=rTime; if(rTime<rStartTime) rStartTime=rTime; if ( strEvent == "+" && send_flag[pkt_id] == 0 ) { nSentPackets += 1 ; rSentTime[ pkt_id ] = rTime ; send_flag[pkt_id] = 1; } if ( strEvent == "r" && pkt_id >= idLowestPacket) { nReceivedPackets += 1 ; nReceivedBytes += pkt_size; rReceivedTime[ pkt_id ] = rTime ; rDelay[pkt_id] = rReceivedTime[ pkt_id] - rSentTime[ pkt_id ]; rTotalDelay += rDelay[pkt_id]; } if(strEvent == "d"){ if(rTime>rEndTime) rEndTime=rTime; if(rTime<rStartTime) rStartTime=rTime; nDropPackets += 1; } } } END { rTime = rEndTime - rStartTime ; rThroughput = nReceivedBytes*8 / rTime; rPacketDeliveryRatio = nReceivedPackets / nSentPackets * 100 ; rPacketDropRatio = nDropPackets / nSentPackets * 100; if ( nReceivedPackets != 0 ) { rAverageDelay = rTotalDelay / nReceivedPackets ; } printf( "%15.2f\n%15.5f\n%15.2f\n%15.2f\n", rThroughput,rAverageDelay, nSentPackets, nReceivedPackets); printf( "%15.2f\n%10.2f\n%10.2f\n%10.5f\n", nDropPackets, rPacketDeliveryRatio, rPacketDropRatio,rTime); printf("Total Delay = %15.5f\n",rTotalDelay); printf("Ending Analysis\n"); }
解决方案
推荐阅读
- excel - 使用 Excel VBA 在 Outlook 上创建新的草稿文件夹
- cakephp-3.x - 是否可以自定义烘焙(CakePHP 3)添加的操作?
- css - 包含 SVG 的按钮的高度出乎意料
- google-cloud-platform - 从云数据流连接到 bigtable
- javascript - Firebase 云消息订阅主题 Web 推送通知
- reporting - birt 报告获取 url 参数的值
- ssl - SAN 在 SSL 证书中被清除
- rust - 如何将闭包参数传递给具有生命周期参数的特征方法?
- javascript - 提交按钮后 10 秒无法显示模式,然后导航到另一个页面
- android - 如何在片段中实现导航抽屉