Перейти к содержимому
Калькуляторы

TheRouter - software router and bras (dpdk based)

TheRouter переименован в BisonRouter. Вся подробная информация о компании на сайте https://bisonrouter.com

The project is now Bison Router! Please visit our website https://bisonrouter.com for more information.

 

History:

Завершил разработку первой версии софтварного (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, все меньше и меньше.
 

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

Изменено пользователем kisa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 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% грузят - минус к диагностике, или я ошибаюсь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

33 минуты назад, ichthyandr сказал:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем murano

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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, фактически она могла быть любого размера, т.к. только количество потоков
важно для таких тестов.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 часа назад, bomberman сказал:

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

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

 

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

 

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

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

 

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

скорость

 

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

Изменено пользователем kisa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3 минуты назад, oleg_n сказал:

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

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

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

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

 

P.S.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 минуту назад, kisa сказал:

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

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

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

 

P.S.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

18 минут назад, kisa сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Цитата

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

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

Изменено пользователем kisa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 минуту назад, kisa сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только что, TheUser сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3 часа назад, kisa сказал:

Если знаете, приведите ссылки.

Да. пожалуй ошибся. Там не dpdk.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем прмвет.

Позволю себе оставить первый отзыв на 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 ядре (всех ядер).

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

7 часов назад, DeadMeat сказал:

 

внутри quagga?

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

Изменено пользователем QWE

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 hours ago, QWE said:

внутри quagga?

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

 

6 hours ago, QWE said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

ipv6 BGP?

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

 

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

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

Изменено пользователем QWE

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.