sFlow sampled flow协议解析

发布时间 2023-07-06 15:15:14作者: 秋来叶黄

sflow是一种用来统计网络流量的采样方案。

采样方式

按照包数采样

比如采样率是1000,每经过一个包,计数器减一,如果计数器为0,采样当前的数据包,然后计数器重置。

随机采样

由于按照固定包数采样,有可能会采到有规律的包,影响采样有效性。比如采样率是1000,每1000个包中,999个都是从A->B的数据,就只有一个是从C->D的数据,并且是有规律的,每1000出现一次,也就是与采样率匹配。这样会一直采到C->D的数据包,认为网络中都是C->D的流量。为了解决这个问题,就出现了随机数采样。就是指定一个数值范围,比如[0, 10),每次数据包过滤都产生一个[0, 10000)的随机数,如果在[0, 10)以内,就采样,不在就丢弃。这样既满足了1/1000的采样率,又避免了上面的问题。

按照时间间隔采样

还有一种就是固定多少时间采样一次。

原理

sflow的原理就是当满足采样条件时,会把当前包的包头截取下来,发送出去。接收者就可以根据包头信息进行分析。
https://sflow.org/
https://sflow.org/sflow_version_5.txt
https://en.wikipedia.org/wiki/SFlow
https://www.rfc-editor.org/rfc/rfc3176
https://www.rfc-editor.org/rfc/rfc1014