![设置说明:](https://linux22.com/image/116549/%E8%AE%BE%E7%BD%AE%E8%AF%B4%E6%98%8E%EF%BC%9A.png)
我希望得到您对我现在面临的特定问题的建议/评论。在同一主机上配置的端口镜像上观察到此问题,而远程端的端口镜像工作正常。
设置说明:
UDP 中的 OAM 数据包由两个线程各发送和接收。 OAM报文通过以太网发送到远端,在该OAM报文在IP栈中遍历的过程中,输出挂钩应用(如下所示),这将克隆传出的 OAM 数据包以用于镜像目的。
iptables -t mangle -A OUTPUT -d 172.25.62.55/32 -p udp -m udp --dport 16 --port 33 -j oam_mirror --ip 172.25.62.38 --cid 33
在上面的规则中,172.25.62.55
是远程IP,172.25.62.38
是本地主机IP。
我的调试和观察:
我可以验证 OAM 数据包是否已克隆并保留在堆栈中(使用ip_send_check(iph); dst->output(nskb);
)以正确到达接收端(克隆pkt src IP = 172.25.62.38, dst IP = 172.25.62.38
),但此克隆的 OAM 数据包未在同一主机上的接收线程处接收。
我认为根据调试此场景后的观察,OAM 数据包未路由到本地 IP 传递,并且在 oam_mirror 挂钩后丢失了数据包。在限制性系统上的 IP 堆栈中调试此数据包非常困难。
我被困在这里,从现在起无法去任何地方,有人能建议我如何继续前进吗?如果您能为这个特定问题提供一些解决方案,那将非常有帮助。
如果您需要更多这方面的信息,请随时询问。