kisa Опубликовано 14 декабря, 2016 · Жалоба Привет! Год назад, прослушав интервью с 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. зачем все это пишу? хочется найти или не найти стимулов куда-то с этим хозяйством отправиться дальше или решить, что фан закончился, технологии изучены, хватит. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 14 декабря, 2016 (изменено) · Жалоба Хорошая тема) Вопрос в качестве и цене. Но линукс легко роутит десятки гигабит без проблем. Так что 6 mpps - это мало. Изменено 15 декабря, 2016 пользователем pavel.odintsov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 15 декабря, 2016 (изменено) · Жалоба 6Mpps - это при среднем размере (800 байт) пакета 40 гбит/с. Я делал нагрузочные тесты, все подробности которых описаны по ссылке. В этих тестах линукс начинал терять пакеты где-то на 3Mpps на том же железе. Это все с натом. Без ната это практически wire speed, но совершенно не интересно - это территория коммутаторов. Я как раз хотел создать отдельную тему о тестировании NAT в linux c помощью warp17. Идеальный инструмент ведь для таких целей. создает огромные нагрузки и не просто пакетами, а настоящии tcp сессиями. Можно отдельно простестировать влияние любого параметра на результвт и очень быстро. Изменено 15 декабря, 2016 пользователем kisa Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
radiotech Опубликовано 15 декабря, 2016 · Жалоба очень интересно если бесплатно или недорого :-) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 15 декабря, 2016 · Жалоба очень интересно если бесплатно или недорого :-) Ни о какой речи о деньгах я не веду. Это не готовое для продакшена решение. Нет логгирования сессий, нет дополнительных нат алгоритмов вроде pptp. Но, это все несложно сделать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 15 декабря, 2016 · Жалоба 1. на дпдк можно сильно больше. 2. этих решений щас как грибов после дождя, разница только в степени допиленности. Вон скат - суть тоже самое, или rdp.ru барыжит натилками и пр на тех же принципах которые уже по 110г на таз пропускают. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 15 декабря, 2016 · Жалоба 1. на дпдк можно сильно больше. можно, я привел цифры для десктопного железа. С серверами за 20$k будет сильно больше и более лучше. 2. этих решений щас как грибов после дождя, разница только в степени допиленности. Вон скат - суть тоже самое, или rdp.ru барыжит натилками и пр на тех же принципах которые уже по 110г на таз пропускают. весь вопрос в цене, бесплатных решений или хотя бы с ценником меньше 5 нулей я не видел. Буду рад если поделитесь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 15 декабря, 2016 · Жалоба Так искать надо, я скорее сочувствующий теме и поэтому просто помню что часто всплывают упоминания что то там на нетмапе то тут на дпдк то ещё где на пфринг пишут очередной улучшатель кармы интернета на своей или ещё какой то либе. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nshut Опубликовано 16 декабря, 2016 · Жалоба Но линукс легко роутит десятки гигабит без проблем. Так что 6 mpps - это мало. роутить и натить не одно и то же. десятки гигабит и десятки mpps совсем разные вещи. Я не часто на форуме, но только и вижу, как у всех работают наты на целеронах, но ни одного практического результата толком не видел. Автор молодец! я лично тоже не нашел готового решения, а искал прилично. Уже ушел на ваш гит, пробовать тестить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 16 декабря, 2016 (изменено) · Жалоба Уже ушел на ваш гит, пробовать тестить. Сейчас выложена версия, собранная под 4 ядра. Если нужно больше - напишите, я соберу под нужное. Еще из моментов по производительности, если кто будет тестить именно ее. Я не делал никаких тестов на многопроцессорных машинах, у меня их просто нет. Поэтому лучше использовать ядра одного процессора и смотреть, чтобы сетевуха была на том же сокете, что и процессор. Ну и сами сетевухи, в идеале интелловские. Я тестил на x520. Изменено 16 декабря, 2016 пользователем kisa Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
radiotech Опубликовано 16 декабря, 2016 · Жалоба можно собрать на 8 ядер? хочется попробовать поставить на бордер 4х 10г интерфейса 2 фулл вью, скажите а два порта в бондинг можно объединить(lacp)? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 16 декабря, 2016 · Жалоба можно собрать на 8 ядер? хочется попробовать поставить на бордер 4х 10г интерфейса 2 фулл вью, скажите а два порта в бондинг можно объединить(lacp)? на боевой бордер, в перспективе или сейчас? Если сейчас, пожалуйста, не делайте этого. Это же первый билд, там багов наверное. сейчас бондинга нет, но в DPDK такая фича есть. И в моих планах на следующую версию он тоже есть. про версию под 8 ядер я дам знать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
radiotech Опубликовано 16 декабря, 2016 · Жалоба без бондинга смысла нет, подождем... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 16 декабря, 2016 · Жалоба без бондинга смысла нет, подождем... В продакшене конечно без него никак, но и без многих других вещей, которых сейчас нет, в продакшене тоже не обойтись. А вот потестировать можно и без него. Залить фулвью, покрутить, повертеть. Я был бы рад любым отзывам. Я, например, не тестировал заливку реальных таблиц маршрутизации. Я только делал синтетические тесты, заливая архивы full table через bgpsimple. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 16 декабря, 2016 · Жалоба Я к тому, что стратегия дождаться хорошей работающей версии замечательна, но в случае the_router можно и не дождаться, т.к. просто новые версии не увидят свет, меня ведь никто не спонсирует, армии тестировщиков у меня тоже нет. Т.е. бесплатная версия она не может быть бесплатной, так или иначе кто-то за нее в том или ином виде должен заплатить, тестированием, участием, железками или еще чем-то. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 16 декабря, 2016 · Жалоба https://github.com/Gandi/packet-journey Бондинг можно легко дописать. Его умеет сам DPDK. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 16 декабря, 2016 · Жалоба https://wiki.fd.io/view/VPP Тоже на DPDK. В каком-то виде используется в софтовых цисковских роутерах. В том, что отдали в open source есть NAT и ipfix неизвестного уровня стабильности. В части интеграции с userspace можно посмотреть этот проект из SB: https://wiki.fd.io/view/VPP_Sandbox/router Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 16 декабря, 2016 · Жалоба 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 устройствах. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 16 декабря, 2016 · Жалоба VPP - очень крутой проект. Но в их доках черт ногу сломит. Такой аккуратности и доступной документации как у DPDK там, к сожалению, даже близко нет. Используют DPDK только для доступа к железу, высокоуровневые DPDK библиотеки типа LPM вообще не используют. Очень интересная про них статья тут http://blogs.cisco.com/sp/a-bigger-helping-of-internet-please Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 16 декабря, 2016 · Жалоба высокоуровневые DPDK библиотеки типа LPM вообще не используют. Да, все верно. Идея batching-а пакетов для оптимизации использования D- и I- кеша процессора появилась в недрах Cisco задолго до DPDK. У Dave Barach даже патент есть, он кстати и руководит open source проектом. https://www.google.ch/patents/US7961636 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 16 декабря, 2016 · Жалоба высокоуровневые 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 и т.п. уж точно до них появились, это тоже часть их патента? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 16 декабря, 2016 · Жалоба https://github.com/Gandi/packet-journey Интересно будет взглянуть на исходники. Спасибо за ссылку. Как быстро он решил проблему c ARP, просто все в линукс отправляет. Я честно реализовал свой arp движок. В качестве бонуса я могу создавать тысячи виртуальных интерфейсов, не напрягая ядро linux. И как следствие в качестве возможного направления развития думал о простом брасе: прикрутить аля cisco dhcp helper, raduis для авторазиции и резалку скорости. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 17 декабря, 2016 · Жалоба В качестве бонуса я могу создавать тысячи виртуальных интерфейсов, не напрягая ядро linux. Достаточно усилий приложено в последние годы, чтобы масштабировать ядро для работы с тысячими интерфейсов (речь шла, насколько я помню, о скорости их создания/удаления, изначально с этим были большие проблемы). Мне кажется, что наиболее правильно делает 6WIND со своим коммерческим Virtual Accelerator. Он максимально прозрачен для ядра и остального userspace. В стиле: вот у тебя настроенный Linux-роутер, который пропускает около 8 Mpps в секунду в режиме forwarding, и вот ты запускаешь их решение и он уже позволяет пропустить 80 Mpps. Красота. В демонстрации можно увидеть идею, если присмотреться Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 17 декабря, 2016 · Жалоба В качестве бонуса я могу создавать тысячи виртуальных интерфейсов, не напрягая ядро linux. Достаточно усилий приложено в последние годы, чтобы масштабировать ядро для работы с тысячими интерфейсов (речь шла, насколько я помню, о скорости их создания/удаления, изначально с этим были большие проблемы). Одно дело быстро создавать, совсем другое гонять в них данные из юзер спейса. В демонстрации можно увидеть идею, если присмотреться Конечно идея красивая. Но спускаясь на землю, в этом демо, похоже, просто форвардинг. Про NAT у них написано, что поддерживается. Но я верю тестам. С появлением WARP17 протестировать сколько может выжать NAT или просто conntrack стало элементарно и наглядно: вот кол-во одновременных сессий, вот скорость их создания, вот общий пакетрейт. У кого-нибудь реально использует их акселератор? Какие впечатления? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 17 декабря, 2016 (изменено) · Жалоба Virtual Accelerator - это не вещь для конечных пользователей. 6WIND производит софт для... производителей ПО! То есть они своего рода сугубо вендор библиотеки, на которой в свою очередь сильные мира сего пишут свое ПО. Подозреваю, цена там заоблачная, так как в свое время без личной встречи её называть отказались. Если же интересно, сколько на таком можно заработать, то просто возьмите цену Б/У MX80 или чего-либо из цисок, это именно тот класс дивайсов, с которым вы пытаетесь конкурировать. А они я скажу очень фичастые. Изменено 17 декабря, 2016 пользователем pavel.odintsov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...