Проблемы и решения [Документация VAS Experts]

Проблемы и решения

Настроили сегодня отправку flow и столкнулись с проблемой — передается не вся информация. В чем может быть проблема?

Протокол Netflow v5 не гарантирует доставку, так как работает поверх udp, соответственно при потерях в сети и на коллекторе повторной отправки пакетов не осуществляется.
Соответственно, убедитесь в следующем:

  1. отсутствуют сетевые потери между СКАТ и коллектором. Например, не проходит ли трафик от управляющего канала до коллектора через шейпинг, нет ли ограничений на интерфейсах ниже скорости отдачи netflow СКАТ
  2. убедитесь, что коллектор способен принимать данные со скоростью отдачи СКАТ. Используйте параметр netflow_rate_limit для ограничения скорости, в том числе с целью диагностики можно установить скорость отдачи neflow СКАТ в минимальные значения, если на минимальных значениях проблем нет с приемом, то значит потери на уровне коллектора.

Потери на коллекторе можно посмотреть командой

grep "Sequence Errors" /var/log/messages|grep -v "Sequence Errors: 0"

ненулевые значения означают наличие потерь

Избавится от потерь можно:

  1. установкой параметра netflow_rate_limit, соответствующего информационному потоку и возможностям коллектора, если поставить слишком малое значение, то потери уже возникнут по другой причине - не будет успевать отправляться вся информация
  2. установкой nfsen на более производительный компьютер, отказ от виртуализации
  3. переход на tcp версию протокола IPFIX (Netflow)

В логе статистики var/log/dpi/fastdpi_stat.log выводится информация об отправке данных Netflow, которая может помочь в диагностике проблем.

[STAT    ][2019/02/01-17:21:28:938274] Statistics on NFLW_Full : {0/0/1668468}
                NFLW_Full_IPv4{3948181/939339852}{3111140/3415836963}{7760/13036/6640}
Первые 3 цифры - {0/0/1668468} : { ошибки connect/flow освобождено/нечего отправлять - счетчики пакетов не изменились }
NFLW_Full_IPv4{3948181/939339852}{3111140/3415836963}{7760/13036/6640} :
{3948181/939339852}  : пакеты/байты для direction = 0 ( ip_src < ip_dst )
{3111140/3415836963} : пакеты/байты для direction = 1 
{7760/13036/6640}    : не отправили по full netflow/ipfix - кол-во flow/пакеты direction==0/пакеты direction==1

Для IPv6 аналогично, но называется NFLW_Full_IPv6

Стали экспериментировать с параметром netflow_timeout. При netflow_timeout=1 потери отсутствуют.

Это означает, что потери происходят на коллекторе, значение параметра 1 приводит сглаживанию пиков отдачи нетфлоу. Потери без сглаживания происходят с большой вероятность из-за переполнения приемного буфера коллектора.

Детальнее: Что делает этот параметр netflow_timeout.

начинаем передачу в момент t1, определяем время следующей передачи t2.
если надо отправляем изменения статистик
- по портам
- по AS
- биллингу
- сессиям. Изменения по сессиям отправляем с учетом параметров active и passiv тайм-аутов.
потом смотрим если текущее время tn больше t2, то начинаем сразу новый цикл передачи. Иначе засыпаем на t2-tn.

Далее предположительно происходит следующее:

Потери могут определяться на коллекторе только через значение последовательности в заголовки.
Если с netflow_timeout ==1 потерь нет, то уменьшился объем отправляемых данных. 
За 1 секунду сессий меняется меньше, чем за 10.
Поэтому коллектор не справляется.
Пусть все пакеты от СКАТ дошли до коллектора, который может переварить только, например, 10 Мб.
В результате приемный буфер сокета заполнится, и пакеты на входе будут просто отбрасываться.

Внимание: в случае установки параметра в данное значение проверьте отсутствие ошибок в алерт логе в час пик.

Предлагаем альтернативно проверить: netflow_timeout поставить в 10 и скорость передачи netflow_rate_limit=10

Как сделать выгрузку по времени в формате пригодном для загрузки в Excel

Самый простой вариант нужные данные по ширине колонок выкусить, т.е. так

nfdump -R /usr/local/nfsen/profiles-data/live/petrosviaz/2015/07/20 -s dpipr/bytes -n 50 |grep "(" |awk -v FIELDWIDTHS='40 40 28 16' -v OFS=';' '{print $2,$4 }'|tr -d '[:blank:]'

результат загружается в Excel

аналогично для автономных систем

nfdump -R /usr/local/nfsen/profiles-data/live/petrosviaz_as/2015/07/20 -s asn/bytes -n 50 |grep "(" |awk -v FIELDWIDTHS='38 65 28 16' -v OFS=';' '{print $2,$4 }'|tr -d '[:blank:]'

ТОП 50 протоколов:

nfdump -R /usr/local/nfsen/profiles-data/live/protocols/2015/07/20 -s dpipr/bytes -n 50 |grep "(" |awk -v FIELDWIDTHS='40 40 28 16' -v OFS=';' '{print $2,$4 }'|tr -d '[:blank:]' > top_proto.csv

ТОП 50 автономных систем:

nfdump -R /usr/local/nfsen/profiles-data/live/directions/2015/07/20 -s asn/bytes -n 50 |grep "(" |awk -v FIELDWIDTHS='38 65 28 16' -v OFS=';' '{print $2,$4 }'|tr -d '[:blank:]' > top_asn.csv

Внимание:
При использовании опции суммирования для получения ТОП результатов:
-s dpipr/bytes
Формат -o не работает:
-o fmt:«%ts %td %pr %sap → %dap %flg %tos %pkt %byt %fl»