⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analyse-ns-trace.pl

📁 采用蚂蚁算法实现ad hoc网络路由协议,平台为ns2
💻 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 + -