【问题标题】:NS-3 Sniffing Passive ACKsNS-3 嗅探被动 ACK
【发布时间】:2017-11-24 13:58:13
【问题描述】:
我正在 NS-3 中编辑 AODV 模块。
当一个节点将数据包转发到下一个节点时,我希望我的 AODV 模块监听下一个节点的转发过程,以确保它正确转发。
pcap 文件正确地嗅探下一个节点的传输,但我无法从 AODV 模块获取它。
我猜测数据包正在被丢弃,因为它不应该参与其中,因此我想知道如何更改它。
谁能告诉我在哪里可以更改任何相关代码?
谢谢
【问题讨论】:
标签:
c++
adhoc
ns-3
ad-hoc-network
【解决方案1】:
可以通过挂钩其中一个 Wi-Fi 设备跟踪源来完成窃听。 WifiPhy 对象中的 MonitorSnifferRx 可能就是您想要的。有两个步骤:1) 以某种方式获取指向 Wi-Fi Phy 的指针,以及 2) 将回调函数附加到该跟踪源。
步骤 1) 已经在 Aodv 中以现有方法完成:
RoutingProtocol::NotifyInterfaceUp ()
...
// Allow neighbor manager use this interface for layer 2 feedback if possible
Ptr<WifiNetDevice> wifi = dev->GetObject<WifiNetDevice> ();
从这里,可以得到一个Phy对象指针:
Ptr<WifiPhy> phy = wifi->GetPhy();
从这里开始,您将需要使用 TraceConnectWithoutContext() 来挂钩跟踪源,并使用具有与 MonitorSniffRx 跟踪预期匹配的函数签名的回调。
phy->TraceConnectWithoutContext ("MonitorSniffRx", MakeCallback (&InsertYourCallbackFunctionHere));
看看 Mac 级别的跟踪源“TxErrHeader”是如何类似地挂在同一方法中的。