2017-02-23 72 views
1

我有一些igmp查询,每2分钟出来bond0接口。IGMP查询的跟踪源

IP 0.0.0.0> 224.0.0.1:igmp query v2。

是否有可能跟踪哪个进程/程序正在做这个查询?

从检查中我发现查询的源MAC地址是bond0地址的mac地址。

由于这个查询需要几个CPU周期,我不确定我会在ps或netstat中找到它。我想我需要一些跟踪工具,如perf或systemtap。我是调试和跟踪领域的新手,所以我需要一些帮助来找到正确的命令和参数。

谢谢。

+1

IGMP查询将具有查询路由器的源地址。这是非常重要的,因为如果有多个多播路由器,最低的源IP地址将成为查询器,其他路由器需要进入非查询器状态。请参阅_ [RFC 2236,Internet组管理协议,版本2](https://tools.ietf.org/html/rfc2236)_:“_如果多路广播路由器从IP地址较低的路由器收到查询消息,它必须成为该网络上的非查询器._“ –

+0

由于您知道并且IGMP查询来自IP,因此您应该只查找运行IP的进程。 –

回答

1

正如你可能知道的IGMP在第3层工作,所以它可能有点棘手。它不必在端口和进程ID之间进行绑定。

你必须使用这些工具的组合:

tcpdump (to be certain IGMP is being sent out) 
netstat -avnp 
ps -ef | fgrep <pid> 
lsof 

当你这样做了tcpdump,我建议作出积极的PS -ef监控

while [[ true ]]; do 
    ps -ef >> /tmp/ps.out 
    netstat -natp | grep 234.55.55.55 >> /tmp/netstat.out 
    sleep .5 
done 

你会然后需要做的过程的消除。

+0

“_IGMP在第2层和第3层上运行”否,IGMP是IP协议的一部分,即第3层协议。从_ [RFC 2236,Internet Group Management Protocol,Version 2](https://tools.ietf.org/html/rfc2236)_:“_Iike ICMP,IGMP是IP的一个组成部分。 2和第3层。 –