0

我正在使用 NS-3 v3.28.1 来模拟 WiFi Mesh 网络。网格拓扑(实际上只有一条线,每个节点安装 IEEE 802.11s 堆栈,HWMP 协议)包含 3 个 WiFi Mesh 节点Node0Node1Node2然后我在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 值才能读取。

4

1 回答 1

0

您可以使用NS-3 Packet类来获取您需要的信息并对其进行过滤。

如果可以的话,我建议在发送者上添加一个数据包标签(或 ByteTag),让你的中间节点更容易过滤它。数据包标签详细信息也在上面的链接上。

于 2020-10-14T01:23:34.730 回答