wtyd Posted December 26, 2014 · Report post Есть такой проект https://github.com/kohler/click/. Теоретически интересен он тем, что есть его вариант с netmap, который обещает производительность, которую обеспечивает netmap :-). Т.е. должно быть охренительно быстро. Кто-нибудь смотрел, трогал ? Из документации я пока ничего не понял в его языке описания цепочек :-). Вроде бы этот клик можно настроить как вообще что угодно -- как фильтрующий или шейпящий бридж. Ограничивается всё мерой понимания, фантазией и знанием этого языка. В общем, интересуют мнения. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
t0ly Posted December 26, 2014 · Report post самому интересно, но думаю с ним можно будет работать только в узкозаточеном функционале Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted December 27, 2014 · Report post Я бы явно попробовал. Решения для роутинга на базе Intel DPDK легко уделывают возможности линукс бокса по роутингу. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
t0ly Posted December 28, 2014 · Report post меня пока смущает только динамическая маршрутизация Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wtyd Posted December 28, 2014 · Report post Я бы явно попробовал. Решения для роутинга на базе Intel DPDK легко уделывают возможности линукс бокса по роутингу. Любое софтовое решение, если оно обеспечивает предел по pps среды передачи данных, уделывет не только линукс, но и тем более БЗД и даже каталист при определённом раскладе :-). Т.е. наверняка это решение позволит больше, чем каталист, но портов будет меньше, чем у последнего. Вроде из описания следует, что не важно, на какой ОС запускать -- в юзерспейсе управляющая программа, а само таинство выполняется модулем к ядру. На сегодня имеем netmap, pf_ring и DPDK как технологии быстрой обработки пакетов. По-моему, у всех трёх заявлена производительность равная или близкая к пределу стандартов 1G/10G, всё зависит от ЦПУ и карты, на сколько я понял. Нот что-то софта на этих технологиях нет, за исключением пропатченных libpcap и всего остального, что может юзать libpcap. Жаль, что ещё никто не разбирался с этим кликом ... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 28, 2014 · Report post Софт будет. Сейчас идёт накопление кодовой базы, опыта и вики знаний. Для сравнения можно сесть и за вечер налабать нетграф модуль который будет что то делать в L2/L3/L4 без особых сложностей. Чтобы налабать под нетмап аналогичное нужно заметно больше времени. Но задача облегчается тем, что система не падает в случае косяков. И нужно понимать что под нетмапом нужно многое реализовывать самостоятельно. Если в нетграфе ты берёшь л3 пакет то ты уже уверен что он прошёл входные проверки и можно ещё раз не проверять кучу всякой банальщины, а сразу что то с ним делать, и потом ты его выплёвываешь и система сама его до обрабатывает и отсылает куда нужно. А здесь нужно весь стёк с нуля городить, и арп и кеш к нему и таблицу роутинга и прочее. Такое быстро не делается. У яндекса уже больше года что то на нетмапе есть, вроде даже в продакшене, но деталей они не озвучивают. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted December 29, 2014 · Report post Готовые роутинг-модули есть для DPDK в примерах даже, но там тупо статический роутинг по набору правил, но обещают до 80mpps и выше. На PF_RING/ZC (200 евро за сетевку лицензия) я уже довольно давно и тесно пишу - в принципе, сроутить им можно очень много, но там нет тулкита по конкретно роутингу, то есть LPM матчинг и сам протокол роутинга надо лабать самостоятельно, но в примерах там есть examples роутера по RFC, для него заявляли line rate для 2х 10GE. netmap на Linux - ужасное багалово, как он работает и почему - совершенно не ясно, у меня так и не вышло его завести, чтобы он на 100kpps не убивал мне всю машину. Так что если у кого есть интерес, можно попробовать поднять стенды, ибо Linux-таки не лучшая платформа под роутинг, как ни крути. Очень много деталей и мелочей и очень сильная завязка на ядро, а тот же dpdk работает на любом ядре, так как вся обработка в общем-то уносится в модуль ядра. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted December 29, 2014 (edited) · Report post Вот пруфлинк на тему роутингв силами PF_RING десятки целиком - http://www.ntop.org/pf_ring/pf_ring-dna-rfc-2544-benchmark/ Вот PDF со сравнением PF_RING/Linux forward: http://www.ntop.org/wp-content/uploads/2012/04/DNA_ip_forward_RFC2544.pdf по-моему, убедительнее некуда. Я давно-давно спрашивал автора PF_RING Luca Deri на тему, какой софт они для этого использовали и мне ответили вот это: https://svn.ntop.org/svn/ntop/trunk/PF_RING/userland/examples/pfbridge.c Edited December 30, 2014 by pavel.odintsov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
t0ly Posted December 30, 2014 · Report post я прошу прощения, а BGP к PF_RING как то прикрутить можно? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted December 30, 2014 · Report post t0ly почему нет? Но вопрос скорее в чуточку ином - нужно научить BIRD/Quagga подавать команды перестройки роутинг таблицы не ядру, а приложению на PF_RING. В принципе, это все реально написать. Но я все равно думаю, что DPDK для этой задачи и лучше, хоть я его и знаю очень плохо. Вот, посмотрите тут http://www.intel.com/content/www/us/en/intelligent-systems/intel-technology/intel-dpdk-sample-applications-user-guide.html "L3 Forwarding Sample Application" на странице 58. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted December 31, 2014 · Report post Для квагги есть патчи, позволяющие грузить маршруты не в ядро, а куда-либо, возможно уже в апстриме, надо смотреьб Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted January 1, 2015 · Report post Где-то была инфа, что Quagga может управлять как SDN и передавать управляющие команды контроллеру сетевого устройства. У Кумулуса вроде оно так и используется. То есть поидее нужен SDN контроллер и форвард энджин к нему кастомный. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted January 2, 2015 · Report post pavel.odintsov Раньше я читал лист рассылку quagga, поэтому помню,что эта тема поднималась и были наработки. Сейчас оно принято в апстрим: http://www.gossamer-threads.com/lists/quagga/dev/24177 http://www.nongnu.org/quagga/docs/docs-multi/zebra-FIB-push-interface.html Так что принимайте роуты от зебры и запихивайте их куда вам нравится Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted January 3, 2015 · Report post Спасибо, круто! Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
t0ly Posted January 5, 2015 · Report post как мне кажется в результате прийдется писать ip стек в юзер левеле, что уменьшит переключение контекста, но особой производительности даст только на маленьком поличестве маршрутов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...