2017-02-23 76 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層。 –