Назад | Перейти на главную страницу

Потоки IPFIX от OVS Linux Bridge не точны

Я изо всех сил пытаюсь понять свои данные потока 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 в логарифмической шкале или что-то в этом роде?

Мы будем очень благодарны за любую информацию или совет.