Привет!
Может быть кто-нибудь подскажет алгоритм (subj)?
Есть файл с подсетями вида
a.b.c.d/30
e.f.g.h/29
...
необходимо перловым скриптом построчно обрабатывать файл вида
src IPaddr dst IPaddr flows octets packets
(flow-tools, flow-stat -f10)
и выяснять, на имя какой подсетки записывать in или out (octets)
т.е. на входе имеем список подсетей и ip, на выходе - какой подсети из списка принадлежит этот ip.
при этом накладываются ограничения на время и ресурсы (т.к. и вывод
flow-stat и файл с подсетями могут быть достаточно ёмкими)
На первый мой взляд, можно было бы сравнивать ip с адресом сети (без /xx), и при несовпадении со всеми адресами подсеток (а их напомню - может быть очень много) вычитать из последнего слова (aaa.bbb.ccc.[ddd]) единицу. Сетки можно рассматривать не ширее класса С. Но даже при этом - любая тачка уйдёт курить надолго... :((
На второй взгляд, можно было бы смотреть в какой диапазон (net_min - net_max) попадает ip - и это вроде бы шаг в сторону успеха.
Т.е. каким-то образом 1 раз обработать файл с подсетями и получить хэш с элементами вида "net_min" => "net_max". Потом брать по одной строчке из вывода flow-stat и отмечать попадание в один из диапазонов.
И тут приходит мысль номер 3 - может быть я зря прыгаю на этих граблях, может кто-то уже давно решил задачку?
Буду очень признателен, если кто-то снимет меня с грабель или покажет путь. :)))
Заранее спасибо!