Я использую Поток трафика
с 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? Как с этим справляются другие поставщики (в настоящий момент у меня нет другого оборудования для тестирования)?
Глядя на документацию 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.
Если только кто-то не знает решения / обходного пути.