Есть ли awk-скрипт для обработки файла трассировки проводной передачи в ns2? - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь написать скрипт 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");
    
    }
    
...