max1976 Опубликовано 28 сентября, 2016 · Жалоба max1976 Подскажите пожалуйста. В ходе экспериментов на стенде с extFilter выявилась интересная вещь, если недоступен домен из url по протоколу http(но при этом домен ресолвиться, пингуется, трассировка проходит, в браузере не открывается) то url не получает редирект на страницу заглушки(в extFilter.log( режим debug включен) при этом даже нет упоминания об этой записи, как обычно наблюдается когда запись перенаправляется на страницу заглушки). Собственно вопрос, где может быть у меня ошибка ? Всё правильно, это же dpi, а не прокси. Если клиент не может установить связь с сервером, то никакого обмена через http нет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Rick Опубликовано 28 сентября, 2016 · Жалоба max1976 Подскажите пожалуйста. В ходе экспериментов на стенде с extFilter выявилась интересная вещь, если недоступен домен из url по протоколу http(но при этом домен ресолвиться, пингуется, трассировка проходит, в браузере не открывается) то url не получает редирект на страницу заглушки(в extFilter.log( режим debug включен) при этом даже нет упоминания об этой записи, как обычно наблюдается когда запись перенаправляется на страницу заглушки). Собственно вопрос, где может быть у меня ошибка ? Всё правильно, это же dpi, а не прокси. Если клиент не может установить связь с сервером, то никакого обмена через http нет. И как к этому относиться "ревизор" если не видит необходимый тег <title>xxx</title> ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 28 сентября, 2016 · Жалоба И как к этому относиться "ревизор" если не видит необходимый тег <title>xxx</title> ? Так как же как и к скат, carbon reductor и т.д. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arhead Опубликовано 28 сентября, 2016 · Жалоба А на qemu кто нить делал extFilter? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dnvk Опубликовано 29 сентября, 2016 · Жалоба собрал-таки extfilter на slackware 14.2, 64bit без пересборки ядра из коробки не обошлось - нужно было добавить поддержку hugetlbfs. провожу тесты. max1976, спасибо за ещё один инструмент. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arhead Опубликовано 29 сентября, 2016 (изменено) · Жалоба Поднял на qemu с пробросом физического интерфейса на CentOS 7. Работает. Но потом опять пропадает фильтрация. Не могу понять почему падает. Все собирали по инструкции или есть что то еще? Изменено 29 сентября, 2016 пользователем arhead Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 29 сентября, 2016 · Жалоба Поднял на qemu с пробросом физического интерфейса на CentOS 7. Работает. Но потом опять пропадает фильтрация. Не могу понять почему падает. Все собирали по инструкции или есть что то еще? Проблема имеется, но пока не решена. Проявляется если rx_queues > 1. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
inkindly Опубликовано 29 сентября, 2016 (изменено) · Жалоба max1976, большое спасибо за Ваш труд, счастья и здоровья Вам и Вашим близким. Пара вопросов 1. какая версия perl и python требуется для установки и работы extfilter? При сборке extfilter командой make вываливается extfilter-master]# make Making all in src make[1]: Вход в каталог `/usr/src/extfilter-master/src' g++ -std=c++0x -O2 -pthread -Wl,--whole-archive -lrte_pmd_bond -lrte_pmd_vmxnet3_uio -lrte_pmd_virtio -lrte_pmd_enic -lrte_pmd_i40e -lrte_pmd_fm10k -lrte_pmd_ixgbe -lrte_pmd_e1000 -lrte_pmd_ring -lrte_pmd_af_packet -lethdev -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring -lrte_kvargs -lrte_hash -lrte_cmdline -Wl,--no-whole-archive -o extFilter main.o worker.o AhoCorasickPlus.o ahocorasick.o node.o patricia.o patr.o qdpi.o sender.o sendertask.o statistictask.o reloadtask.o -lpcap -L.././PcapPlusPlus/Dist -lPcap++ -lPacket++ -lCommon++ -L /usr/src/dpdk/dpdk-16.07/lib -lrt -lm -ldl ../nDPI/src/lib/.libs/libndpi.a -lPocoNet -lPocoUtil -lPocoFoundation main.o: In function `extFilter::printDPDKPorts(std::string const&, std::string const&)': main.cpp:(.text+0x51d): undefined reference to `pcpp::DpdkDeviceList::initDpdk(unsigned int, unsigned int)' main.cpp:(.text+0x62e): undefined reference to `pcpp::DpdkDeviceList::m_IsDpdkInitialized' main.cpp:(.text+0x782): undefined reference to `pcpp::DpdkDeviceList::m_MBufPoolSizePerDevice' main.cpp:(.text+0x78c): undefined reference to `pcpp::DpdkDeviceList::initDpdkDevices(unsigned int)' main.cpp:(.text+0x848): undefined reference to `pcpp::DpdkDeviceList::DpdkDeviceList()' main.cpp:(.text+0x861): undefined reference to `pcpp::DpdkDeviceList::~DpdkDeviceList()' main.o: In function `extFilter::initialize(Poco::Util::Application&)': main.cpp:(.text+0x1366): undefined reference to `pcpp::DpdkDeviceList::initDpdk(unsigned int, unsigned int)' main.cpp:(.text+0x230f): undefined reference to `pcpp::DpdkDeviceList::m_MBufPoolSizePerDevice' main.cpp:(.text+0x2319): undefined reference to `pcpp::DpdkDeviceList::initDpdkDevices(unsigned int)' main.cpp:(.text+0x2323): undefined reference to `pcpp::DpdkDeviceList::getDpdkMasterCore()' main.cpp:(.text+0x28ea): undefined reference to `pcpp::DpdkDeviceList::m_IsDpdkInitialized' main.cpp:(.text+0x2a28): undefined reference to `pcpp::DpdkDeviceList::DpdkDeviceList()' main.cpp:(.text+0x2a41): undefined reference to `pcpp::DpdkDeviceList::~DpdkDeviceList()' main.o: In function `pcpp::DpdkDeviceList::getInstance()': main.cpp:(.text._ZN4pcpp14DpdkDeviceList11getInstanceEv[_ZN4pcpp14DpdkDeviceList11getInstanceEv]+0x15): undefined reference to `pcpp::DpdkDeviceList::m_IsDpdkInitialized' main.cpp:(.text._ZN4pcpp14DpdkDeviceList11getInstanceEv[_ZN4pcpp14DpdkDeviceList11getInstanceEv]+0x2a): undefined reference to `pcpp::DpdkDeviceList::m_MBufPoolSizePerDevice' main.cpp:(.text._ZN4pcpp14DpdkDeviceList11getInstanceEv[_ZN4pcpp14DpdkDeviceList11getInstanceEv]+0x34): undefined reference to `pcpp::DpdkDeviceList::initDpdkDevices(unsigned int)' main.cpp:(.text._ZN4pcpp14DpdkDeviceList11getInstanceEv[_ZN4pcpp14DpdkDeviceList11getInstanceEv]+0x54): undefined reference to `pcpp::DpdkDeviceList::DpdkDeviceList()' main.cpp:(.text._ZN4pcpp14DpdkDeviceList11getInstanceEv[_ZN4pcpp14DpdkDeviceList11getInstanceEv]+0x6d): undefined reference to `pcpp::DpdkDeviceList::~DpdkDeviceList()' main.o: In function `extFilter::main(std::vector<std::string, std::allocator<std::string> > const&)': main.cpp:(.text.startup+0x2f8): undefined reference to `pcpp::DpdkDeviceList::m_IsDpdkInitialized' main.cpp:(.text.startup+0x301): undefined reference to `pcpp::DpdkDeviceList::m_MBufPoolSizePerDevice' main.cpp:(.text.startup+0x30b): undefined reference to `pcpp::DpdkDeviceList::initDpdkDevices(unsigned int)' main.cpp:(.text.startup+0x318): undefined reference to `pcpp::DpdkDeviceList::getDeviceByPort(int)' main.cpp:(.text.startup+0x3b0): undefined reference to `pcpp::DpdkDeviceList::DpdkDeviceList()' main.cpp:(.text.startup+0x3c9): undefined reference to `pcpp::DpdkDeviceList::~DpdkDeviceList()' main.cpp:(.text.startup+0x451): undefined reference to `pcpp::DpdkDevice::openMultiQueues(unsigned short, unsigned short, pcpp::DpdkDevice::DpdkDeviceConfiguration const&)' main.cpp:(.text.startup+0xd95): undefined reference to `pcpp::DpdkDeviceList::startDpdkWorkerThreads(unsigned int, std::vector<pcpp::DpdkWorkerThread*, std::allocator<pcpp::DpdkWorkerThread*> >&)' main.cpp:(.text.startup+0xe0b): undefined reference to `pcpp::DpdkDeviceList::stopDpdkWorkerThreads()' worker.o: In function `WorkerThread::run(unsigned int)': worker.cpp:(.text+0x45f7): undefined reference to `pcpp::DpdkDevice::receivePackets(pcpp::MBufRawPacket**, int&, unsigned short)' collect2: ошибка: выполнение ld завершилось с кодом возврата 1 make[1]: *** [extFilter] Ошибка 1 make[1]: Выход из каталога `/usr/src/extfilter-master/src' make: *** [all-recursive] Ошибка 1 pdpk Установился нормально (версия 16.07 с официального сайта). команды build/app/testpmd -c7 -n3 --vdev=eth_pcap0,iface=eth0 --vdev=eth_pcap1,iface=eth1 -- -i --nb-cores=2 --nb-ports=2 --total-num-mbufs=2048 testpmd> show port stats all testpmd> start tx_first testpmd> stop проходят нормально Сетевая карта 1000E на чипе intel 82574L 2. требуется ли добавлять в iptables какие-либо специфичные правила для работы extfilter ? Изменено 29 сентября, 2016 пользователем inkindly Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dnvk Опубликовано 30 сентября, 2016 · Жалоба 2. требуется ли добавлять в iptables какие-либо специфичные правила для работы extfilter ? Требуется разрешить исходящий трафик с любых ip-адресов, с основного интерфейса сервера. Для того, чтобы уходили rst-ответы с src-ip клиента и ресурса, к которому клиент обращается. Но об этом extfilter расскажет в логах, если ему такое не удастся. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arhead Опубликовано 30 сентября, 2016 · Жалоба Проблема имеется, но пока не решена. Проявляется если rx_queues > 1. И если больше одного порта. Сейчас выставил rx_queues = 1 и один порт. Работает как часы. Спасибо за Ваш труд. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
inkindly Опубликовано 30 сентября, 2016 · Жалоба если можно, распишите подробно установку extfilter. С nfqfilter проблем не было. Установился сразу. А тут не могу разобраться. Делаю все по инструкции и все-равно собрать не удается. 1. установил dpdk, протестировал сетевушку, сделал ее 2. запустил ./autogen.sh 3. сконфигурировал ./configure , вываливается ошибка с nDPI. Залезаю в каталог nDPI, делаю как в посте #1071, и все проходит нормально Зайдите в каталог nDPI (cd nDPI), добавьте в файл configure.ac после AC_CONFIG_MACRO_DIR([m4]) строку AC_CONFIG_AUX_DIR([.]). Затем запустите ./autogen.sh | make Затем возвращаетесь в каталог с фильтром (cd ..) и запускаете configure с нужными параметрами. 4. делаю make и выскакивает ошибка, описанная выше. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arhead Опубликовано 30 сентября, 2016 (изменено) · Жалоба 3. сконфигурировал ./configure , вываливается ошибка с nDPI. Залезаю в каталог nDPI, делаю как в посте #1071, и все проходит нормально ./configure как делали? ./configure --with-dpdk_target=<target> --with-dpdk_home=<path_to_compiled_dpdk> где path_to_compiled_dpdk - это путь, где находятся исходники. target - подкаталог в path_to_compiled_dpdk где находится собранный dpdk. например ./configure --with-dpdk_target=/usr/src/dpdk-16.07/ --with-dpdk_home=build Изменено 30 сентября, 2016 пользователем arhead Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
inkindly Опубликовано 30 сентября, 2016 (изменено) · Жалоба arhead, спасибо за ответ. Да, делал именно так, исходники у меня в /usr/src/dpdk/dpdk-16.07/ находятся ./configure --with-dpdk_target=/usr/src/dpdk/dpdk-16.07 --with-dpdk_home=build 1 Изменено 30 сентября, 2016 пользователем inkindly Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arhead Опубликовано 30 сентября, 2016 · Жалоба arhead, спасибо за ответ. Да, делал именно так, исходники у меня в /usr/src/dpdk/dpdk-16.07/ находятся ./configure --with-dpdk_target=/usr/src/dpdk/dpdk-16.07 --with-dpdk_home=build ОС и ядро какие? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 30 сентября, 2016 · Жалоба 1. какая версия perl и python требуется для установки и работы extfilter? При сборке extfilter командой make вываливается Судя по всему у вас не собрался PcapPlusPlus, который должен был собраться при запуске configure. Смотрите логи config.log. Для самого extFilter не нужен perl, он нужен только для скрипта подготовки входных файлов для фильтра (смотрите конфигуратор) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dnvk Опубликовано 30 сентября, 2016 · Жалоба rx_queues = 1 Хотелось бы узнать за что этот параметр отвечает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 30 сентября, 2016 · Жалоба Проблема имеется, но пока не решена. Проявляется если rx_queues > 1. Обновил extFilter, теперь работает на всех ядрах, заданных в конфиге, без падений. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 30 сентября, 2016 · Жалоба rx_queues = 1 Хотелось бы узнать за что этот параметр отвечает. Этот параметр отвечает за количество входных очередей, которые будут получать трафик с сетевой. На каждую очередь запускается свой тред. Вот пример. На своем слабом процессоре я получаю максимум ~230 kpps на ядре. Если я хочу обрабатывать больше, то я указываю rx_queues = 2 и получаю ~460 kpps. Если будет больше ядер, то соответственно общая производительность в моем случае = n*230 kpps, где n количество ядер процессора. Хочу отметить, что rx_queues должно быть кратно 2, если значение больше 1. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flow-control Опубликовано 30 сентября, 2016 · Жалоба Уважаемый max1976, подскажите пожалуйста.При запуске выдает ошибку: [root@rknfilter src]# ./extFilter --config-file=/root/filter/etc/extfilter.ini Huge pages aren't set, DPDK cannot be initialized. Please run <PcapPlusPlus_Root>/setup_dpdk.sh Exception: Couldn't initialize DPDK [root@rknfilter PcapPlusPlus]# ./setup-dpdk.sh ******************************* PcapPlusPlus setup DPDK script ******************************* Error: List of NICs to bind was not given [root@rknfilter dpdk]# ./tools/dpdk-devbind.py --status Network devices using DPDK-compatible driver ============================================ <none> Network devices using kernel driver =================================== 0000:01:00.0 '82571EB Gigabit Ethernet Controller' if=enp1s0f0 drv=e1000e unused= 0000:01:00.1 '82571EB Gigabit Ethernet Controller' if=enp1s0f1 drv=e1000e unused= *Active* Other network devices ===================== <none> Менять сетевую карту на ту что идет с igb драйвером? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 30 сентября, 2016 · Жалоба [root@rknfilter dpdk]# ./tools/dpdk-devbind.py --status Network devices using DPDK-compatible driver ============================================ <none> Network devices using kernel driver =================================== 0000:01:00.0 '82571EB Gigabit Ethernet Controller' if=enp1s0f0 drv=e1000e unused= 0000:01:00.1 '82571EB Gigabit Ethernet Controller' if=enp1s0f1 drv=e1000e unused= *Active* Other network devices ===================== <none> Менять сетевую карту на ту что идет с igb драйвером? Загрузите модули ядра: modprobe uio insmod kmod/igb_uio.ko Затем у вас изменится вывод ./tools/dpdk-devbind.py --status И запустите ./tools/dpdk-devbind.py -b igb_uio 0000:01:00.0 для подключения в dpdk первого порта карты. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Rick Опубликовано 30 сентября, 2016 (изменено) · Жалоба [root@rknfilter dpdk]# ./tools/dpdk-devbind.py --status Network devices using DPDK-compatible driver ============================================ <none> Network devices using kernel driver =================================== 0000:01:00.0 '82571EB Gigabit Ethernet Controller' if=enp1s0f0 drv=e1000e unused= 0000:01:00.1 '82571EB Gigabit Ethernet Controller' if=enp1s0f1 drv=e1000e unused= *Active* Other network devices ===================== <none> Не забиндил сетевой интерфейс для dpdk. Должно быть так dpdk-devbind.py --status Network devices using DPDK-compatible driver ============================================ 0000:03:00.0 '82574L Gigabit Network Connection' drv=igb_uio unused= Network devices using kernel driver =================================== 0000:04:00.0 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller' if=enp4s0 drv=r8169 unused=igb_uio *Active* Other network devices ===================== <none> Для того что-бы это сделать необходимо выполнить следующее modprobe uio insmod /usr/src/dpdk-16.07/build/kmod/igb_uio.ko dpdk-devbind.py --bind=igb_uio 0000:0X:00.X где X - необходимый интерфейс. Обязательно что-бы он был unused= в вашем случае 0000:01:00.0 Если не прав max1976 поправит. Пока писал max1976 ответил :) . Изменено 30 сентября, 2016 пользователем Rick Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flow-control Опубликовано 30 сентября, 2016 · Жалоба max1976 Rick Спасибо ! Запустилось Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Rick Опубликовано 30 сентября, 2016 · Жалоба max1976 Спасибо большое за труды. Перекомпилировал новую версию, все замечательно работает, пока только не могу проверить на rx_queues > 1, всего два ядра :) . Возник только один вопрос: не помню как на старой версии, но на новой почему-то после сигнала HUP файл protos не пересчитывается, только если сервис перезапустить, так должно быть ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Rick Опубликовано 30 сентября, 2016 · Жалоба ~ 4 гигабита (~ 160 kpps), проц слабый: Intel® Xeon® CPU E5-2603 @ 1.80GHz, памяти 8 гигов. Вопрос: а как определить что уже не хватает ядра процессора ? У меня сейчас Intel® Pentium® CPU G2010 @ 2.80GHz, памяти 4 гига. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
inkindly Опубликовано 30 сентября, 2016 · Жалоба Решил свою проблему. Оказывается, PcapPlusPlus действительно не собрался из-за изменений имен скриптов в последней версии dpdk и по еще каким-то причинам. Публикую подробные шаги. # uname -a Linux 3.10.0-327.36.1.el7.x86_64 #1 SMP Sun Sep 18 13:04:29 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux Снес свои неудачные попытки и заново скачал и распаковал extfilter. Dpdk удалять не стал, так как он нормально собран и нормально работает. # cd /usr/src # rm -drf /usr/src/extfilter-master # wget https://github.com/max197616/extfilter/archive/master.zip # unzip master.zip # cd extfilter-master Далее следуем рекомендациям автора фильтра (ВНИМАНИЕ: пути нужно указывать без последнего слеша, иначе будут ошибки при компиляции) # ./autogen.sh # ./configure --with-dpdk_target=/usr/src/dpdk/dpdk-16.07 --with-dpdk_home=build Вылетает ошибка configure: creating ./config.status config.status: error: cannot find input file: `Makefile.in' make: *** No targets specified and no makefile found. Stop. /usr/src/extfilter-master yes checking for compiling with nDPI... configure: error: Linking with nDPI failed! Решаем проблему через подсказку от автора Зайдите в каталог nDPI (cd nDPI), добавьте в файл configure.ac после AC_CONFIG_MACRO_DIR([m4]) строку AC_CONFIG_AUX_DIR([.]). Затем запустите ./autogen.sh | make # cd nDPI # nano configure.ac # ./autogen.sh | make Выводит make: *** Не заданы цели и не найден make-файл. Останов. autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force -I m4 autoreconf: configure.ac: tracing autoreconf: running: libtoolize --copy --force autoreconf: libtoolize terminated by signal: 13 ./autogen.sh: line 33: ./configure: Нет такого файла или каталога но, как я понимаю, тут все нормально. Возвращаемся в каталог с extfilter # cd ../ # ./configure --with-dpdk_target=/usr/src/dpdk/dpdk-16.07 --with-dpdk_home=build Всё завершается успешно. Пробуем собрать extfilter # make Вылетает ошибка Making all in src make[1]: Вход в каталог `/usr/src/extfilter-master/src' g++ -DHAVE_CONFIG_H -I. -I../include -I.././PcapPlusPlus/Dist/header -I..[b]/nDPI/src/include [u]-Ibuild//usr/src/dpdk/dpdk-16.07/include[/u][/b] -std=c++0x -O2 -pthread -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp In file included from main.cpp:1:0: ../include/main.h:5:24: фатальная ошибка: DpdkDevice.h: Нет такого файла или каталога #include <DpdkDevice.h> ^ компиляция прервана. make[1]: *** [main.o] Ошибка 1 make[1]: Выход из каталога `/usr/src/extfilter-master/src' make: *** [all-recursive] Ошибка 1 Пробуем сконфигурировать вручную PcapPlusPlus # cd PcapPlusPlus # configure-linux.sh Compile PcapPlusPlus with PR_RING? no Compile PcapPlusPlus with DPDK? yes (указываем пути к dpdk) # ./setup-dpdk.sh -n Вылетает ошибка ******************************* PcapPlusPlus setup DPDK script ******************************* ./setup-dpdk.sh: line 41: /usr/src/dpdk/dpdk-16.07/tools/dpdk_nic_bind.py: Нет такого файла или каталога В 91 и 41 строке переправил dpdk_nic_bind.py на dpdk-devbind.py NICS_TO_BIND="" заменил на NICS_TO_BIND="0000:02:00.0" # nano ./setup-dpdk.sh # ./setup-dpdk.sh ******************************* PcapPlusPlus setup DPDK script ******************************* 1. Huge-pages already allocated 2. 0000:02:00.0 is already binded to DPDK or doesn't exist. Exiting Network devices using DPDK-compatible driver ============================================ 0000:02:00.0 '82574L Gigabit Network Connection' drv=igb_uio unused= Network devices using kernel driver =================================== 0000:03:00.0 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller' if=enp3s0 drv=r8169 unused=igb_uio *Active* Other network devices ===================== <none> "is already binded to DPDK" - такое сообщение вылетело, потому что сетевая карта была переключена на DPDK-compatible driver ранее, во время сборки DPDK Снова пробуем собрать extfilter # cd ../ # make Вылетает ошибка. Обратил внимание на -Ibuild//usr/src/dpdk/dpdk-16.07/include Почему тут именно такая строка - не знаю. Надо править Making all in src make[1]: Вход в каталог `/usr/src/extfilter-master/src' g++ -DHAVE_CONFIG_H -I. -I../include -I.././PcapPlusPlus/Dist/header -I..[u][b]/nDPI/src/include -Ibuild//usr/src/dpdk/dpdk-16.07/include[/b][/u] -std=c++0x -O2 -pthread -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp In file included from main.cpp:1:0: ../include/main.h:5:24: фатальная ошибка: DpdkDevice.h: Нет такого файла или каталога #include <DpdkDevice.h> ^ компиляция прервана. make[1]: *** [main.o] Ошибка 1 Правим # cd src # nano Makefile В 191 строке меняем DPDK_INCLUDE = build//usr/src/dpdk/dpdk-16.07/include на DPDK_INCLUDE = /usr/src/dpdk/dpdk-16.07/build/include Меняем и DPDK_LIB = build//usr/src/dpdk/dpdk-16.07/lib на DPDK_LIB = /usr/src/dpdk/dpdk-16.07/build/lib Возвращаемся в каталог с extfilter, пробуем заново запустить сборку # cd ../ # make Снова ошибка Making all in src make[1]: Вход в каталог `/usr/src/extfilter-master/src' g++ -DHAVE_CONFIG_H -I. -I../include -I.././PcapPlusPlus/Dist/header -I../nDPI/src/include -I/usr/src/dpdk/dpdk-16.07/build/include -std=c++0x -O2 -pthread -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp In file included from main.cpp:1:0: ../include/main.h:5:24: фатальная ошибка: DpdkDevice.h: Нет такого файла или каталога #include <DpdkDevice.h> ^ компиляция прервана. make[1]: *** [main.o] Ошибка 1 make[1]: Выход из каталога `/usr/src/extfilter-master/src' Смотрим, каталогов Dist/header в PcapPlusPlus/Dist нет. Видимо make надо было запустить и в каталоге PcapPlusPlus. После в этой же директории появится каталог Dist С необходимыми для финишной сборки файлами # find / -name DpdkDevice.h /usr/src/extfilter-master/PcapPlusPlus/Pcap++/header/DpdkDevice.h # cd PcapPlusPlus # make Пробуем снова собрать extfilter # cd ../ # make Всё. Фильтр собрался Устанавливаем make install Фильтр установится в каталог /usr/local/bin По умолчанию фильтр идет без файлов-списков запрещенных ip и доменов. Для тестов их можно скопировать из nfqfilter. Пути к данным файлам прописываются в файле /usr/src/extfilter-master/etc/extfilter.ini Пробовал - запускается. В ближайшее время сервер будет подключен к порту-зеркалу... буду проверять работоспособность фильтра на живых пользователях. P.S: управление сервером по ssh, как я понимаю, должно осуществляться через сетевушку без dpdk драйвера. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...