wifi - 如何丢弃在 NS-3 网状节点中捕获的特定数据包?
问题描述
我正在使用 NS-3 v3.28.1 来模拟 WiFi Mesh 网络。网格拓扑(实际上只有一条线,每个节点安装 IEEE 802.11s 堆栈,HWMP 协议)包含 3 个 WiFi Mesh 节点Node0、Node1和Node2。然后我在Node0中绑定一个 UDP 套接字(充当接收者),在Node2中绑定另一个(充当发送者) 。Node2每 10ms通过Node1向Node0发送一个 UDP 数据包。拓扑如下:
Node0(接收者)<--- Node1 <---- Node2(发送者)
10.1.1.1/24 10.1.1.2/24 10.1.1.3/24
然后我在Node1上设置 MonitorSnifferRx 函数来监听从Node2发送到Node0的 udp 数据包,使用Config::ConnectWithoutContext
:
Config::ConnectWithoutContext ("/NodeList/1/DeviceList/*/Phy/MonitorSnifferRx", MakeCallback (&DecodeRxPktCB));
在Node1回调函数 DecodeRxPktCB 中,我可以解码从Node2发送到Node0的 udp 数据包。
我的问题是:当在Node1的 MonitorSnifferRx 回调函数中捕获到特定的 UDP 数据包(内容与某些规则匹配)时,我怎样才能将其丢弃,因此它不会传输到Node0?我看到 MonitorSnifferRx 回调函数中的第一个参数是“Ptr< const Packet > packet”,只有 const 值才能读取。
解决方案
您可以使用NS-3 Packet类来获取您需要的信息并对其进行过滤。
如果可以的话,我建议在发送者上添加一个数据包标签(或 ByteTag),让你的中间节点更容易过滤它。数据包标签详细信息也在上面的链接上。
推荐阅读
- c# - 如何将 FluentValidation When() 与 DataAnnotations 一起使用
- documentation - 如何在另一个应用程序中使用 mkdocs 风车搜索?
- windows - Get-GPO:当前安全上下文未与 Active Directory 域或林关联
- vba - 对于每个新行单元格,复制前一行的格式
- python - Python:函数调用另一个函数,范围可能存在问题?
- visual-studio-2019 - 为虚幻引擎开发安装 Visual Studio Community 2019 时出错
- typescript - 如何解决在 [Output] 上调用 [toString]
] 不支持来自 pulumi 打字稿的这个错误? - reactjs - 类型错误:您必须传递一个有效的文件列表来解析
- flutter - Flutter 和 Getx:如何将参数从 UI 传递到 Getx 控制器?
- java - Lombok 或 Spring Boot 的 null 默认值?