0 / 0 / 0
Регистрация: 08.01.2009
Сообщений: 4

PF_RING

08.01.2009, 22:22. Показов 7677. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
Кто нибудь использует PF_RING?

Хотелось бы обсудить пару проблем с этим модулем.
0
0 / 0 / 0
Регистрация: 17.01.2009
Сообщений: 3
17.01.2009, 14:55
Я активно пользую.
Что конкретно интерисует?
0
0 / 0 / 0
Регистрация: 08.01.2009
Сообщений: 4
17.01.2009, 15:28  [ТС]
Модуль работает хорошо, но при попытки удалить модуль из системы:
rmmod ring
кернел выводит кучу ошибок с памятью и умирает.

Система: Intel Xeon quad core.
Кернел скомпилирован для плаформы: Newer Xeon / Core Duo, 2.6.28


Сейчас я поставил более старый кернел, Generic x86, 2.6.24.7
И более мене работает стабильно, хотя пару раз вылетал с похожими ошибками с памятью.

PF_RING используеться черзе libpcap-pfring, со сниффером gulp.

С чем-то подобным не сталкивался?
0
0 / 0 / 0
Регистрация: 17.01.2009
Сообщений: 3
20.01.2009, 22:13
Данна проблема не встречалась мне на ядрах до 2.6.27
В более новых ядрах немного поправили структуры для работы с сетью, и теперь модуль нормально грузиться выгружаеться, но если начать ловлю пакетов, то минут через 5-7 система виснет намертво. Поэтому я вернулся на ядро серии 2.6.х. Там проблем нету.
Да и починить времени пока нет.
Кстати проверял на HP-360 с 2 Ксеонами по 4 ядра.
ИМХО: сыроват он пока для ядер >=2.6.27
0
 Аватар для Mikro_Alex
0 / 0 / 0
Регистрация: 17.11.2008
Сообщений: 33
05.03.2009, 12:20
Где можно скачать документацию по PF_RING или сам архив с ним?
0
0 / 0 / 0
Регистрация: 17.01.2009
Сообщений: 3
05.03.2009, 21:32
Скачать архив не получится, он доступен только через svn, тпм же и дока, хотя она у них сильно запаздывает.

Вот ссылка:
http://www.ntop.org/PF_RING.html
0
 Аватар для Mikro_Alex
0 / 0 / 0
Регистрация: 17.11.2008
Сообщений: 33
06.03.2009, 10:36
Угу, пасип видела ту статейку , если кого еще заинтересует нашла несколько документаций про такие методы :
http://bjou.homeunix.net/blog/... ian-sarge/
http://www.redsecure.ru/blog/t... w-analysis ( кстати на русском )

ну если кому поможет ))))
0
0 / 0 / 0
Регистрация: 13.09.2011
Сообщений: 15
13.09.2011, 21:26
Доброе время суток. Хотел поинтересоваться, есть ли какая-либо взаимосвязь PF_RING c патчами к ядру Linux типа real time? (напр. проект RT Linux). Как написано в User guide, с 4ой версии изменения ядра не требуются. (Кстати, какого характера они были раньше? Не RT?). Но мой научный руководитель сказал, что для перехвата трафика с помощью PF_RING, мне потребуется RTLinux, и пока я не понимаю, зачем.
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
14.09.2011, 09:50
Патчить ядро не требуется, т.к. начиная с 4й версии PF_RING собирается как модуль. При желании можете покопаться в svn.
Прямой связи между PF_RING и rt имхо нет, но появляется удобная возможность разнести ядро и юзерленд по cpu ну и заодно поднять приоритет снифера над другими процессами.
1
0 / 0 / 0
Регистрация: 13.09.2011
Сообщений: 15
18.09.2011, 00:49
Спасибо!
У меня, как человека, впервые вникающего в эту тему есть ещё непонятные моменты..
Например, какими программами можно задать определенную нагрузку сети, чтобы потом определять эффективность сниффера отношением перехваченного трафика к этому заданному значению?
libpcap и PF_RING могут быть поставлены в произвольном порядке? От чего может зависеть эффективность перехвата на PF_RING + libpcap? Как можно было бы достичь максимальной эффективности?
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
18.09.2011, 09:11
Если у вас сетевая карта для которой в PF_RING умеет DNA, то в комплекте с PF_RING есть утилита pfsend, иначе посмотрите на ядерный pktgen
Нет. Сначала PF_RING, затем libpcap. Подробности есть в документации PF_RING
Очень много факторов... Прежде всего железо. C хорошей картой, умеющей фильтровать трафик (например i82599) можно переварить 10Gib/s Карта попроще с DNA драйвером. Обычный драйвер, но вся логика фильтрации вынесена в ядро (PF_RING plugins). Опять же все есть в документации.
1
0 / 0 / 0
Регистрация: 13.09.2011
Сообщений: 15
20.09.2011, 22:17
Мне удалось скомпилировать PF_RING по инструкции http://zhou-xingbo.iteye.com/blog/1002960, 12 и 13 пункт я пропустил. Но при попытке сделать make pf-aware драйвера (у меня tg3 от broadcom) получаю ошибку:

dcom/tg3/tg3-3.99k$ make
sh makeflags.sh /lib/modules/2.6.38-11-generic/build > tg3_flags.h
make -C /lib/modules/2.6.38-11-generic/build SUBDIRS=/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.38-11-generic'
CC [M] /home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.o
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c: In function ‘__tg3_set_rx_mode’:
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9088:16: error: ‘struct net_device’ has no member named ‘mc_count’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9100:27: error: ‘struct net_device’ has no member named ‘mc_list’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9100:55: error: ‘struct net_device’ has no member named ‘mc_count’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9101:28: error: dereferencing pointer to incomplete type
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9103:26: error: dereferencing pointer to incomplete type
make[2]: *** [/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.o] Ошибка 1
make[1]: *** [_module_/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.38-11-generic'
make: *** [default] Ошибка 2

С версией 3.102 так же. Каковы могут быть причина и решение?

Ещё вопрос. В инструкции, как обсуждалось выше, сказано, что не нужно перепатчивать ядро, а если перепатчить уже пропатченное ядро, то.. в общем, нехорошо будет. А вот если я буду ставить RTLinux, какие процедуры нужно выполнить перед установкой, чтобы установка прошла гладко? Может, есть мануал какой-нибудь по этой теме?

И последнее.. Какими программами я могу задать на сеть заданную нагрузку, чтобы, зная заранее количество трафика, узнать, какая часть его будет перехвачена?
Ядро- 2.6.38-11-generic. (Ubuntu 11.04)
Заранее благодарен.
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
21.09.2011, 12:42
Цитата Сообщение от Fellander Посмотреть сообщение
С версией 3.102 так же. Каковы могут быть причина и решение?
Если правильно помню, mc_list в старых ядрах было списком MAC адресов девайса для мультикаста, сейчас оно вынесено в отдельную структуру struct netdev_hw_addr_list и есть стандартные макросы для работы с этой структурой.
Решениея:
плакать в рассылку ntop
патчить драйвер своими силами
купить карточку от intel

Про генерацию трафика я вам уже вроде отвечал...
Если не годиться, то разверните подробнее тип требуемого трафика.

Добавлено через 2 часа 15 минут
В обед запинал драйвер под сборку на свежих ядрах.
Но такой карты у меня нет и соответственно работает или нет сказать не могу(
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff -ur tg3-3.99k.orig/tg3.c tg3-3.99k/tg3.c
--- tg3-3.99k.orig/tg3.c    2011-09-21 10:23:23.000000000 +0400
+++ tg3-3.99k/tg3.c 2011-09-21 13:32:27.456047850 +0400
@@ -9085,22 +9085,19 @@
    } else if (dev->flags & IFF_ALLMULTI) {
        /* Accept all multicast. */
        tg3_set_multi (tp, 1);
-   } else if (dev->mc_count < 1) {
+   } else if (netdev_mc_empty(dev)) {
        /* Reject all multicast. */
        tg3_set_multi (tp, 0);
    } else {
        /* Accept one or more multicast(s). */
-       struct dev_mc_list *mclist;
-       unsigned int i;
+       struct netdev_hw_addr *ha;
        u32 mc_filter[4] = { 0, };
        u32 regidx;
        u32 bit;
        u32 crc;
 
-       for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
-            i++, mclist = mclist->next) {
-
-           crc = calc_crc (mclist->dmi_addr, ETH_ALEN);
+       netdev_for_each_mc_addr(ha, dev) {
+           crc = calc_crc (ha->addr, ETH_ALEN);
            bit = ~crc & 0x7f;
            regidx = (bit & 0x60) >> 5;
            bit &= 0x1f;
1
0 / 0 / 0
Регистрация: 13.09.2011
Сообщений: 15
21.09.2011, 22:43
Длинный лог ошибок, начало которого вот dcom/tg3/tg3-3.99k$ make
sh makeflags.sh /lib/modules/2.6.38-11-generic/build > tg3_flags.h
make -C /lib/modules/2.6.38-11-generic/build SUBDIRS=/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.38-11-generic'
CC [M] /home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.o
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c: In function ‘__tg3_set_rx_mode’:
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9088:9: error: expected expression before ‘}’ token
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9088:23: error: ‘struct net_device’ has no member named ‘mc_count’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9089:9: error: expected expression before ‘}’ token
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9094:17: error: expected expression before ‘struct’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9095:17: error: expected expression before ‘unsigned’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9096:17: error: expected expression before ‘struct’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9097:17: warning: ISO C90 forbids mixed declarations and code
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9102:17: error: expected expression before ‘for’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9100:21: warning: unused variable ‘crc’
/home/eborzov/Загрузки/PF_RING-5.0.0/drivers/PF_RING_aware/broadcom/tg3/tg3-3.99k/tg3.c:9099:21: warning: unused variable ‘bit’

И на 9106 строке (26 у вас) не понял, чем уравновешивается открытая тут вами одиночная скобка.

Cпасибо за помощь, в любом случае завтра куплю карточку Intel, заодно ради DNA.
Не сразу понял в прошлый раз, что pktgen относится к вопросу о генерации трафика, извиняюсь. Огромное спасибо.
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
21.09.2011, 22:52
Цитата Сообщение от Fellander Посмотреть сообщение
И на 9106 строке (26 у вас) не понял, чем уравновешивается открытая тут вами одиночная скобка.
Эмм... man patch?
Это был diff -ur old new
Соответственно закрывающая скобочка остается от цикла for () {
К сожалению, я не нашел как на форуме прикрепить файл/тега diff и возможно форум что-то побил. Если хотитет - довайте e-mail, скину патч туда. Работает или нет я хз, но собирается 100%.
Цитата Сообщение от Fellander Посмотреть сообщение
Cпасибо за помощь, в любом случае завтра куплю карточку Intel, заодно ради DNA.
Правильное решение, наверное это самый дешевый способ обрабатывать >= гигабита.

Up: про патч, давайте не "если хотите", а все-таки попробуем запинать это дело? Если выгорит - отправим в ntop, доброе дело сделаем...
2
0 / 0 / 0
Регистрация: 13.09.2011
Сообщений: 15
22.09.2011, 21:27
Система полностью собралась благодаря присланному вами патчу! Драйвер собрался и работает. Во всяком случае, страницу веб-интерфейса с локального адреса загрузил.
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
23.09.2011, 08:27
Цитата Сообщение от Fellander Посмотреть сообщение
Драйвер собрался и работает. Во всяком случае, страницу веб-интерфейса с локального адреса загрузил.
Если возможно, проверьте снифинг мультикаст трафика. По идее это единственное, что могло поломаться...
0
0 / 0 / 0
Регистрация: 08.07.2009
Сообщений: 10
28.12.2011, 19:47
Всем привет

Такой вопрос : Имеет ли DNA поддержку очередей ( типа TNAPI с ixgbe драйвером).
0
svetocopy
17.01.2013, 11:24
Цитата Сообщение от rulik00 Посмотреть сообщение
Я активно пользую.
Что конкретно интерисует?
помогите пожалуйста установить pf_ring на ubuntu.
я скачал deb пакет и установил через ubuntu software center, что дальше?
0 / 0 / 0
Регистрация: 13.09.2011
Сообщений: 15
17.01.2013, 13:52
Я устанавливал стандартным способом. Первоисточник: http://www.ntop.org/pf_ring/in... r-pf_ring/
В вольном изложении:
1. Скачивал PF_Ring через SVN или просто копировал папку отсюда: http://sourceforge.net/project... s/PF_RING/
Будем считать, что скопировали её в домашнюю директорию.
2. Командой ethtool -i eth0 (вместо 0 может быть другой номер) узнать версию драйвера сетевой карты.
Для работы с модулем необходим модифицированный драйвер. Такие драйверы находятся в папке с PF_RING в drivers/PF_Ring aware (или DNA, если вы именно её хотите использовать). Посмотрите, чтобы там был тот драйвер, который вам выдает ethtool. Как видно из диалога выше, лично у меня возникали проблемы с broadcomовскими драйверами, но использование интеловских прошло на ура. (в частности, e1000e, e1000). Если не нашли тут свой драйвер- упс.
3. Отключаете текущий драйвер. Предположим, он называется e1000e. Можете перед отключением посмотреть точное его название, версию итд в ethtools, чтобы (мало ли каким образом) не перепутать с модифицированным в дальнейшем.
sudo rmmod e1000e
4. Переходите в директорию PF_Ring, которую скачали:
cd PF_RING/kernel (или, понятно, может быть в вашем случае что-то вроде cd PF_RING-5.5.2/kernel)
5. Выполнить команду make. Производитель отмечает, что именно make, а не sudo make, т.к. иначе возможны ошибки. У меня чаще всего получалось так, но были случаи, когда как раз make не работал, делал таки sudo make.
6. sudo make install
7. cd ../userland/lib Переходим в директорию с библиотеками. По инструкции дальше сразу make, но у меня понадобилось сначала:
8. ./configure
9. make
10. sudo make install
11. cd ../libpcap-1.1.1-ring/ переходим в директорию с модифицированной libpcap. (В инструкции cd ../libpcap-1.0.0-ring/ - название директории сменилось)
12. ./drivers/PF_RING_aware/intel/e1000e-2.0.0.1/src
16. make
17. sudo make install
Далее нужно активировать PF_Ring. Дальнейшие действия нужно выполнять после перезагрузки каждый раз, если вы не автоматизируете процесс. (вообще говоря, модуль PF_Ring у меня стартовал сам при запуске модифицированного tcpdump, но так вы и режим не выбираете, а модифицированный драйвер нужно следить чтобы был загружен каждый раз при работе с PF_Ring).
cd /lib/modules/2.6.31-14-generic/kernel/net/pf_ring
Здесь в директории modules нужно выбрать ту версию ядра, которая используется у вас. Там может быть несколько папок, выберите ту, которая соответствует используемой в данной момент версии. Версию ядра можно посмотреть командой uname -r
18. Если по какой-то причине уже был загружен модуль, а вам нужно, к примеру, поменять режим, нужно модуль сначала выгрузить командой sudo rmmod pf_ring (предварительно убив использующие его процессы)
19. sudo insmod pf_ring.ko transparent_mode=1 Возможно три значения transparent_mode. о них тут: http://www.ntop.org/pf_ring/pf... rent-mode/
20. cd /lib/modules/2.6.31-14-generic/kernel/drivers/net/e1000e Аналогично, тут в modules нужно выбрать вашу директорию. И путь к моулю драйвера может отличаться. В моём случае это могли быть такие варианты:
cd /lib/modules/2.6.31-14-generic/kernel/drivers/net/ethernet/intel/e1000e
cd /lib/modules/2.6.31-14-generic/kernel/drivers/net/intel/e1000
Поищите, и найдете.
21. Активируйте модифицированный драйвер.
sudo insmod e1000e.ko

Это все. Конечно, вам нужен модифицированный софт и работа с версией libpcap именно от разработчиков PF_Ring. Перед установкой рекомендуют удалить текущий libpcap и программы (типа tcpdump), его использующие. Видимо, чтобы не перепутать. Но на самом деле два libpcap могут существовать вместе. Кстати при удалении стандартного libpcap он может потянуть за собой демон pppd, и отвалится интернет.
Для работы, например, модифицированного tcpdump, который можно найти в директории userland в папке PF_Ring, нужно, понятно, выполнить стандартные make, sudo make install и запускать tcpdump из этой директории ./tcpdump, если стоит ещё и другой, но другой стоит удалить. Проверить, какими библиотеками пользуется та или иная программа можно так:
which <название программы>
выведется путь, далее
ldd <путь к программе из прошлого пункта>
Выведется список библиотек, если там фигурирует libpcap 0.8, например, то вы сидите на стандартном libpcap.
В случае применения ldd на модифицированный tcpdump строчки libpcap не увидите вовсе- использование модифицированного libpcap там прописано статически.
Ну и чтобы оценить эффективность PF_Ring, рекомендуется использовать tcpdump -n -i eth1 -w /dev/null
http://www.y-d-art.ru/articles... fring.html
Вывод на /dev/null покажет вам работу именно сетевой подсистемы. (Если отправите некое количество пакетов и посчитаете количество перехваченных). В моем случае на небольшой скорости потери пакетов остались практически такими же, т.к., кажется, они уже происходили на уровне файловой системы, а на чистом linux tcpdump -n -i eth1 -w /dev/null также показывало 100%, и в этом случае, мое предположение, PF_Ring ни к чему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Опции темы

Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru