大家好:当我为600s区域的60节点运行AODV时,我得到了这个结果是100X100最大速度10m / s: ,生成的数据包== 95364,发送== 95364,丢失= 112,丢弃= 112786,最大延迟= 0.00899
是丢弃的数据包的数量是否大于生成的数据? 请任何人都可以解释一下??? 如果有模拟错误请告诉我。
另一个问题是什么丢包真正意味着NS2 ???剂量它包含中间节点丢包?
提前致谢
答案 0 :(得分:1)
You might calculate the retransmitting dropped packets because once a packet being dropped, mac layer retransmits the packet again.
Note: don't calculate the packet those dropped at the end of simulation, those with drop reason is 'END'
答案 1 :(得分:0)
通常在网络模拟器2跟踪文件中;
第1列代表事件类型(s:发送,r:接收,d:删除,f:转发)
第2列和第3列提供了事件的时间。
第4到7列提供下一跳信息。
第8到21列称为节点属性标签。
第11列给出了丢包的原因,而丢包的各种可能原因如下。
END 由于模拟结束而下降
COL 由于在MAC层发生冲突而掉线
DUP 由于重复的数据包而丢失
由于MAC数据包错误导致ERR 丢失
RET 由于超出重试次数而下降
由于MAC无效状态,导致STA 丢失
BSY 由于MAC繁忙而下降
NRTE 下降是因为没有可用的路线
LOOP 由于路由循环而下降
TTL 由于TTL = 0而下降
TOUT 由于数据包过期而丢弃
IFQ 下降是由于IFQ中没有缓冲区空间
ARP 已删除ARP
OUT 被基站丢弃
您可以通过对原因进行分组来分析丢弃的数据包。
答案 2 :(得分:-1)
丢弃的数据包不可能大于生成(发送)数据包。检查您的脚本,您必须计算AGT层中的数据包丢失而不是在mac层中。
尝试使用下面的awk脚本找到值。
BEGIN {
sendLine = 0;
recvLine = 0;
fowardLine = 0;
dropLine = 0;
}
$0 ~/^s.* AGT/ {
sendLine ++ ;
}
$0 ~/^r.* AGT/ {
recvLine ++ ;
}
$0 ~/^f.* RTR/ {
fowardLine ++ ;
}
$0 ~/^D.* cbr/ {
dropLine ++ ;
}
END {
printf "Packet Sent: %d\n,sendLine"
printf "Packet Received: %d\n,recvLine"
printf "Packet Drop: %d\n,dropLine"
printf "PacketDelivery Ratio:%.4f \n",(recvLine/sendLine);
}
答案 3 :(得分:-1)
Well, you cannot drop more packets than you generate. Usually you drop them at the bottleneck queue, where they overflow the queue.