?? analyse-ns-trace.pl
字號:
#!/usr/bin/perl#counting by source, how much sent/received$appPacketsSent = 0;$appPacketsReceived = 0;$appBytesSent = 0;$appBytesReceived = 0;$routerPacketsSent = 0;$routerPacketsReceived = 0;$routerBytesSent = 0;$routerBytesReceived = 0;while (<>) { if (/^.*-Nl AGT/){ # Packet sent/received by the app stack if (/^r.*-Is (\S+) -Id (\S+).*-Il (\S+)/){ $appPacketsReceived++; $appBytesReceived+=$3; $pair = $1."->".$2; $appPacketsReceived{$pair}++; $appBytesReceived{$pair}+=$3; } if (/^s.*-Is (\S+) -Id (\S+).*-Il (\S+)/){ $appPacketsSent++; $appBytesSent+=$3; $pair = $1."->".$2; $appPacketsSent{$pair}++; $appBytesSent{$pair}+=$3; } } if (/^.*-Nl RTR.*-P swarm/){ # Packet processed by the swarm agent if (/^.*-Is (\S+)\.255 -Id (\S+)\.255.*-Il (\S+).*/){ # router packet processed by the routing agent $pair = $1."->".$2; $bytes = $3; if($2<=-1){ #broadcast if(/^r/) { $routerBroadcastPacketsReceived++; $routerBroadcastBytesReceived+=$bytes; $routerBroadcastPacketsReceived{$pair}++; $routerBroadcastBytesReceived{$pair}+=$bytes; } if (/^s/){ $routerBroadcastPacketsSent++; $routerBroadcastBytesSent+=$bytes; $routerBroadcastPacketsSent{$pair}++; $routerBroadcastBytesSent{$pair}+=$bytes; } } else{ if(/^r/) { $routerPacketsReceived++; $routerBytesReceived+=$bytes; $routerPacketsReceived{$pair}++; $routerBytesReceived{$pair}+=$bytes; } if (/^s/){ $routerPacketsSent++; $routerBytesSent+=$bytes; $routerPacketsSent{$pair}++; $routerBytesSent{$pair}+=$bytes; } if (/^d/){ $routerPacketsFailed++; $routerBytesFailed+=$bytes; $routerPacketsFailed{$pair}++; $routerBytesFailed{$pair}+=$bytes; } } /^.*-t (\S+).*-Ii (\S+).*-Pd (\S+) -Ps (\S+)/; $time = $1; $id = $2; $dest = $3; $src = $4; $pair = $src."->".$dest; if(/^s/ && $sent[$id]==0) {$sent[$id]=$time}; if(/^r/) {$recv[$id]=$time}; if(/^d/) {$drop[$id]=$time}; } } if (/^.*-Nl RTR.*-P aodv/){ # Packet processed by aodv if (/^.*-Is (\S+)\.255 -Id (\S+)\.255.*-Il (\S+).*/){ # router packet processed by the routing agent $pair = $1."->".$2; $bytes = $3; if($2<=-1){ #broadcast if(/^r/) { $routerBroadcastPacketsReceived++; $routerBroadcastBytesReceived+=$bytes; $routerBroadcastPacketsReceived{$pair}++; $routerBroadcastBytesReceived{$pair}+=$bytes; } if (/^s/){ $routerBroadcastPacketsSent++; $routerBroadcastBytesSent+=$bytes; $routerBroadcastPacketsSent{$pair}++; $routerBroadcastBytesSent{$pair}+=$bytes; } } else{ if(/^r/) { $routerPacketsReceived++; $routerBytesReceived+=$bytes; $routerPacketsReceived{$pair}++; $routerBytesReceived{$pair}+=$bytes; } if (/^s/){ $routerPacketsSent++; $routerBytesSent+=$bytes; $routerPacketsSent{$pair}++; $routerBytesSent{$pair}+=$bytes; } if (/^d/){ $routerPacketsFailed++; $routerBytesFailed+=$bytes; $routerPacketsFailed{$pair}++; $routerBytesFailed{$pair}+=$bytes; } } } } if (/^.*-Nl RTR.*-Pn tcp/){ # Packet processed by ip if (/^.*-Hd (\S+).*-Md (\S+) -Ms (\S+).*-Il (\S+).*/){ # router packet processed by the routing agent $pair = $3."->".$2; $bytes = $4; if($1==$2){ if(/^r/) { $routerPacketsReceived++; $routerBytesReceived+=$bytes; $routerPacketsReceived{$pair}++; $routerBytesReceived{$pair}+=$bytes; } if (/^s/){ $routerPacketsSent++; $routerBytesSent+=$bytes; $routerPacketsSent{$pair}++; $routerBytesSent{$pair}+=$bytes; } if (/^d/){ $routerPacketsFailed++; $routerBytesFailed+=$bytes; $routerPacketsFailed{$pair}++; $routerBytesFailed{$pair}+=$bytes; } } } }}#printf " %d %d %d %d %d %f %d %f %f %f\n" ,$snt, $rst, $rcv, $drp, $fwd, ($lat/$snt), $tot, $starttime, $finishtime, ($finishtime-$starttime);printf "App Pkt Sent/Rcv, Bytes Sent/Rcv\n";printf "*, %d, %d, %d, %d\n", $appPacketsSent, $appPacketsReceived, $appBytesSent, $appBytesReceived;while( ($id,$other) = each(%appPacketsSent) ){ printf "%s, %d, %d, %d, %d\n", $id, $appPacketsSent{$id}, $appPacketsReceived{$id}, $appBytesSent{$id}, $appBytesReceived{$id};}printf "\n";printf "Unirouter Pkt Sent/Rcv/Fail, Bytes Sent/Rcv/Fail\n";printf "*, %d, %d, %d, %d, %d, %d\n", $routerPacketsSent, $routerPacketsReceived, $routerPacketsFailed, $routerBytesSent, $routerBytesReceived, $routerBytesFailed;while( ($id,$other) = each(%routerPacketsSent) ){ printf "%s, %d, %d, %d, %d, %d, %d\n", $id, $routerPacketsSent{$id}, $routerPacketsReceived{$id}, $routerPacketsFailed{$id}, $routerBytesSent{$id}, $routerBytesReceived{$id}, $routerBytesFailed{$id};}printf "\n";printf "router Broadcast Pkt Sent/Rcv, Bytes Sent/Rcv\n";printf "*, %d, %d, %d, %d\n", $routerBroadcastPacketsSent, $routerBroadcastPacketsReceived, $routerBroadcastBytesSent, $routerBroadcastBytesReceived;while( ($id,$other) = each(%routerBroadcastPacketsSent) ){ printf "%s, %d, %d, %d, %d\n", $id, $routerBroadcastPacketsSent{$id}, $routerBroadcastPacketsReceived{$id}, $routerBroadcastBytesSent{$id}, $routerBroadcastBytesReceived{$id};}$numberPackets = @sent;printf "Number packets %d\n",$numberPackets;for ($i = 0; $i < $numberPackets; $i++){ if (!(!($sent[$i]) || !($recv[$i]))){ $lat += ($recv[$i] - $sent[$i]); $hopTot += $hopcount[$i]; }}printf "\n\nAverage Latency %f, hopcount %f\n", ($lat/$appPacketsReceived), ($hopTot/$numberPackets);printf "Packet Delivery Overhead = %f\n", ($routerPacketsSent+$routerBroadcastPacketsSent)/$appPacketsSent;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -