Я изо всех сил пытаюсь понять свои данные потока 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 для отправки тестового трафика от A к B через мой мост Linux. Мои результаты обескураживали:
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 отправляет «1 КБ» трафика, iPerf фактически отправляет 28 700 байт. Но это нормально, меня больше беспокоит, как IPFIX сообщает, что отправляет iPerf.)
Хорошо, плохие новости здесь должны быть очевидны. IPFIX не совсем точно сообщает количество байтов. Я могу согласиться с результатами для потока 1 Мбайт, но другие слишком неуместны. Здесь что-то не так.
В частности, сообщаемый «octetDeltaCount» становится безумно неточным после того, как я отправляю более 1 Мбайт на поток. Посмотри на эти дельты!
Если вы посмотрите на команду ovs-vsctl, которую я использую для включения экспорта IPFIX с коммутатора Linux, вы заметите, что я установил выборку потока на N = 5, что означает, что коммутатор просматривает каждый пятый пакет. Мой коллектор не знает об этом, он просто сообщает необработанные данные, полученные от коммутатора. Но очевидно, что умножение столбца «octetDeltaCount» на пять устранит эту проблему. Здесь есть кое-что еще.
Кому-нибудь приходилось сталкиваться с такой проблемой раньше? Мне любопытно узнать, сделали ли вы то, что сделал я, но потом получили точные цифры. Если так, то, возможно, мой сборщик IPFIX не очень хорош. Или OVS сообщает данные IPFIX в логарифмической шкале или что-то в этом роде?
Мы будем очень благодарны за любую информацию или совет.