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

TheRouter - software router and bras (dpdk based)

Завершил разработку первой версии софтварного (dpdk) браса.

 

therouter.net

 

# TheRouter 
TheRouter is a software packet router based on DPDK and NPF libraries.
Using modern software technique such as QSBR, lockless data structures and
cuckoo hashing the router to perform routing up tp 32Mpps and NAT (up to 6 Mpps) 
on high packet rates using commodity hardware.

 

Вот здесь https://github.com/alexk99/the_router/blob/master/bras/subsriber_management.md
документация именно по функциям браса и howto https://github.com/alexk99/the_router/blob/master/bras/bras_howto.md с примером реализации небольшого bras сервера. 

 

Документация по pppoe брасу https://github.com/alexk99/the_router#pppoe

 

Вот здесь документация по проекту https://github.com/alexk99/the_router, пример боевого внедрения в качестве bgp раутера
https://github.com/alexk99/the_router/blob/master/bizin.md

 

Текущая версия браса - это все еще тестовая версия, но с каждым месяцем количество фич, которые должны быть реализованы в стандартном браса,

но которых еще не поддерживает TheRouter, все меньше и меньше.
 

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

Edited by kisa

Share this post


Link to post
Share on other sites

the_router --proc-type=primary -c 0xF --lcores='0@0,1@1,2@2,3@3' --syslog='daemon' -n2 -w 0000:01:00.0 -w 0000:01:00.1 -- -c $1 -d
ps -ef | grep the_router | grep -v grep | awk '{print $2}' > /var/run/the_router.pid

Откройте для себя pidof.

 

Share this post


Link to post
Share on other sites

Не хочу разводить спор относительно парвильности. Но слово "раутер", режет слух :)

Share this post


Link to post
Share on other sites

У меня "раут" ассоциируется со светским. Мерлезонский балет, etc.

Share this post


Link to post
Share on other sites
В 08.09.2017 в 21:32, kisa сказал:

Завершил разработку первой версии софтварного (dpdk) браса.

 

Вот здесь https://github.com/alexk99/the_router/blob/master/bras/subsriber_management.md
документация именно по функциям браса и howto https://github.com/alexk99/the_router/blob/master/bras/bras_howto.md с примером реализации небольшого bras сервера. 

 

Вот здесь документация по проекту https://github.com/alexk99/the_router, пример боевого внедрения в качестве bgp раутера
https://github.com/alexk99/the_router/blob/master/bizin.md

 

Текущая версия браса - это прототип, в нем нет некоторых фич, необходимых для боевой эксплуатации, таких как ipfix (netflow), nat algs (pptp, sip и т.п.).
Но это может и не быть препятствием для построения полу-боевых тестовых систем.

 

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

а почему dpdk? он вроде как ядра процессора, те которые с карты пакеты перехватывают на 100% грузят - минус к диагностике, или я ошибаюсь?

Share this post


Link to post
Share on other sites
33 минуты назад, ichthyandr сказал:

а почему dpdk? он вроде как ядра процессора, те которые с карты пакеты перехватывают на 100% грузят - минус к диагностике, или я ошибаюсь?

мне понравился dpdk. хорошо документированных, качественных, бесплатных, с хорошим коммьюнити проектов я просто не нашел на тот момент.

по поводу 100% - не совсем так. это не dpdk грузит, это большинство проектов на ранних стадиях разработки не реализуют стратегии энергосбережения,

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

а наиболее "горячие" места в коде обычно смотрят профайлерами, тем же perf можно.

Share this post


Link to post
Share on other sites
В 08.09.2017 в 21:32, kisa сказал:

Проект не опенсорс, но бесплатный. [..] Если проект взлетит, то он будет платным.

Перспективы как-то не очень.

Закрытость проекта означает невозможность внесения изменений или исправления ошибок без вашего участия. Бесплатность означает отсутствие каких-либо обязательств с Вашей стороны.

 

В 08.09.2017 в 21:32, kisa сказал:

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

Найдите потенциальных клиентов, допилите продукт под их хотелки за их же деньги.

Share this post


Link to post
Share on other sites

Согласен, закрытость проекта не позволит более опытным программистам предложить в коммиты пулл-реквесты с улучшениями... Либо бесплатно и открыто, либо платно и проприеритарно. Другие комбинации слов "бесплатно", "платно", "открыто" и "проприеритарно" как-то не очень сочетаются на практике. Другое дело, что начнут форки строгать, что начнет вводить в заблуждение в выборе. Тому пример Accel-ppp.

Edited by murano

Share this post


Link to post
Share on other sites

Меня спрашивают про какие-нибудь тесты.

 

1) есть тесты NAT.


Подробно вот тут https://github.com/alexk99/the_router/blob/master/source_nat.md

 

Если коротко, то с таблицей трансляций нат 1M (1 миллион), сервер с пятью ядрами,
выделенными под рабочие потоки TheRouter, пропускает 5,4 Mpps( миллионов пакетов 
в секунду) - это примерно 40 гбит/c, если взять в расчет обычные пакеты большого размера.

Processor: Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz
NIC: Intel X520-DA2
Ram: 32Gb 4x8

 

2) и есть тесты просто раутинга


там железки были попроще Core i5, 3 ядра под рабочие потоки TheRouter'а,
Суммарно (in+out) 14,8 Mpps 64 байтными пакетам.
Количество ip потоков в трафике - 128k. Поток в этом тесте - это все пакеты с одинаковыми ip src, ip dst.
Таблица маррутизации тоже 128k, фактически она могла быть любого размера, т.к. только количество потоков
важно для таких тестов.
 

Share this post


Link to post
Share on other sites

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

Какие существенные отличия от готовых бесплатных решений (ну кроме dpdk based, это разумеется даёт своё приимущество в скорости, хатя попадились решения и на её основе открытые.)?

Share this post


Link to post
Share on other sites
4 часа назад, bomberman сказал:

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

Какие существенные отличия от готовых бесплатных решений (ну кроме dpdk based, это разумеется даёт своё приимущество в скорости, хатя попадились решения и на её основе открытые.)?

 

Стоимость будет ниже аналогичных решений, возможно ниже в разы.

 

>> Как будет лицензироваться?
>> За что придётся платить возможным клиентам?

Над деталями лицензирования думать рано. 

 

>> Какие существенные отличия от готовых бесплатных решений

скорость

 

Открытых работающих решений (dpdk или подобных, не ядерных) я не знаю. Если знаете, приведите ссылки. Всем будет очень интересно посмотреть.

Edited by kisa

Share this post


Link to post
Share on other sites

Я правильно понимаю, что проект должен иметь часть функционала netfilter(такую как NAT, conntrack, например), полный функционал iproute2 и функционал tc?

Share this post


Link to post
Share on other sites
3 минуты назад, oleg_n сказал:

Я правильно понимаю, что проект должен иметь часть функционала netfilter(такую как NAT, conntrack, например), полный функционал iproute2 и функционал tc?

NAT есть, он основан на NetBSD NPF - это аналог netfilter в части conntrack.

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

из tc есть только shaping.

 

P.S.

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

Share this post


Link to post
Share on other sites
1 минуту назад, kisa сказал:

NAT есть, он основан на NetBSD NPF - это аналог netfilter в части conntrack.

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

из tc есть только shaping.

 

P.S.

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

Я не про это. Я про то, не пугает ли Вас сколько функционала надо будет отлаживать и оптимизировать, который уже годами и тысячами людей отлажен в netfilter/iproute2/tc? У меня глаз дёргается от одной мысли.

Share this post


Link to post
Share on other sites

Нет, не пугает. т.к. я уже сказал, что не собираюсь делать универсальный сетевой стэк на все случаи жизни, как это сделано в linux.

Share this post


Link to post
Share on other sites

kisa , а почему бы не сделать готовый ISO-образ дистрибутива с вашим продуктом?

Share this post


Link to post
Share on other sites
18 минут назад, kisa сказал:

Нет, не пугает.

Это хорошо :-). Похоже, просто, я старею :-).

Share this post


Link to post
Share on other sites
Цитата

а почему бы не сделать готовый ISO-образ дистрибутива с вашим продуктом?

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

Edited by kisa

Share this post


Link to post
Share on other sites
1 минуту назад, kisa сказал:

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

Ну, раз Вы только собираетесь, может быть сразу посмотрите в сторону deb-based дистрибутивов?

Share this post


Link to post
Share on other sites
Только что, TheUser сказал:

Ну, раз Вы только собираетесь, может быть сразу посмотрите в сторону deb-based дистрибутивов?

задача - упростить установку, и мне очень хочется сделать это с минимальными затратами. т.к. сейчас все обкатано на gentoo,

то, скорей всего, это и останется gentoo. у NPF очень много зависимостей, заного изучать процесс сборки мне не хочется.

Share this post


Link to post
Share on other sites

Всем прмвет.

Позволю себе оставить первый отзыв на the-router.

 

Ввели в тестовую эксплцуатацию на реальном трафике, в качестве BGP (только маршрутизация).

Машина: 

-AMD FX(tm)-8350 Eight-Core Processor 4.2 GHz (используется 4 ядра)

-16G RAM

-2x 2-головах Intel 82599ES, объединены в LACP (все 4 порта в 1 bonding)

- 5 vlan

- GBP Full View 702k маршрутов.

 

Запущена 28.06, в работе по настоящее время. 1 падение по питанию (таз есть таз - 1  БП :) )

 

Средний PPS в ЧНН - 2.4-2.5 Mpps на вход + столько-же на выход (асего 4.8-5 Mpps); трафик ~ 17GBps вход + столько же выход.

 

router.conf:

    startup {
      sysctl set mbuf 16384
      port 4 mtu 1500 tpid 0x8100 state enabled bond_slaves 0,1,2,3

      rx_queue port 4 queue 0 lcore 1
      rx_queue port 4 queue 1 lcore 2
      rx_queue port 4 queue 2 lcore 3
      rx_queue port 4 queue 3 lcore 4

      sysctl set global_packet_counters 1
    }


    runtime {
      vif add name v668 port 4 type dot1q cvid 668 flags kni
      ip addr add 192.168.0.1/24 dev v668
      vif add name v229 port 4 type dot1q cvid 229 flags kni
      vif add name v150 port 4 type dot1q cvid 150 flags kni
      vif add name v232 port 4 type dot1q cvid 232 flags kni
      vif add name v227 port 4 type dot1q cvid 227 flags kni
      vif add name v239 port 4 type dot1q cvid 239 flags kni
      vif add name v732 port 4 type dot1q cvid 732 flags kni

    }

 

Производительности 4 ядео хватает чтоб заменить 2 процессторный  Xeon E5-2630 v2 2.60G (12 ядер) загрузка которого при том же pps ~60% на 3.18 ядре (всех ядер).

 

Если есть вопросы - спрашивайте.

Share this post


Link to post
Share on other sites
7 часов назад, DeadMeat сказал:

 

внутри quagga?

Скорость коммутации это заслуга dpdk

Edited by QWE

Share this post


Link to post
Share on other sites
6 hours ago, QWE said:

внутри quagga?

Если точнее - frr.

 

6 hours ago, QWE said:

Скорость коммутации это заслуга dpdk

Да, но в отличие от, например, packet-journey, где full-view в приложение загружается ~1.5 минуты(на том же железе) - тут (по крайней мере на мой глаз) практически мгновенно (замеров не делал).

Share this post


Link to post
Share on other sites

я юзаю bird, FV грузиться гораздо быстрее чем 1,5 минуты.   но точно не замерял.

логирование загрузки роутов включите, узнаете за сколько точно грузиться

от отгружаемой стороны также зависит скорость приема роутов.

ipv6 BGP?

NETFLOW V4 V6 ? или что есть для экспорта flow-s ?

 

у Вас единственный бордер на этой штуке?

к меня два бордера, как для таких случаев подходит то что вы тестируете?

Edited by QWE

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