Login Form  

   

В этой статье будут рассмотрены базовые понятия и предприняты первые шаги к созданию полноценного коллектора.

Выбор языка программирования

В качестве языка программирования выберем Perl. Выбор этого языка обусловлен несколькими аспектами:

  • Работает на большинстве ОС
  • Высокая производительность
  • Гибкость
  • Возможность создавать Веб-приложения
  • Надежность
  • Бесплатность

Конечно у языка также имеется ряд недостатков, но они вовсе не мешают в рамках наших разработок

Выбор способа хранения информации

Наш выбор - реляционные базы данных. Конкретно MySQL. В дальнейшем добавим поддержку на других базах. В общем ключевое слово будет - SQL

На самом деле этот выбор вряд ли кого-то удивит. Т.к. это цивилизованный способ хранения данных. Высокая производительность, гибкий язык запросов - все говорит о том, что это то наш выбор.

Кроме того MySQL также поддерживается многими ОС, поэтому использование Perl и MySQL даст нам широкое применение.

Выбор сенсора

В качестве сенсора выберем маршрутизатор Cisco. Мы должны ориентироваться именно на этот брэнд, т.к. именно эта компания разработала NetFlow. Минимальную настройку маршрутизатора вы можете произвести с помощью предыдущей статьи "Сенсоры"

Разработку начнем с пятой версии протокола NetFlow. Он довольно простой и вполне пока востребованный. NetFlow v5 рассчитан на сбор статистики по IPv4.

Приступаем к работе

Возьмем классический пример и считаем первые данные.

#!/usr/bin/perl
use IO::Socket::INET;
$| = 1;
my ($socket,$received_data);
my ($peeraddress,$peerport);
$socket = new IO::Socket::INET (
LocalPort => '9997',
Proto => 'udp',
) or die "ERROR in Socket Creation : $!\n";
while(!$recieved_data)
{
$socket->recv($recieved_data,4096);
$peer_address = $socket->peerhost();
$peer_port = $socket->peerport();
}
open (MYFILE, '>data.txt');
print MYFILE $recieved_data;
close (MYFILE);
$socket->close();

После выполнения этого скрипта мы получим один пакет данных, выгруженный в файл data.txt. Рассмотрим его содержимое.

Анализатор отправляет данные в бинарном виде. Первые два октета - версия протокола NetFlow. Будем обрабатывать данные в зависимости от версии. Для разработок воспользуемся спецификации протоколов 1, 5, 7, 8 и 9 версий.

Обработку данных для каждой версии мы рассмотрим в следующих статьях.

   
© it-answer.ru