Jump to content
Калькуляторы

click router Кто-нибудь пробовал разбираться в этом ?

Есть такой проект https://github.com/kohler/click/. Теоретически интересен он тем, что есть его вариант с netmap, который обещает производительность, которую обеспечивает netmap :-). Т.е. должно быть охренительно быстро.

 

Кто-нибудь смотрел, трогал ? Из документации я пока ничего не понял в его языке описания цепочек :-). Вроде бы этот клик можно настроить как вообще что угодно -- как фильтрующий или шейпящий бридж. Ограничивается всё мерой понимания, фантазией и знанием этого языка.

 

В общем, интересуют мнения.

Share this post


Link to post
Share on other sites

самому интересно, но думаю с ним можно будет работать только в узкозаточеном функционале

Share this post


Link to post
Share on other sites

Я бы явно попробовал. Решения для роутинга на базе Intel DPDK легко уделывают возможности линукс бокса по роутингу.

Share this post


Link to post
Share on other sites

меня пока смущает только динамическая маршрутизация

Share this post


Link to post
Share on other sites

Я бы явно попробовал. Решения для роутинга на базе Intel DPDK легко уделывают возможности линукс бокса по роутингу.

 

Любое софтовое решение, если оно обеспечивает предел по pps среды передачи данных, уделывет не только линукс, но и тем более БЗД и даже каталист при определённом раскладе :-). Т.е. наверняка это решение позволит больше, чем каталист, но портов будет меньше, чем у последнего.

 

Вроде из описания следует, что не важно, на какой ОС запускать -- в юзерспейсе управляющая программа, а само таинство выполняется модулем к ядру. На сегодня имеем netmap, pf_ring и DPDK как технологии быстрой обработки пакетов. По-моему, у всех трёх заявлена производительность равная или близкая к пределу стандартов 1G/10G, всё зависит от ЦПУ и карты, на сколько я понял. Нот что-то софта на этих технологиях нет, за исключением пропатченных libpcap и всего остального, что может юзать libpcap.

 

Жаль, что ещё никто не разбирался с этим кликом ...

Share this post


Link to post
Share on other sites

Софт будет.

Сейчас идёт накопление кодовой базы, опыта и вики знаний.

 

Для сравнения можно сесть и за вечер налабать нетграф модуль который будет что то делать в L2/L3/L4 без особых сложностей.

Чтобы налабать под нетмап аналогичное нужно заметно больше времени.

Но задача облегчается тем, что система не падает в случае косяков.

 

И нужно понимать что под нетмапом нужно многое реализовывать самостоятельно.

Если в нетграфе ты берёшь л3 пакет то ты уже уверен что он прошёл входные проверки и можно ещё раз не проверять кучу всякой банальщины, а сразу что то с ним делать, и потом ты его выплёвываешь и система сама его до обрабатывает и отсылает куда нужно.

А здесь нужно весь стёк с нуля городить, и арп и кеш к нему и таблицу роутинга и прочее. Такое быстро не делается.

 

У яндекса уже больше года что то на нетмапе есть, вроде даже в продакшене, но деталей они не озвучивают.

Share this post


Link to post
Share on other sites

Готовые роутинг-модули есть для DPDK в примерах даже, но там тупо статический роутинг по набору правил, но обещают до 80mpps и выше.

 

На PF_RING/ZC (200 евро за сетевку лицензия) я уже довольно давно и тесно пишу - в принципе, сроутить им можно очень много, но там нет тулкита по конкретно роутингу, то есть LPM матчинг и сам протокол роутинга надо лабать самостоятельно, но в примерах там есть examples роутера по RFC, для него заявляли line rate для 2х 10GE.

 

netmap на Linux - ужасное багалово, как он работает и почему - совершенно не ясно, у меня так и не вышло его завести, чтобы он на 100kpps не убивал мне всю машину.

 

Так что если у кого есть интерес, можно попробовать поднять стенды, ибо Linux-таки не лучшая платформа под роутинг, как ни крути. Очень много деталей и мелочей и очень сильная завязка на ядро, а тот же dpdk работает на любом ядре, так как вся обработка в общем-то уносится в модуль ядра.

Share this post


Link to post
Share on other sites

Вот пруфлинк на тему роутингв силами 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 by pavel.odintsov

Share this post


Link to post
Share on other sites

я прошу прощения, а BGP к PF_RING как то прикрутить можно?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Для квагги есть патчи, позволяющие грузить маршруты не в ядро, а куда-либо, возможно уже в апстриме, надо смотреьб

Share this post


Link to post
Share on other sites

Где-то была инфа, что Quagga может управлять как SDN и передавать управляющие команды контроллеру сетевого устройства. У Кумулуса вроде оно так и используется. То есть поидее нужен SDN контроллер и форвард энджин к нему кастомный.

Share this post


Link to post
Share on other sites

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

 

Так что принимайте роуты от зебры и запихивайте их куда вам нравится

Share this post


Link to post
Share on other sites

как мне кажется в результате прийдется писать ip стек в юзер левеле, что уменьшит переключение контекста, но особой производительности даст только на маленьком поличестве маршрутов.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this