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

А что кстати на тему поддержки NAT helpers для ftp, sip и pptp?

ftp и sip никому не сдались.

вот pptp нужен. Когда дойдет до боевого применения я напишу. Сейчас другие задачи.

 

реассемблинга IPv4 фрагментов?

Сообщение отредактировал pavel.odintsov: Сегодня, 03:50

сборка пакетов есть.

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


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

Потом блокировка, которую вы начали обсуждать, защищает список, который носит вспомогательный характер и не участвует в так называемом fast path. Эта блокировка очень короткая по времени,

что в сочетании со spinlock реализацией влияет, но не думаю, что критично на производительность, иначе бы тесты warp17 не проходили. А в них скорость создания сессий была приличная.

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

Насколько я помню, раньше в DPDK каждый mutex стоил 400ns, с вытекающими последствиями для воркеров.

Если я не ошибаюсь, в том же линуксе, в свежих версиях достаточно замороченный механизм добавления записей, через rhashtable, очень схожий с тем, что описал Ivan_83, там так сделано не в целях повышения производительности NAT forwarding, имхо этого все равно недостаточно для высокого CPS.

 

Исходя из этого, чтобы избежать гонок (race/contention) во время добавления сессии, вместо одного списка нужно использовать N списков, где N количество рабочих потоков (lcore).

Каждый поток будет сохранять свои сессии в свой список. Таким образом race/contention будет исключен, т.к. потоки не будут соперничать за один и тот же список.

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

 

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

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


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

Что то далеко от темы ушли все. Я же лично думаю, что процессоры замерли в своей производительности, а сетевые потребности растут. Любая новая идея и продукт требует как минимум внимания. А дальнейшая разработка, поддержка и оплата, это уже дело автора, ну и в конце концов любой код станет опенсорсом или кто-то догадается повторить тоже самое в опен сорс, те же китайцы :)

Если я не ошибаюсь, в том же линуксе, в свежих версиях достаточно замороченный механизм добавления записей, через rhashtable, очень схожий с тем, что описал Ivan_83, там так сделано не в целях повышения производительности NAT forwarding, имхо этого все равно недостаточно для высокого CPS.

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

Все, почему то прицепились к хашам ната, он не требовательный, посмотрите перф топ. Глобальная проблема как мне кажется все-таки отправка пакетов и разброс их в qdisc в очереди, вот если этот процесс избавить от локов, тогда и роутинг и фул стейты заживут (в текущем линуксе), а да, как раз фул стейты кушают процессорное время по более поиска и всего остального, а избавится от них можно отказавшись от фулстейт и только. Возможно превратить контрак в разные инстансы на процессоры с прибиваниям к очередям и есть альтернативное решение, но опять же исходники кто видел, знает, проще написать с нуля, а если это будет работать, то pptp и другие плюшки вопрос только времени.

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

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


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

А я бы заплатил (вменяемую сумму) за Софт-Брас который умеет все тоже самое как SmartEdge :) Без шуток :)

Разумеется с производительностью на уровне возможностей железа.

Но все пилят роутеры и Наты.

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


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

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

А можете поделиться этими цифрами, я у себя на сети такую статистику не собираю, но тоже включу.

 

Насколько я помню, раньше в DPDK каждый mutex стоил 400ns

DPDK здесь не причем. Все что часть NPF - это обычная библиотека. Я включил использование spinlock везде где используются блокировки. Там совсем другие

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

 

Если я не ошибаюсь, в том же линуксе, в свежих версиях достаточно замороченный механизм добавления записей, через rhashtable, очень схожий с тем, что описал Ivan_83, там так сделано не в целях повышения производительности NAT forwarding, имхо этого все равно недостаточно для высокого CPS.

Вот вы начали сравнивать теплое с мягким: механизм добавления conntrack сессии в главную базу для последующего поиска - в линуксе это классический hash, где бакет - это линкованный список и NPF второстепенный механизм добавления сессии в список, который даже не используется в поиске и почти в работе.

 

Чтобы сравнивать корректно, смотрите в NPF код работы с сессиями, как они ищутся, как добавляются. Это совсем другой код. Так ключевой момент cuckoo hash.

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

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


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

А я бы заплатил (вменяемую сумму) за Софт-Брас который умеет все тоже самое как SmartEdge :) Без шуток :)

Разумеется с производительностью на уровне возможностей железа.

Но все пилят роутеры и Наты.

 

Движение в сторону простых функций софт браса было у меня как один из вариантов развития.

А какой список минимальных фич для вас это уже брас?

 

Раутер - это база, без которой дальше не продвинуться.

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


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

Все, почему то прицепились к хашам ната, он не требовательный, посмотрите перф топ

 

Вот 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 картинка абсолютно другая. Там хэш постоянно сам себе перестраивает, оптимально распределяя данные

по бакетам.

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


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

Движение в сторону простых функций софт браса было у меня как один из вариантов развития.

А какой список минимальных фич для вас это уже брас?

Раутер - это база, без которой дальше не продвинуться.

просто опишу, что нужно для замены smartedge:

- создание сессии по разным событиям, l2/l3 dhcp (mac/opt82), unkonw ip address, vlan.

- ну соответственно терминация/маршрутизация l2 клиентов (vlan, qinq vlan)

- dhcp сервер, с выдачей адреса клиенту по radius-аттрибутам

- резалка скорости

- l4 редирект, причем по url а не next-hop

- acl на сессию

ну и разумеется управление всем этим через radius

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


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

О многом говорить рано, вдруг действительно mutex не проблема и даже хеш будет работать хорошо.

очень рано, тем более тесты подтверждают это.

 

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

Вот вы тестите linux новые ядра, находите что они падают и не стабильны. Другие делают тоже самое - и все сумасшедшие? Не нужно тестировать сразу на тысячах пользователей,

я вот на днях соберу тазик с the_router и поставлю вместо домашнего микротика, приятно будет чуствовать, что под капотом 6Mpps, стоя в интернет пробке.

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


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

просто опишу, что нужно для замены smartedge:

- создание сессии по разным событиям, l2/l3 dhcp (mac/opt82), unkonw ip address, vlan.

- ну соответственно терминация/маршрутизация l2 клиентов (vlan, qinq vlan)

- dhcp сервер, с выдачей адреса клиенту по radius-аттрибутам

- резалка скорости

- l4 редирект, причем по url а не next-hop

- acl на сессию

ну и разумеется управление всем этим через radius

 

Принято. Спасибо.

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


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

просто опишу, что нужно для замены smartedge:

- создание сессии по разным событиям, l2/l3 dhcp (mac/opt82), unkonw ip address, vlan.

- ну соответственно терминация/маршрутизация l2 клиентов (vlan, qinq vlan)

- dhcp сервер, с выдачей адреса клиенту по radius-аттрибутам

- резалка скорости

- l4 редирект, причем по url а не next-hop

- acl на сессию

ну и разумеется управление всем этим через radius

accel-ppp

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


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

Вот вы тестите linux новые ядра, находите что они падают и не стабильны. Другие делают тоже самое - и все сумасшедшие? Не нужно тестировать сразу на тысячах пользователей,

я вот на днях соберу тазик с the_router и поставлю вместо домашнего микротика, приятно будет чуствовать, что под капотом 6Mpps, стоя в интернет пробке.

Ядро - классический опенсорс с огромным коммьюнити, с очень детальным changelog и историей изменений в git. Более того, там присутствует проверка всех патчей мейнтейнерами, есть какое-никакое тестирование, и всегда можно подождать до первой версии -stable, где пофиксят возникшие в первом релизе серьезные проблемы. И я всегда могу откатится на другое ядро или же откатить нестабильные коммиты, если мне нужен какой-то другой функционал из нового ядра.

Плюс наработал кучу своих патчей, которые в mainline наврядли когда-то примут, они им там не нужны.

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

 

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

Только вот нужно понимать, что пользователи Микротика за каждую копейку удавятся :)

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


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

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

Только вот нужно понимать, что пользователи Микротика за каждую копейку удавятся :)

Да я о том, что я тестировать начну, а не о микротике (на месте микротика дома у меня бывают другие железки), да вообще не о нем речь.

И я о том, что вот с такого тестирования мне хотелось начать: один два, десяток пользователей, постепенно увеличивая нагрузку.

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


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

реассемблинга IPv4 фрагментов

Зачем это нату и роутеру?

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


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

Да я о том, что я тестировать начну, а не о микротике (на месте микротика дома у меня бывают другие железки), да вообще не о нем речь.

И я о том, что вот с такого тестирования мне хотелось начать: один два, десяток пользователей, постепенно увеличивая нагрузку.

Ну, даже у меня наверное найдется клиент, который пойдет на какую-то долю риска ради экономии, из небольших. Правда только вспомнилось, у них куда не глянь r8169, multiqueue сетевухи днем с огнем не найти.

Но я участвую только в opensource. Платный/закрытый софт только по нужде, и бизнес необходимости.

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


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

реассемблинга IPv4 фрагментов

Зачем это нату и роутеру?

Раутеру не обязательно. А nat, если не это простая статика, выполняется на основе отслеживания состояния сессий (tcp, udp или каких-либо еще). Фрагмент невозможно отнести к сессии, в нем только ip заголовок.

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


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

просто опишу, что нужно для замены 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?

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


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

Лучше уж сразу шаблонизированный IPFIX, Netflow устарел.

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


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

А можете поделиться этими цифрами, я у себя на сети такую статистику не собираю, но тоже включу.

Около 15-18k, но сейчас уже где-то 50% от ЧНН и нет никаких экстремальных нагрузок (бывает выходят кривые приложения и т.п., которые могут пофлудить на нат)

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


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

Join the conversation

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

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

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

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

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

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

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