是否有awk脚本用于处理ns2中的有线传输的跟踪文件?

时间:2018-12-29 03:49:41

标签: bash awk trace ns2

我正在尝试编写awk脚本来处理有线网络传输。到目前为止,我已经经历了很多awk脚本,但是它们都是针对无线技术编写的,因此,我发现自己可以编写自己的awk脚本来处理跟踪文件。我对指标计算有些困惑。

我尝试编写下面提供的awk脚本,但偶然发现了几个问题。他们是:

  • 如果我们将tcp数据包从节点0发送到节点1,并且假设该数据包成功到达节点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");
    
    }
    

0 个答案:

没有答案