我正在努力理解我的 IPFIX 流数据。
解释一下:我有一个 Ubuntu(16.04.2 LTS Xenial Xerus)盒子,在盒子里,我有一个 Linux 桥:
root@Ubuntu1:~# ovs-vsctl show
527530c2-6f42-498f-92a6-67dc43d931bc
Bridge "myBridge"
Port "eth1"
Interface "eth1"
type: dpdkvhostuser
Port "eth2"
…etc…
ovs_version: "2.9.3"
root@Ubuntu1:~#
好的:我已在此桥上启用 IPFIX 导出:
ovs-vsctl -- set bridge myBridge ipfix=@i -- --id=@i create IPFIX targets=\"10.0.0.10:4739\" obs_domain_id=1234 obs_point_id=5678 sampling=5
网桥已成功将流量导出到 10.0.0.10 收集器。从许多帖子(如这里) 我理解“octetDeltaCount”是给定流量中的原始字节数。我想验证这一点,所以我设置了两个虚拟机 A 和 B,并使用 iPerf3 通过我的 Linux 桥将测试流量从 A 发送到 B。我的结果令人沮丧:
iPerf3 IPFIX's
Transferred octetDeltaCount
iPerf3 test (bytes) reported Delta
=========================================================================================
iperf3 -c 168.161.114.16 -n 1K 28,700 69,195 -40,495
iperf3 -c 168.161.114.16 -n 250K 303,700 637,345 -333,645
iperf3 -c 168.161.114.16 -n 500K 559,000 975,425 -416,425
iperf3 -c 168.161.114.16 -n 1M 1,060,000 962,286 97,714
iperf3 -c 168.161.114.16 -n 250M 216,700,000 1,016,687 215,683,313
iperf3 -c 168.161.114.16 -n 500M 500,100,000 1,143,102 498,956,899
iperf3 -c 168.161.114.16 -n 1G 1,000,000,000 1,348,778 998,651,222
iperf3 -c 168.161.114.16 -n 10G 10,000,000,000 3,721,548 9,996,278,452
(第二列的注释:当我指定 iPerf 发送“1K”流量时,iPerf 实际上发送了 28,700 字节。但没关系,我更关心 IPFIX 如何报告 iPerf 发送的内容。)
好吧,这里的坏消息应该很明显了。IPFIX 无法准确报告字节数,远远不够。我可以接受 1 MB 流量的结果,但其他结果则差得太远了。这里有些不对劲。
尤其是,当我发送超过 1Mbytes/flow 时,报告的“octetDeltaCount”变得非常不准确。看看那些增量!
如果您查看我用来启用 Linux 交换机 IPFIX 导出的 ovs-vsctl 命令,您会注意到我已将流采样设置为 N=5,这意味着交换机正在查看每五个数据包。我的收集器不知道这一点,它只是报告从交换机获取的原始数据。但显然,将“octetDeltaCount”列乘以五将抵消此问题。这里还有其他因素在起作用。
以前有人遇到过这样的问题吗?我很好奇,您是否做了我所做的事,但得到了准确的数字。如果是这样,那么也许我的 IPFIX 收集器不太好。或者 OVS 是否以对数刻度报告 IPFIX 数据或类似的东西?
任何信息或建议都将不胜感激。