使用 trace.json 计算丢弃的数据包以在 UnetStack3 中进行模拟

Calculating Dropped Packet using trace.json for a simulation in UnetStack3

我想使用 trace.json 文件为 UnetStack 中的模拟计算 dropped packet 的数量。我知道,在 trace.nam 文件中,每个丢弃的数据包都有一个用 'd' 记录的事件,但是我如何使用 [=12] 计算 UnetStack3 中模拟的 dropped packet 的编号=]

我写了一个python脚本来计算总传输数据包和总接收数据包。

伪代码为:-

对于每个事件 { // 传输的包数 如果(刺激[发送者] == phy 和刺激[接收者] == phy 和响应[clazz] == TxFrameNtf) { transfered_packet_count++; 保存事件的 message_id 以匹配接收数据包事件 } //接收包计数 if(stimulus[sender] == phy and stimulus[recipient] == phy and you get a matching message_id event) { 如果(响应[收件人]!='#phy__snoop__ntf'和响应[clazz]!='BadFrameNtf'和res['clazz']=='RxFrameNtf'): received_packet_count++; } }

我在 aloha 模拟跟踪文件上测试了这段代码。我得到了更多 packet_transfered_count 和 packet_receiving_count。 请帮助我解决我缺少的条件?

获取整个python脚本here

trace.nam 不同,目前 trace.json 中没有任何条目与丢弃的数据包相对应。

但是,您可以通过比较 trace.json 中的 HalfDuplexModem$TX 条目(对应于帧到达节点)与相应的 RxFrameNtf/[ 来推断丢失的数据包=15=]条目(对应帧是接收成功还是损坏)。