如何丢弃 NS-3 网状节点中捕获的特定数据包?



我正在使用NS-3 v3.28.1来模拟WiFi网状网络。网格拓扑(实际上只有一条线路,每个节点都安装了IEEE 802.11s堆栈,HWMP协议(包含3个WiFi网状节点,节点0,节点1节点2。然后我在Node0中绑定一个 UDP 套接字(充当接收器(,在Node2中绑定另一个(充当发送方(。节点 2每 10 毫秒通过节点1向节点0发送一个 UDP 数据包。拓扑如下:

节点 0 (接收方(<---节点 1<----节点>2(发送方(

10.1.1.1/24 10.1.1.2/2410.1.1.3/24

然后我在节点 1上设置了一个 MonitorSnifferRx 函数,以使用Config::ConnectWithoutContext监听从节点2发送到节点 0的 udp 数据包:

Config::ConnectWithoutContext ("/NodeList/1/DeviceList/*/Phy/MonitorSnifferRx", MakeCallback (&DecodeRxPktCB));

Node1回调函数 DecodeRxPktCB 中,我可以解码从Node2发送到Node0的 udp 数据包。

我的问题是: 当在Node1的 MonitorSnifferRx 回调函数中捕获的特定 UDP 数据包(内容与某些规则匹配(时,我如何删除它,使其不会传输到Node0? 我看到 MonitorSnifferRx 回调函数中的第一个参数是"Ptrconst值只能读取。

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

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

最新更新