【发布时间】:2018-11-30 15:32:40
【问题描述】:
我目前正在寻找使用 python 实现一个基本的流量采样器,我想知道如何有效地实现每次捕获之间的采样器间隔。 我没有使用 sFlow,因为我想对我的 NIC 上的流量进行采样。
我看过 scapy,但它似乎没有提供采样功能。 因此,在附加到 sniff 的处理函数中(例如 sniff(prn=XXX) )我应该自己实现一个计时器来检查是否应该专门处理数据包?
否则,我对以下代码有一个想法(基本示例):
#Packet sniffer in python
#For Linux
import socket
#create an INET, raw socket
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
# receive a packet
while True:
sleep(1) # Timer ?
print s.recvfrom(65565)
我也查看了套接字创建,但没有找到任何合适的答案。
我的问题是,在网络接口上捕获和采样流量的最有效、性能方面的方法是什么?
【问题讨论】:
-
你可以在scapy的
sniff函数上使用prn参数,然后在time.time()大于存储值20秒时执行一个动作
标签: python scapy sampling network-monitoring