kisa Опубликовано 20 декабря, 2016 · Жалоба А что кстати на тему поддержки NAT helpers для ftp, sip и pptp? ftp и sip никому не сдались. вот pptp нужен. Когда дойдет до боевого применения я напишу. Сейчас другие задачи. реассемблинга IPv4 фрагментов? Сообщение отредактировал pavel.odintsov: Сегодня, 03:50 сборка пакетов есть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 20 декабря, 2016 · Жалоба Потом блокировка, которую вы начали обсуждать, защищает список, который носит вспомогательный характер и не участвует в так называемом fast path. Эта блокировка очень короткая по времени, что в сочетании со spinlock реализацией влияет, но не думаю, что критично на производительность, иначе бы тесты warp17 не проходили. А в них скорость создания сессий была приличная. CPS - это один из ключевых параметров NAT. Не столь дорога работа с десятками млн сессий, как скорость создания и удаления этих сессий. Насколько я помню, раньше в DPDK каждый mutex стоил 400ns, с вытекающими последствиями для воркеров. Если я не ошибаюсь, в том же линуксе, в свежих версиях достаточно замороченный механизм добавления записей, через rhashtable, очень схожий с тем, что описал Ivan_83, там так сделано не в целях повышения производительности NAT forwarding, имхо этого все равно недостаточно для высокого CPS. Исходя из этого, чтобы избежать гонок (race/contention) во время добавления сессии, вместо одного списка нужно использовать N списков, где N количество рабочих потоков (lcore). Каждый поток будет сохранять свои сессии в свой список. Таким образом race/contention будет исключен, т.к. потоки не будут соперничать за один и тот же список. Что-то мне подсказывает, что это не самый удачный подход, но чтоб основательно аргументировать - это надо прокрутить в мозгах все худшие варианты. О многом говорить рано, вдруг действительно mutex не проблема и даже хеш будет работать хорошо. Будет закрытый софт - будут дурачки на себе откатывать теории(ибо запускать в надежде на лучшее, без гарантий, бинарник для одной из самых важных точек в сети может только такой человек), будет опенсорс - будут это же делать просто сумасшедшие люди, но возможно предварительно прогнав тесты. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nshut Опубликовано 20 декабря, 2016 (изменено) · Жалоба Что то далеко от темы ушли все. Я же лично думаю, что процессоры замерли в своей производительности, а сетевые потребности растут. Любая новая идея и продукт требует как минимум внимания. А дальнейшая разработка, поддержка и оплата, это уже дело автора, ну и в конце концов любой код станет опенсорсом или кто-то догадается повторить тоже самое в опен сорс, те же китайцы :) Если я не ошибаюсь, в том же линуксе, в свежих версиях достаточно замороченный механизм добавления записей, через rhashtable, очень схожий с тем, что описал Ivan_83, там так сделано не в целях повышения производительности NAT forwarding, имхо этого все равно недостаточно для высокого CPS. Что то они там перемудрили сильно, на тестах отказался в пользу 3 ядра, рхашинг ната при определенных условиях проц укладывал. Все, почему то прицепились к хашам ната, он не требовательный, посмотрите перф топ. Глобальная проблема как мне кажется все-таки отправка пакетов и разброс их в qdisc в очереди, вот если этот процесс избавить от локов, тогда и роутинг и фул стейты заживут (в текущем линуксе), а да, как раз фул стейты кушают процессорное время по более поиска и всего остального, а избавится от них можно отказавшись от фулстейт и только. Возможно превратить контрак в разные инстансы на процессоры с прибиваниям к очередям и есть альтернативное решение, но опять же исходники кто видел, знает, проще написать с нуля, а если это будет работать, то pptp и другие плюшки вопрос только времени. Изменено 20 декабря, 2016 пользователем nshut Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 20 декабря, 2016 · Жалоба А я бы заплатил (вменяемую сумму) за Софт-Брас который умеет все тоже самое как SmartEdge :) Без шуток :) Разумеется с производительностью на уровне возможностей железа. Но все пилят роутеры и Наты. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 20 декабря, 2016 (изменено) · Жалоба CPS - это один из ключевых параметров NAT. Не столь дорога работа с десятками млн сессий, как скорость создания и удаления этих сессий. А можете поделиться этими цифрами, я у себя на сети такую статистику не собираю, но тоже включу. Насколько я помню, раньше в DPDK каждый mutex стоил 400ns DPDK здесь не причем. Все что часть NPF - это обычная библиотека. Я включил использование spinlock везде где используются блокировки. Там совсем другие цифры. Потом, даже самый сложны mutex почти ничего не стоит в отсутсвии contenshion. Про это хорошо написано в статье выше, я приводил ссылку. Если я не ошибаюсь, в том же линуксе, в свежих версиях достаточно замороченный механизм добавления записей, через rhashtable, очень схожий с тем, что описал Ivan_83, там так сделано не в целях повышения производительности NAT forwarding, имхо этого все равно недостаточно для высокого CPS. Вот вы начали сравнивать теплое с мягким: механизм добавления conntrack сессии в главную базу для последующего поиска - в линуксе это классический hash, где бакет - это линкованный список и NPF второстепенный механизм добавления сессии в список, который даже не используется в поиске и почти в работе. Чтобы сравнивать корректно, смотрите в NPF код работы с сессиями, как они ищутся, как добавляются. Это совсем другой код. Так ключевой момент cuckoo hash. Изменено 20 декабря, 2016 пользователем kisa Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 20 декабря, 2016 · Жалоба А я бы заплатил (вменяемую сумму) за Софт-Брас который умеет все тоже самое как SmartEdge :) Без шуток :) Разумеется с производительностью на уровне возможностей железа. Но все пилят роутеры и Наты. Движение в сторону простых функций софт браса было у меня как один из вариантов развития. А какой список минимальных фич для вас это уже брас? Раутер - это база, без которой дальше не продвинуться. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 20 декабря, 2016 · Жалоба Все, почему то прицепились к хашам ната, он не требовательный, посмотрите перф топ Вот top. Это warp17 прогоняет миллион сессий через linux. Сессий не просто 1M, они постоянно создаются и умирают. К сожалению CPS не скажу, вот не записал. Но судя по всему очень приличный, т.к. размер tcp сессии был 64 байта. Т.е. фактические открытие чуть чуть данных и сразу закрытие. Это ровно тот же тест, который я у себя описал для the_router. Все конфиги у меня на странице. Лабу легко повторить. PerfTop: 23344 irqs/sec kernel:99.8% exact: 0.0% [4000Hz cycles], (all, 6 CPUs) ----------------------------------------------------------------------------------------------------------------------------------------------------- 19.83% [kernel] [k] __nf_conntrack_find_get 6.80% [kernel] [k] _raw_spin_lock 6.77% [kernel] [k] fib_table_lookup 4.31% [kernel] [k] nf_iterate 3.59% [kernel] [k] ipt_do_table 3.45% [kernel] [k] nf_nat_ipv4_fn 3.06% [ixgbe] [k] ixgbe_clean_rx_irq 3.02% [kernel] [k] swiotlb_sync_single 2.96% [kernel] [k] __inet_lookup_established Так вот - поиск по хэшу ключевой момент. Если не оптимизировать длину хэша, то начинался ужас ужас. Но даже с оптимальной длиной бакета, когда в нем всего несколько записей (в идеале парочка) вот такая картина. Возможно, я что-то упустил в настройках линукса. Если кто возьмется подсказать, я могу погонять тесты еще. С cuckoo же hashaми в the_router картинка абсолютно другая. Там хэш постоянно сам себе перестраивает, оптимально распределяя данные по бакетам. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 20 декабря, 2016 · Жалоба Движение в сторону простых функций софт браса было у меня как один из вариантов развития. А какой список минимальных фич для вас это уже брас? Раутер - это база, без которой дальше не продвинуться. просто опишу, что нужно для замены smartedge: - создание сессии по разным событиям, l2/l3 dhcp (mac/opt82), unkonw ip address, vlan. - ну соответственно терминация/маршрутизация l2 клиентов (vlan, qinq vlan) - dhcp сервер, с выдачей адреса клиенту по radius-аттрибутам - резалка скорости - l4 редирект, причем по url а не next-hop - acl на сессию ну и разумеется управление всем этим через radius Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 20 декабря, 2016 · Жалоба О многом говорить рано, вдруг действительно mutex не проблема и даже хеш будет работать хорошо. очень рано, тем более тесты подтверждают это. Будет закрытый софт - будут дурачки на себе откатывать теории(ибо запускать в надежде на лучшее, без гарантий, бинарник для одной из самых важных точек в сети может только такой человек), будет опенсорс - будут это же делать просто сумасшедшие люди, но возможно предварительно прогнав тесты. Вот вы тестите linux новые ядра, находите что они падают и не стабильны. Другие делают тоже самое - и все сумасшедшие? Не нужно тестировать сразу на тысячах пользователей, я вот на днях соберу тазик с the_router и поставлю вместо домашнего микротика, приятно будет чуствовать, что под капотом 6Mpps, стоя в интернет пробке. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 20 декабря, 2016 · Жалоба просто опишу, что нужно для замены smartedge: - создание сессии по разным событиям, l2/l3 dhcp (mac/opt82), unkonw ip address, vlan. - ну соответственно терминация/маршрутизация l2 клиентов (vlan, qinq vlan) - dhcp сервер, с выдачей адреса клиенту по radius-аттрибутам - резалка скорости - l4 редирект, причем по url а не next-hop - acl на сессию ну и разумеется управление всем этим через radius Принято. Спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SABRE Опубликовано 20 декабря, 2016 · Жалоба просто опишу, что нужно для замены smartedge: - создание сессии по разным событиям, l2/l3 dhcp (mac/opt82), unkonw ip address, vlan. - ну соответственно терминация/маршрутизация l2 клиентов (vlan, qinq vlan) - dhcp сервер, с выдачей адреса клиенту по radius-аттрибутам - резалка скорости - l4 редирект, причем по url а не next-hop - acl на сессию ну и разумеется управление всем этим через radius accel-ppp Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 20 декабря, 2016 · Жалоба Вот вы тестите linux новые ядра, находите что они падают и не стабильны. Другие делают тоже самое - и все сумасшедшие? Не нужно тестировать сразу на тысячах пользователей, я вот на днях соберу тазик с the_router и поставлю вместо домашнего микротика, приятно будет чуствовать, что под капотом 6Mpps, стоя в интернет пробке. Ядро - классический опенсорс с огромным коммьюнити, с очень детальным changelog и историей изменений в git. Более того, там присутствует проверка всех патчей мейнтейнерами, есть какое-никакое тестирование, и всегда можно подождать до первой версии -stable, где пофиксят возникшие в первом релизе серьезные проблемы. И я всегда могу откатится на другое ядро или же откатить нестабильные коммиты, если мне нужен какой-то другой функционал из нового ядра. Плюс наработал кучу своих патчей, которые в mainline наврядли когда-то примут, они им там не нужны. С опенсорсным путем у вас такая же перспектива думаю есть, особенно если будут зарубежные пользователи. А вместо микротика даже закрытая - вполне пойдет, Микротик вот именно та самая коробка, которую ставить может только небольшая сеть, у которой на другое просто нет денег. Ибо с каждой новой версией у них новые глюки, и подобрать что-то стабильно работающее крайне сложно, везде какие-то плюхи. В итоге приходится разносить функционал и нагружать по минимуму, тогда более-менее сносно работает. Ну и классический пример отвратительного саппорта, любой трудноотлавливаемый баг будет висеть месяцами. Только вот нужно понимать, что пользователи Микротика за каждую копейку удавятся :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 20 декабря, 2016 · Жалоба А вместо микротика даже закрытая - вполне пойдет, Микротик вот именно та самая коробка, которую ставить может только небольшая сеть, у которой на другое просто нет денег. Ибо с каждой новой версией у них новые глюки, и подобрать что-то стабильно работающее крайне сложно, везде какие-то плюхи. В итоге приходится разносить функционал и нагружать по минимуму, тогда более-менее сносно работает. Ну и классический пример отвратительного саппорта, любой трудноотлавливаемый баг будет висеть месяцами. Только вот нужно понимать, что пользователи Микротика за каждую копейку удавятся :) Да я о том, что я тестировать начну, а не о микротике (на месте микротика дома у меня бывают другие железки), да вообще не о нем речь. И я о том, что вот с такого тестирования мне хотелось начать: один два, десяток пользователей, постепенно увеличивая нагрузку. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 20 декабря, 2016 · Жалоба реассемблинга IPv4 фрагментов Зачем это нату и роутеру? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 20 декабря, 2016 · Жалоба Да я о том, что я тестировать начну, а не о микротике (на месте микротика дома у меня бывают другие железки), да вообще не о нем речь. И я о том, что вот с такого тестирования мне хотелось начать: один два, десяток пользователей, постепенно увеличивая нагрузку. Ну, даже у меня наверное найдется клиент, который пойдет на какую-то долю риска ради экономии, из небольших. Правда только вспомнилось, у них куда не глянь r8169, multiqueue сетевухи днем с огнем не найти. Но я участвую только в opensource. Платный/закрытый софт только по нужде, и бизнес необходимости. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 20 декабря, 2016 · Жалоба реассемблинга IPv4 фрагментов Зачем это нату и роутеру? Раутеру не обязательно. А nat, если не это простая статика, выполняется на основе отслеживания состояния сессий (tcp, udp или каких-либо еще). Фрагмент невозможно отнести к сессии, в нем только ip заголовок. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kisa Опубликовано 21 декабря, 2016 · Жалоба просто опишу, что нужно для замены smartedge: - создание сессии по разным событиям, l2/l3 dhcp (mac/opt82), unkonw ip address, vlan. - ну соответственно терминация/маршрутизация l2 клиентов (vlan, qinq vlan) - dhcp сервер, с выдачей адреса клиенту по radius-аттрибутам - резалка скорости - l4 редирект, причем по url а не next-hop - acl на сессию ну и разумеется управление всем этим через radius А если рассмотреть совсем минимальную версию, пускай еще не боевую с полным набором фич на все случаи, но для замены какую-нибудь конкретной инсталляции или специально созданной новой тестовой инсталляции: >> - создание сессии по разным событиям, l2/l3 dhcp (mac/opt82), unkonw ip address, vlan. какой из эти вариантов самый распространенный? можно начать с самого простого unclassified ip address или vlan? >> - dhcp сервер, с выдачей адреса клиенту по radius-аттрибутам т.е. dhcp сервер общается с базой по радиусу и где-то есть radius сервер один или несколько, объединенных в кластер. тогда, самым простым решением, на мой взгляд, было бы добавить dhcp relay на брас и отдельное dhcp решение для сервера, живущее в кластере рядом с radius. - l4 редирект, причем по url а не next-hop а почему по url, чем плох next-hop? - acl на сессию насколько сложный нужен acl? базовые протоколы и порты? или что-нибудь аля лимита сессий в ед. времени? лимита определенных пакетов в ед.времени? >> ну и разумеется управление всем этим через radius dhcp через радус, ааа через радиус, а еще что через радиус, acl? вы используете nat на брасах? или nat где-то отдельно. какой вариант экспорта статистики, netflow? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 21 декабря, 2016 · Жалоба Лучше уж сразу шаблонизированный IPFIX, Netflow устарел. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 21 декабря, 2016 · Жалоба А можете поделиться этими цифрами, я у себя на сети такую статистику не собираю, но тоже включу. Около 15-18k, но сейчас уже где-то 50% от ЧНН и нет никаких экстремальных нагрузок (бывает выходят кривые приложения и т.п., которые могут пофлудить на нат) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...