Я должен для обработки сетевого трафика, полученного с tcpdump
. Чтение трафика не трудно, но что становится немного хитрым, определяет, где существуют "скачки" в трафике. Я главным образом обеспокоен TCP пакеты SYN и что я хочу сделать, дни находки, где существует внезапное повышение трафика для данного целевого порта. Существует довольно мало данных для обработки (примерно один год).
Что я попробовал, до сих пор должен использовать экспоненциальное скользящее среднее, это было достаточно хорошо, чтобы позволить мне вывести некоторые интересные меры, но сравнение, что я видел с внешними источниками данных, кажется, немного слишком агрессивно в отмечающих вещах как аварийные.
Я рассмотрел использование комбинации экспоненциального скользящего среднего плюс исторические данные (возможно с 7 дней, в прошлом думая, что должен быть еженедельный цикл к тому, что я вижу), поскольку некоторым газетам, которые я прочитал, кажется, удалось смоделировать использование ресурсов тот путь с хорошим успехом.
Так, делает любой знает о хорошем методе или где-нибудь пойти и читать на этом виде вещи.
Скользящее среднее значение я использовал взгляды примерно как:
avg = avg+0.96*(new-avg)
С avg
будучи EMA и new
будучи новой мерой. Я экспериментировал с тем, какие пороги использовать, но нашел, что комбинация "должна быть данным фактором выше, чем среднее число до взвешивания нового значения" и "должно быть по крайней мере 3 выше" для предоставления наименее плохого результата.
Это широко изучено в литературе по обнаружению вторжений. Это основополагающая статья по данной проблеме, в которой, помимо прочего, показано, как анализировать данные tcpdump для получения соответствующих идей.
Это документ: http://www.usenix.org/publications/library/proceedings/sec98/full_papers/full_papers/lee/lee_html/lee.html здесь используется индукция правила RIPPER система, я думаю, вы могли бы заменить эту старую на что-то более новое, например http://www.newty.de/pnc2/ или http://www.data-miner.com/rik .html
Я бы применил к данным два фильтра нижних частот: один с большой постоянной времени T1, а другой - с короткой постоянной времени T2. Затем вы бы посмотрели на разницу величин на выходе этих двух фильтров, и когда она превысит определенный порог, K, это будет всплеск. Самая сложная часть - настроить T1, T2 и K, чтобы вы не получали слишком много ложных срабатываний и не пропускали небольшие всплески.
Ниже приводится однополюсный БИХ-фильтр нижних частот:
new = k * old + (1 - k) * new
Значение k определяет постоянную времени и обычно близко к 1,0 (но <1,0, конечно).
Я предлагаю вам применять два таких фильтра параллельно с разными постоянными времени, например начните с, скажем, k = 0,9 для одного (короткая постоянная времени) и k = 0,99 для другого (длительная постоянная времени), а затем посмотрите на разницу величин в их выходных сигналах. Разница в величинах будет небольшую большую часть времени, но станет большой, когда будет всплеск.