- Описание:
Проект разрабатывается в рамках дисциплины "Групповой проект по ТППО".
Предметной областью данного проекта является обработка данных о сетевых
потоках, аккумулируемых в формате Cisco NetFlow. Основная задача проекта
- достичь скоростей обработки и выборки данных из базы потоков больших,
чем у существующих средств, за счёт использования метода индексации данных.
Классическая схема обработки базы потоков.
Записи о потоках хранятся в виде файлов, каждый из которых соответствует
определённому периоду. В этих файлах записи хранятся в порядке их получения.
Обычно при выборке эти файлы обрабатываются фильтром последовательно, что
неэффективно с точки зрения скорости, так как для получения результатов
необходима полная проверка каждой записи.
Figure:
Классическая схема обработки базы потоков.
|
Предлагаемая схема работы.
С целью ускорения процесса выборки необходимо организовать индексный файл,
поиск по которому будет занимать меньше времени. Таким образом процесс будет
разбит на два этапа: построение индексного файла, осуществление выборки по
условиям на основании индексного файла и извлечение необходимых записей из
базы потоков. Эффективность поиска основана на организации индексного файла
как структуры, представляющей из себя многомерное дерево сортировки, обход
которого позволит исключить часть записей из обработки.
Figure:
Предлагаемая схема работы.
|
- Основные требования к проекту:
- Скорость обработки запросов выше чем у аналогов.
- Поддержка формата хранения записей о потоках NetFlow v5.
- Гибкость, предполагающая будущее расширение программной системы для
поддержки формата NetFlow v9.
- Функции системы:
- Построение индексного файла.
- Фильтрация данных с использованием индексного файла.
- Ограничения проекта:
- Время отведённое на разработку составляет 15 недель.
- Количество человек в команде разработчиков - 7 человек.
- Разрабатываемая программная система должна работать на
POSIX-совместимой операционной системе (*BSD, Solaris, GNU/Linux, etc).
- Следование стилю кодирования GNU (GNU Coding Standards).
- Использование внутреннего устройства формата NetFlow и алгоритмов индексации.
- Заказчик проекта:
Богоявленский Юрий Анатольевич, заведующий кафедрой, доцент, к.т.н, кафедра
Информатики и математического обеспечения.
Корзун Дмитрий Жоржевич, доцент, к.ф. м.н., кафедра Информатики и
математического обеспечения.
- Инструктор команды:
Крышень Михаил Александрович
- Состав команды разработчиков:
Зиновик Игорь Анатольевич разработчик
Кириков Павел Владимирович разработчик
Митрукова Елена Сергеевна разработчик, секретарь
Спащенко Дмитрий Викторович разработчик
Тидор Антон Станиславович разработчик
Чистяков Дмитрий Борисович разработчик
Шериков Александр Владимирович разработчик, руководитель проекта
Все разработчики имеют базовые знания о языке C и его применении при
написании программ под операционные системы в стиле UNIX, а также опыт
групповой работы над программными проектами в рамках курса
"Технология производства программного обеспечения", однако никто не имеет
опыта участия в разработке каких-либо законченных и применяемых на практике
программных средств.
- Отчётность:
- Каждую неделю в 13:30 в 138 аудитории проводится собрание с заказчиком.
- Каждую неделю менеджер готовит документ о текущем состоянии проекта и
отсылает его инструктору.
- Формы взаимодействия внутри группы и организация работы:
- Основными формами взаимодействия между участниками являются рабочие
собрания, электронная почта и телефон. Также могут быть использованы
клиенты передачи мгновенных сообщений (ICQ, IRC, SILC).
- Собрания проводятся каждую пятницу в 15:00, в 217 аудитории. На
собраниях обсуждается текущее состояние проекта и результаты
проделанной работы, распределяются задачи, определяются коррективы,
которые необходимо внести в готовые документы. Секретарь ведёт
протокол собрания.
- Участники должны предоставлять последние версии своих индивидуальных
отчётов к 21:00 вечера каждой субботы, т.к. на их основе менеджер
будет формировать отчёт о текущем состоянии проекта.
- Отчёт о ходе выполнения работ предоставляется инструктору и содержит
информацию о часах, затраченных на разработку, ссылки на
подготовленные документы и замечания менеджера.
- Всю документацию, исходные тексты программ разработчики хранят в CVS
репозитории.
- По понедельникам в 13:30 в 138 аудитории происходит встреча с
инструктором и, при необходимости с заказчиком.
- Для отчётности перед заказчиком часть документации выкладывается на
web-сайт.
- Каждый разработчик несет ответственность перед менеджером и коллективом
разработчиков за выполнение порученных работ и взятых на себя
обязательств. Менеджер отвечает за работу всей команды перед
инструктором и за результат этой работы перед заказчиком.
- Программные средства, выполняющие аналогичные или смежные задачи:
- Flowc - система сбора NetFlow v5 статистики с Cisco маршрутизаторов.
Flowc - программный комплекс предназначенный для сбора, хранения и
анализа информации о сетевом трафике снимаемым с маршрутизаторов Cisco
по протоколу NetFlow (версия 5).
Пакет может быть использован в качестве ISP биллинга для анализа и
учета трафика пользователей. В качестве хранилища используется MySQL
или PostgreSQL, web-интерфейс построен на базе PHP4.
http://netacad.kiev.ua/flowc/index_ru.php
- NeTAMS - программа для контроля и учета сетевого трафика.
Данные о проходящем трафике собираются через ipfw divert/netfilter
или NetFlow v5.
Информация хранится на SQL сервере, доступны отчёты через
web-интерфейс. Поддерживается контроль доступа и прав пользования.
http://www.inorg.chem.msu.ru/anton/netams/
- Flow-tools - collecting and processing NetFlow data.
Набор утилит для сбора и обработки (генерации отчётов) NetFlow
v1, 5, 6, 8 потоков с маршрутизаторов Cisco и Juniper. Присутствует
интерфейс для разработки дополнений на языках Perl и Python.
http://www.splintered.net/sw/flow-tools/
- ng_netflow - netgraph kernel module, which implements Ciscos
netflow protocol on PC running FreeBSD (Версия: 0.2.1 от 2004-02-19).
Модуль ng_netflow (netgraph эмулятор netflow), обеспечивает генерацию
Cisco NetFlow потока исходящего от FreeBSD маршрутизатора.
http://sourceforge.net/projects/ng-netflow/
- softflowd (автор Damien Miller)
Реализует Netflow v1, v5. userland демон слушающий интерфейс с помощью
pcap. Также может читать дампы сгенерированные с помощью tcpdump.
Работает под Linux и OpenBSD. Скорее всего будет работать и под FreeBSD.
http://mindrot.org/softflowd.html