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

Привет!

 

Год назад, прослушав интервью с Luke Gorrie и решив, что не боги горшки обжигают, начал

пилить свой машрутизатор. Правда, по дороге snabbswitch отвалился, зато нашелся DPDK и

Русикевичус с NPF. В итоге хочу поделиться своей игрушкой. Очень очень альфа. Можно

поиграться в качестве домашнего раутера. Поддерживает динамическую маршрутизацию, NAT,

разные ethernet инкапсуляции, пережевывает на хорошем десктопном железе 6Mpps с включенным

натом и 1 миллионом трансляций. Возможно и больше, пока выжал из statefull генератора WARP17

на простых core i5 только по 3Mpps в кажду стороную.

 

Пока не решил, как быть дальше, поэтому исходники самого раутера пока не даю,

выложил собранную версию под 4 сore cpu. Кому не страшно в песочнице можно запустить.

 

https://github.com/alexk99/the_router

 

P.S.

зачем все это пишу? хочется найти или не найти стимулов куда-то с этим хозяйством

отправиться дальше или решить, что фан закончился, технологии изучены, хватит.

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


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

Хорошая тема) Вопрос в качестве и цене. Но линукс легко роутит десятки гигабит без проблем. Так что 6 mpps - это мало.

Изменено пользователем pavel.odintsov

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


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

6Mpps - это при среднем размере (800 байт) пакета 40 гбит/с. Я делал нагрузочные тесты, все подробности которых описаны по ссылке. В этих тестах линукс начинал терять пакеты где-то на 3Mpps на том же железе. Это все с натом. Без ната это практически wire speed, но совершенно не интересно - это территория коммутаторов.

 

Я как раз хотел создать отдельную тему о тестировании NAT в linux c помощью warp17. Идеальный инструмент ведь для таких целей. создает огромные нагрузки и не просто пакетами, а настоящии tcp сессиями. Можно отдельно простестировать влияние любого параметра на результвт и очень быстро.

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

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


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

очень интересно если бесплатно или недорого :-)

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


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

очень интересно если бесплатно или недорого :-)

Ни о какой речи о деньгах я не веду. Это не готовое для продакшена решение. Нет логгирования сессий, нет дополнительных нат алгоритмов вроде pptp. Но, это все несложно сделать.

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


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

1. на дпдк можно сильно больше.

2. этих решений щас как грибов после дождя, разница только в степени допиленности.

Вон скат - суть тоже самое, или rdp.ru барыжит натилками и пр на тех же принципах которые уже по 110г на таз пропускают.

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


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

1. на дпдк можно сильно больше.

можно, я привел цифры для десктопного железа. С серверами за 20$k будет сильно больше и более лучше.

 

2. этих решений щас как грибов после дождя, разница только в степени допиленности.

Вон скат - суть тоже самое, или rdp.ru барыжит натилками и пр на тех же принципах которые уже по 110г на таз пропускают.

весь вопрос в цене, бесплатных решений или хотя бы с ценником меньше 5 нулей я не видел.

Буду рад если поделитесь.

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


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

Так искать надо, я скорее сочувствующий теме и поэтому просто помню что часто всплывают упоминания что то там на нетмапе то тут на дпдк то ещё где на пфринг пишут очередной улучшатель кармы интернета на своей или ещё какой то либе.

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


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

Но линукс легко роутит десятки гигабит без проблем. Так что 6 mpps - это мало.

роутить и натить не одно и то же. десятки гигабит и десятки mpps совсем разные вещи.

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

 

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

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


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

Уже ушел на ваш гит, пробовать тестить.

Сейчас выложена версия, собранная под 4 ядра. Если нужно больше - напишите, я соберу под нужное.

 

Еще из моментов по производительности, если кто будет тестить именно ее. Я не делал никаких тестов на многопроцессорных машинах, у меня их просто нет.

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

 

Ну и сами сетевухи, в идеале интелловские. Я тестил на x520.

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

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


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

можно собрать на 8 ядер?

хочется попробовать поставить на бордер 4х 10г интерфейса 2 фулл вью, скажите а два порта в бондинг можно объединить(lacp)?

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


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

можно собрать на 8 ядер?

хочется попробовать поставить на бордер 4х 10г интерфейса 2 фулл вью, скажите а два порта в бондинг можно объединить(lacp)?

на боевой бордер, в перспективе или сейчас? Если сейчас, пожалуйста, не делайте этого. Это же первый билд, там багов наверное.

сейчас бондинга нет, но в DPDK такая фича есть. И в моих планах на следующую версию он тоже есть.

 

про версию под 8 ядер я дам знать.

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


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

без бондинга смысла нет, подождем...

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


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

без бондинга смысла нет, подождем...

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

А вот потестировать можно и без него. Залить фулвью, покрутить, повертеть. Я был бы рад любым отзывам.

 

Я, например, не тестировал заливку реальных таблиц маршрутизации. Я только делал синтетические тесты, заливая архивы full table через bgpsimple.

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


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

Я к тому, что стратегия дождаться хорошей работающей версии замечательна, но в случае the_router можно и не дождаться,

т.к. просто новые версии не увидят свет, меня ведь никто не спонсирует, армии тестировщиков у меня тоже нет.

 

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

заплатить, тестированием, участием, железками или еще чем-то.

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


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

https://github.com/Gandi/packet-journey

 

Бондинг можно легко дописать. Его умеет сам DPDK.

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


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

https://wiki.fd.io/view/VPP

 

Тоже на DPDK. В каком-то виде используется в софтовых цисковских роутерах. В том, что отдали в open source есть NAT и ipfix неизвестного уровня стабильности.

 

В части интеграции с userspace можно посмотреть этот проект из SB:

 

https://wiki.fd.io/view/VPP_Sandbox/router

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


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

https://github.com/Gandi/packet-journey

 

Бондинг можно легко дописать. Его умеет сам DPDK.

Более того, похоже, что можно попробовать даже ничего не писать. А обойтись созданием bond интерфейса через EAL command line параметры.

В DPDK документации по бондингу (9.3.2. Using Link Bonding Devices from the EAL Command Line) http://dpdk.org/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.html сказано, что созданные таким образом порты для приложения должны быть неотличимы от обычных портов и любое приложение dpdk можно запустить на bond устройствах.

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


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

VPP - очень крутой проект. Но в их доках черт ногу сломит. Такой аккуратности и доступной документации как у DPDK там, к сожалению, даже близко нет.

Используют DPDK только для доступа к железу, высокоуровневые DPDK библиотеки типа LPM вообще не используют.

 

Очень интересная про них статья тут http://blogs.cisco.com/sp/a-bigger-helping-of-internet-please

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


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

высокоуровневые DPDK библиотеки типа LPM вообще не используют.

Да, все верно. Идея batching-а пакетов для оптимизации использования D- и I- кеша процессора появилась в недрах Cisco задолго до DPDK.

 

У Dave Barach даже патент есть, он кстати и руководит open source проектом. https://www.google.ch/patents/US7961636

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


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

высокоуровневые DPDK библиотеки типа LPM вообще не используют.

Да, все верно. Идея batching-а пакетов для оптимизации использования D- и I- кеша процессора появилась в недрах Cisco задолго до DPDK.

 

У Dave Barach даже патент есть, он кстати и руководит open source проектом. https://www.google.ch/patents/US7961636

Патенты вещь мутная. Вот интересно, software pipelining https://en.wikipedia.org/wiki/Software_pipelining благодаря

которому он утверждает, что победил memory latency и может обрабатывать сколько угодно большие таблицы вроде arp, fib и т.п. уж точно

до них появились, это тоже часть их патента?

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


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

Интересно будет взглянуть на исходники. Спасибо за ссылку.

Как быстро он решил проблему c ARP, просто все в линукс отправляет.

Я честно реализовал свой arp движок. В качестве бонуса я могу создавать тысячи виртуальных интерфейсов, не напрягая ядро linux.

И как следствие в качестве возможного направления развития думал о простом брасе: прикрутить аля cisco dhcp helper, raduis для авторазиции и резалку скорости.

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


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

В качестве бонуса я могу создавать тысячи виртуальных интерфейсов, не напрягая ядро linux.

Достаточно усилий приложено в последние годы, чтобы масштабировать ядро для работы с тысячими интерфейсов (речь шла, насколько я помню, о скорости их создания/удаления, изначально с этим были большие проблемы).

 

Мне кажется, что наиболее правильно делает 6WIND со своим коммерческим Virtual Accelerator. Он максимально прозрачен для ядра и остального userspace. В стиле: вот у тебя настроенный Linux-роутер, который пропускает около 8 Mpps в секунду в режиме forwarding, и вот ты запускаешь их решение и он уже позволяет пропустить 80 Mpps. Красота.

 

В демонстрации можно увидеть идею, если присмотреться

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


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

В качестве бонуса я могу создавать тысячи виртуальных интерфейсов, не напрягая ядро linux.

Достаточно усилий приложено в последние годы, чтобы масштабировать ядро для работы с тысячими интерфейсов (речь шла, насколько я помню, о скорости их создания/удаления, изначально с этим были большие проблемы).

Одно дело быстро создавать, совсем другое гонять в них данные из юзер спейса.

 

В демонстрации можно увидеть идею, если присмотреться

Конечно идея красивая. Но спускаясь на землю, в этом демо, похоже, просто форвардинг. Про NAT у них написано, что поддерживается.

Но я верю тестам. С появлением WARP17 протестировать сколько может выжать NAT или просто conntrack стало элементарно и наглядно: вот кол-во одновременных сессий, вот скорость их создания, вот общий пакетрейт.

 

У кого-нибудь реально использует их акселератор? Какие впечатления?

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


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

Virtual Accelerator - это не вещь для конечных пользователей. 6WIND производит софт для... производителей ПО! То есть они своего рода сугубо вендор библиотеки, на которой в свою очередь сильные мира сего пишут свое ПО. Подозреваю, цена там заоблачная, так как в свое время без личной встречи её называть отказались.

 

Если же интересно, сколько на таком можно заработать, то просто возьмите цену Б/У MX80 или чего-либо из цисок, это именно тот класс дивайсов, с которым вы пытаетесь конкурировать. А они я скажу очень фичастые.

Изменено пользователем pavel.odintsov

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


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

Join the conversation

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

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

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

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

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

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

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