MikroTik - Обертка счетчика октетов потока трафика (Netflow)

Я использую Поток трафика с pmacct (nfacct) для ведения учета IP.

I ' Таким образом, при работе на 1 Гбит в течение 60 секунд ( тайм-аут активного потока ) он должен был иметь размер не менее ~ 7864320000 октетов (~ 7,3 ГБ)

Если я уменьшу тест полосы пропускания до 460 Мбит тогда экспортированные потоки, кажется, правильно сообщают о трафике, поскольку счетчик октетов не превышает 32-битного максимума без знака. Хотя я вижу довольно много накладных расходов, и мне интересно, почему это так. При устойчивом трафике 460 Мбит за 60 секунд он должен измерить ~ 3617587200 октетов (= 3,36 ГБ). Но вместо этого было измерено 4269160500 (= 3,9 ГБ) Я не уверен, откуда взялись лишние ~ 600 МБ.

Flow 6
    [Duration: 59.590000000 seconds (switched)]
    Packets: 2846107
    Octets: 4269160500
    InputInt: 16
    OutputInt: 0
    SrcAddr: 31.X.X.254
    DstAddr: 185.X.X.254
    Protocol: UDP (17)
    IP ToS: 0x00
    SrcPort: 2058 (2058)
    DstPort: 2314 (2314)
    NextHop: 185.X.X.X
    DstMask: 0
    SrcMask: 0
    TCP Flags: 0x00
    Destination Mac Address: Routerbo_0d:95:72 (d4:ca:6d:XX:XX:XX)
    Post Source Mac Address: 00:00:00_00:00:00 (00:00:00:00:00:00)
    Post NAT Source IPv4 Address: 31.X.X.254
    Post NAT Destination IPv4 Address: 185.X.X.254
    Post NAPT Source Transport Port: 0
    Post NAPT Destination Transport Port: 0

Но если я увеличу тест полосы пропускания, например, до 480 Мбит, то счетчик экспортируемого потока будет обернут вокруг потери значительного объема данных (то есть: ~ 4 ГБ данных)

Flow 3
    [Duration: 59.590000000 seconds (switched)]
    Packets: 2865308
    Octets: 2994704 <-- Only 2.8MB?! Even with 64byte packets,
                    based on the measured packets above, 
                    it should have measured > 174MBytes of data!
    InputInt: 16
    OutputInt: 0
    SrcAddr: 31.X.X.254
    DstAddr: 185.X.X.254
    Protocol: UDP (17)
    IP ToS: 0x00
    SrcPort: 2055 (2055)
    DstPort: 2311 (2311)
    NextHop: 185.X.X.X
    DstMask: 0
    SrcMask: 0
    TCP Flags: 0x00
    Destination Mac Address: Routerbo_0d:95:72 (d4:ca:6d:XX:XX:XX)
    Post Source Mac Address: 00:00:00_00:00:00 (00:00:00:00:00:00)
    Post NAT Source IPv4 Address: 31.X.X.254
    Post NAT Destination IPv4 Address: 185.X.X.254
    Post NAPT Source Transport Port: 0
    Post NAPT Destination Transport Port: 0

Вышеупомянутые тесты были выполнены на CCR1036-8G-2S + под управлением версии 6.32.1 (я не могу выполнить обновление, так как это производственная система).

Выполнение тех же тестов на установке x86 (под управлением 6.29 - также невозможно обновить потому что в производстве) результаты еще хуже! Похоже, что счетчик октетов оборачивается вокруг 2147483647 , что предполагает, что либо в версиях <6.32.1, либо в сборках без Tilera счетчик октетов имеет 32-битную подпись.

Вся ситуация примерно такая же. с, когда вы отслеживаете интерфейс Gbit с v1 SNMP (32-битные счетчики). Решение в SNMP очень простое. Используйте SNMP v2, который поддерживает 64-битные счетчики. Но я не могу найти никакого решения для Netflow.

Кто-нибудь еще может подтвердить эту проблему? Кто-нибудь знает обходной путь? Это ограничение протокола netflow или ошибка RouterOS? Как с этим справляются другие поставщики (в настоящий момент у меня нет другого оборудования для тестирования)?

1
задан 26 November 2015 в 19:32
1 ответ

Глядя на документацию Cisco по NetFlow v9, там упоминается, что счетчик байтов по умолчанию 32-битный, но его можно настроить, и предлагается увеличить его до 64-битного на основных маршрутизаторах и т. Д.

В некоторых случаях размер типа поля фиксируется по определению, для пример PROTOCOL или IPV4_SRC_ADDR. Однако в других случаях они определяется как вариантный тип. Это улучшает эффективность памяти в коллектор и снижает требования к пропускной способности сети между Экспортер и коллекционер. Например, в случае IN_BYTES на маршрутизатора доступа может быть достаточно использовать 32-битный счетчик (N = 4), на основном маршрутизаторе потребуется 64-битный счетчик (N = 8). Все счетчики и объекты, подобные счетчикам, представляют собой целые числа без знака размером N * 8 бит.

Таким образом, сам протокол может поддерживать 64-битные счетчики. Кажется, что в шаблоне mikrotik v9 используются 32-битные счетчики.

Я только что подтвердил это, захватив шаблон данных в wirehark.

FlowSet 1 [id=0] (Data Template): 256,257
    FlowSet Id: Data Template (V9) (0)
    FlowSet Length: 184
    Template (Id = 256, Count = 22)
        Template Id: 256
        Field Count: 22
        Field (1/22): LAST_SWITCHED
        Field (2/22): FIRST_SWITCHED
        Field (3/22): PKTS
        Field (4/22): BYTES
            Type: BYTES (1)
            Length: 4
        Field (5/22): INPUT_SNMP
        Field (6/22): OUTPUT_SNMP
        Field (7/22): IP_SRC_ADDR
        Field (8/22): IP_DST_ADDR
        Field (9/22): PROTOCOL
        Field (10/22): IP_TOS
        Field (11/22): L4_SRC_PORT
        Field (12/22): L4_DST_PORT
        Field (13/22): IP_NEXT_HOP
        Field (14/22): DST_MASK
        Field (15/22): SRC_MASK
        Field (16/22): TCP_FLAGS
        Field (17/22): DESTINATION_MAC
        Field (18/22): SOURCE_MAC
        Field (19/22): postNATSourceIPv4Address
        Field (20/22): postNATDestinationIPv4Address
        Field (21/22): postNAPTSourceTransportPort
        Field (22/22): postNAPTDestinationTransportPort
    Template (Id = 257, Count = 21)
        Template Id: 257
        Field Count: 21
        Field (1/21): IP_PROTOCOL_VERSION
        Field (2/21): IPV6_SRC_ADDR
        Field (3/21): IPV6_SRC_MASK
        Field (4/21): INPUT_SNMP
        Field (5/21): IPV6_DST_ADDR
        Field (6/21): IPV6_DST_MASK
        Field (7/21): OUTPUT_SNMP
        Field (8/21): IPV6_NEXT_HOP
        Field (9/21): PROTOCOL
        Field (10/21): TCP_FLAGS
        Field (11/21): IP_TOS
        Field (12/21): L4_SRC_PORT
        Field (13/21): L4_DST_PORT
        Field (14/21): FLOW_LABEL
        Field (15/21): IPV6_OPTION_HEADERS
        Field (16/21): LAST_SWITCHED
        Field (17/21): FIRST_SWITCHED
        Field (18/21): BYTES
            Type: BYTES (1)
            Length: 4
        Field (19/21): PKTS
        Field (20/21): DESTINATION_MAC
        Field (21/21): SOURCE_MAC

Поле байтов имеет длину 4.

Так что я думаю, это должно быть исправлено MikroTik.

Если только кто-то не знает решения / обходного пути.

0
ответ дан 4 December 2019 в 06:52

Теги

Похожие вопросы