Руководство пользователя
PF_RING
Высокоскоростной захват пакетов в Linux
Версия 5.5.3
Май 2013
© 2004-13 ntop.org
PF_RING User’s Guide v.5.5.3
1.Содержание
2. Введение. ................................................................................................................................................. 4
2.1. Что нового в руководстве пользователя PF_RING?....................................................................... 4
3. Добро пожаловать в PF_RING. ................................................................................................................ 6
3.1. Фильтрация пакетов. ........................................................................................................................ 7
3.2. Путешествие пакета. ......................................................................................................................... 7
3.3. Пакетная Кластеризация (Группирование). ................................................................................... 8
4. Семейство драйверов PF_Ring ........................................................................................................... 9
4.1. PF_RING-ориентированные драйвера. ........................................................................................... 9
4.2. TNAPI .................................................................................................................................................. 9
4.3. DNA .................................................................................................................................................. 10
5. Библиотека Libzero для DNA. ............................................................................................................ 11
5.1. DNA кластер .................................................................................................................................... 11
5.2. DNA проталкиватель ...................................................................................................................... 11
6. Установка PF_RING ................................................................................................................................. 12
6.1. Установка модуля ядра Linux......................................................................................................... 12
7. Запуск PF_RING....................................................................................................................................... 13
7.1. Проверка конфигурации элемента PF_RING. ............................................................................... 14
7.2. Установка Libpfring и Libpcap ......................................................................................................... 14
7.3. Примеры приложений ................................................................................................................... 15
7.4. Дополнительные модули PF_RING ............................................................................................... 16
8. PF_RING для разработчиков приложений ........................................................................................... 17
8.1. API PF_RING ..................................................................................................................................... 18
8.2. Возвращаемые коды ...................................................................................................................... 18
8.3. Согласование имен устройств PF_RING ........................................................................................ 18
8.4. PF_RING: инициализация сокета ................................................................................................... 18
8.5. PF_RING: Отключение устройства ................................................................................................. 20
8.6. PF_RING: Чтение входящих пакетов .............................................................................................. 21
8.7. PF_RING: Кластерное кольцо ......................................................................................................... 23
8.8. PF_RING: Зеркалирование пакетов ............................................................................................... 24
8.9. PF_RING: Выборка пакетов ............................................................................................................ 24
8.10. PF_RING: Фильтрация пакетов ..................................................................................................... 24
8.10.1. PF_RING: Неполная фильтрация ............................................................................................... 25
8.10.2. PF_RING: Конкретная фильтрация ............................................................................................ 26
PF_RING User’s Guide v.5.5.3
8.10.3. PF_RING: BPF фильтрация ......................................................................................................... 27
8.11. PF_RING: Фильтрация пакетов в NIC ........................................................................................... 28
8.12. PF_RING: Политика фильтрации .................................................................................................. 29
8.13. PF_RING: Передача пакетов ......................................................................................................... 30
8.14. PF_RING: Прочие функции ........................................................................................................... 31
8.15. Интерфейс PF_RING в C++ ............................................................................................................ 39
9. Библиотека libzero для DNA .................................................................................................................. 39
9.1. Кластер DNA .................................................................................................................................... 39
9.1.1. Основные API (The Master API) ................................................................................................... 39
9.1.2. Подчинённые API ......................................................................................................................... 43
9.2. DNA проталкиватель ...................................................................................................................... 46
9.2.1. API DNA проталкивателя ............................................................................................................. 46
9.3. Фрагменты кода для общих случаев. ........................................................................................... 48
9.3.1. DNA кластер: принять пакет и отложить его в сторону ............................................................ 48
9.3.2. DNA кластер: приём пакета и отправка его через механизм zero-copy ................................. 48
9.3.3. Кластер DNA: Замена стандартной функции распределения на пользовательскую
функцию. ................................................................................................................................................ 49
9.3.4. Кластер DNA: Замена стандартной функции распределения на разветвляющую функцию.
................................................................................................................................................................. 49
9.3.5. Кластер DNA: отправка входящего пакета сразу, без прохождения через подчинённый
процесс или программу. ....................................................................................................................... 50
10. Пишем плагины к PF_RING.................................................................................................................. 50
10.1. Реализация плагина PF_RING ...................................................................................................... 51
10.2. Плагин PF_RING: Дескриптор входящих пакетов ....................................................................... 51
10.3. Плагин PF_RING: Фильтрация входящих пакетов. ..................................................................... 53
10.4. Плагин PF_RING: Чтение статистики пакетов. ............................................................................ 53
10.5. Использование плагина PF_RING ................................................................................................ 54
11. Структуры данных PF_RING................................................................................................................. 55
12. PF_RING DNA на виртуальной машине. ............................................................................................. 56
12.1. Конфигурация BIOS ....................................................................................................................... 56
12.2. Конфигурация VMware ESX .......................................................................................................... 56
12.3. Конфигурация KVM. ...................................................................................................................... 58
PF_RING User’s Guide v.5.5.3
2. Введение.
PF_RING это высокоскоростная библиотека захвата пакетов, которая превращает PC в
эффективное и дешевое сетевое устройство, ориентированное для активного анализа
трафика и его управления. Кроме того, PF_RING открывает абсолютно новые рынки, так
как позволяет создавать эффективные приложения распределения трафика или
фильтрации пакетов несколькими строчками кода.
Это руководство разделено на 2 части:
Установка PF_RING и его конфигурация.
PF_RING SDK.
2.1. Что нового в руководстве пользователя PF_RING?
Версия 5.5.2 (Июнь 2013)
Обновленное руководство в PF_RING версии 5.5.2
Версия 5.4.6 (Авг 2012)
Обновленное руководство в PF_RING версии 5.4.6
Версия 5.4.0 (Май 2012)
Обновленное руководство в PF_RING версии 5.4.0
Новая библиотека libzero с технологией zero-copy для гибкой обработки пакета
напрямую с DNA.
Версия 5.3.1 (Март 2012)
Обновленное руководство в PF_RING версии 5.3.1
Версия 5.2.1 (Январь 2012)
Обновленное руководство в PF_RING версии 5.2.1
Новые функции API для управления аппаратными часами и временными
метками.
Новые обратные вызовы модуля (расширения) ядра.
PF_RING User’s Guide v.5.5.3
Версия 5.1 (Сентябрь 2011)
Обновленное руководство в PF_RING версии 5.1.0
Версия 4.7.1 (Июль 2011)
Обновленное руководство в PF_RING версии 4.7.1
Описаны PF_RING модульная библиотека и некоторые модули (DAG, DNA)
Версия 4.6.1 (Март 2011)
Обновленное руководство в PF_RING версии 4.6.1
Версия 4.6 (Февраль 2011)
Обновленное руководство в PF_RING версии 4.6.0.
Версия 1.1 (Январь 2008)
Описана архитектура PF_RING модулей.
Версия 1.0 (Январь 2008)
Первое руководство пользователя PF_RING.