NS2丢弃数据包

时间:2014-06-19 10:15:56

标签: ns2

大家好:当我为600s区域的60节点运行AODV时,我得到了这个结果是100X100最大速度10m / s: ,生成的数据包== 95364,发送== 95364,丢失= 112,丢弃= 112786,最大延迟= 0.00899

是丢弃的数据包的数量是否大于生成的数据? 请任何人都可以解释一下??? 如果有模拟错误请告诉我。

另一个问题是什么丢包真正意味着NS2 ???剂量它包含中间节点丢包?

提前致谢

4 个答案:

答案 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.