NS-3嗅探被动ACK

时间:2017-11-24 13:58:13

标签: c++ adhoc ns-3 ad-hoc-network

我正在编辑NS-3中的AODV模块。

当一个节点将数据包转发到下一个节点时,我希望我的AODV模块听到无意中听到的下一个节点的转发过程,以确保它正确转发。

pcap文件正确地嗅探下一个节点的传输,但我无法从AODV模块中获取它。

我猜这个数据包正在被删除,因为它不应该被包含在内,所以我想知道如何改变它。

任何人都可以给我一些关于在哪里寻找更改相关代码的线索吗?

由于

1 个答案:

答案 0 :(得分:0)

可以通过挂钩其中一个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级跟踪源&#34; TxErrHeader&#34;同样用同样的方法挂钩。