【问题标题】: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”是如何类似地挂在同一方法中的。

    【讨论】:

    • 请原谅我不能公开投票给你.. :(
    猜你喜欢
    • 2018-06-01
    • 2014-12-11
    • 2012-10-15
    • 1970-01-01
    • 2010-10-18
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多