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

Вопрос к Линуксоводам Выбор сервера для NAT-а

Коллеги,

 

встал вопрос о покупке нового пограничного маршрутизатора для осуществления функции NAT-а а также BGP.

 

Недавно Интел выпустил новую линейку серверных платформ SR2600 и SR1600.

 

С покупкой я уже в общем-то определился, вопрос стоит за выбором пары CPU.

 

Дело в том, что новая линейка Xeon-ов отличается производительностью шины памяти.

 

Я выбираю между E5530 (шина памяти работает на частоте 1066MHz)

и X5550 (шина памяти на частоте 1333MHz).

 

Цена на данные процессоры отличается в 2 раза. Разница в производительности самих камней - около 10%. Разница в подсистеме памяти - 30%.

 

Вопрос в том, есть ли смысл переплачивать?

 

Вот я озадачился этим вопросом и никак не могу понять, как мне посмотреть степень загрузки шины памяти на существующем роутере. Я не знаю для этого ни одной подходящей диагностической утилиты. Утилиты, показывающие степень загрузки памяти мне не подходят, мне нужна именно утилита показывающая количество обращений к оперативной памяти на чтение/запись. Причём желательно не в единицах, а в гигабайтах в секунду

 

Вопрос встал из-за того, что совершенно не представляю, насколько интенсивно используется оперативная память в процессе connection-tracking а также routing-а (с учётом, что это BGP и несколько full-view).

 

Просьба либо подсказать диагностическую утилиту,

либо поделиться своими знаниями о том, насколько высокие требования к подсистеме памяти предъявляет процесс маршрутизации и netfilter с conntrack.

 

 

И ещё, отдельный вопрос:

Есть ли у кого опыт работы подобной платформы с сетевыми адаптерами 10G? Что посоветуете выбрать в качестве адаптера? Есть ли смысл переплачивать за хорошую сетевуху и насколько много стоит переплачивать?

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


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

NAT для системы - это не нагрузка. 1500 пользователей с натом на несколько сетей старенький Xeon (модель не скажу, но вероятно 5504) тянет вообще не замечая. Всем всего хватает. При этом, аппарат имеет 100 мбит в инет и 1 Гбит в другие сети. Недавно возникали вопросы относительно количества отслеживаемых коннтреком соединений, но лечатся они обновлением значений в /proc. Формулы рассчетов значений в инете найти можно. Я так думаю, какой-нибудь Celeron 300 тоже потянул бы. Помнится, 300 человек через Pentium 133 работали, только внешний канал был 4 мбит :)

Смущает другое - что такое "несколько full-view"? Если я не ошибаюсь, full-view может быть только один и ни один сервер его в любом случае не вытянет. Ну или вытянет, если админов устроит несколько минут задержки на выполнение консольных команд :)

Вобщем-то, сразу же возникает вопрос - зачем вам все(!) маршруты всех сетей в мире? Если ваша компания раздает инет на всю Россию, то понятно, но в таком случае не может идти речи о пограничном сервере на лине. Если же не раздает, то full-view вам вообще не нужен. Ну а ~3000 маршрутов наш сервак вытянул даже не заметив. Правда, после этого фильтрацию в BGP мы таки включили :)

По поводу 10G не скажу - не работал. Надобность такой железяки за её деньги вобще-то тоже под вопросом.

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


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

NAT для системы - это не нагрузка. 1500 пользователей с натом на несколько сетей старенький Xeon (модель не скажу, но вероятно 5504) тянет вообще не замечая. Всем всего хватает. При этом, аппарат имеет 100 мбит в инет и 1 Гбит в другие сети. Недавно возникали вопросы относительно количества отслеживаемых коннтреком соединений, но лечатся они обновлением значений в /proc. Формулы рассчетов значений в инете найти можно. Я так думаю, какой-нибудь Celeron 300 тоже потянул бы. Помнится, 300 человек через Pentium 133 работали, только внешний канал был 4 мбит :)

Смущает другое - что такое "несколько full-view"? Если я не ошибаюсь, full-view может быть только один и ни один сервер его в любом случае не вытянет. Ну или вытянет, если админов устроит несколько минут задержки на выполнение консольных команд :)

Вобщем-то, сразу же возникает вопрос - зачем вам все(!) маршруты всех сетей в мире? Если ваша компания раздает инет на всю Россию, то понятно, но в таком случае не может идти речи о пограничном сервере на лине. Если же не раздает, то full-view вам вообще не нужен. Ну а ~3000 маршрутов наш сервак вытянул даже не заметив. Правда, после этого фильтрацию в BGP мы таки включили :)

По поводу 10G не скажу - не работал. Надобность такой железяки за её деньги вобще-то тоже под вопросом.

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

 

 

На вид - вытягивает, одно фв нормальное, одно кастрированное на /24 (у аплинка там цыска не вытягивает, видимо :))

 

# sh ip bgp sum
..........................
RIB entries 520733, using 48 MiB of memory
..........................

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down      State/PfxRcd
***********   4 **** ******  ******        *      *       *       *****   131454
***********   4 **** ******  ******        *      *       *       *****   280647

 

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


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

NAT для системы - это не нагрузка.

Не соглашусь,

ещё какая нагрузка и не сам по себе NAT, а скорее conntrack.

 

1500 пользователей с натом на несколько сетей старенький Xeon (модель не скажу, но вероятно 5504) тянет вообще не замечая.

В моём случае в 5 раз больше, и 2x Xeon-а 2.80GHz предыдущей линейки уже на пределе.

 

Всем всего хватает. При этом, аппарат имеет 100 мбит в инет и 1 Гбит в другие сети.

У меня нагрузка значительно выше, поэтому и задаю этот вопрос.

 

Недавно возникали вопросы относительно количества отслеживаемых коннтреком соединений,

 

Не,.. мой вопрос не в этом. А именно в аппаратной части, насколько пропуск больших объёмов трафика требует быстрой памяти.

 

Смущает другое - что такое "несколько full-view"?

Несколько подключения к upstream-ам, от каждого получаю full-view. Всё это храниться в памяти и выбирается best route по каждому префиксу.

 

Если я не ошибаюсь, full-view может быть только один и ни один сервер его в любом случае не вытянет.

Напротив, особых требований к серверу это не влечёт. Вот циски некоторые не любят несколько full-view держать. Или D-Link-и, которые с поддержкой BGP (типа 3610).

А в quagga хоть 10 апстримов добавляй.

 

Ну или вытянет, если админов устроит несколько минут задержки на выполнение консольных команд :)

Не знаю, о каких задержках речь, у меня любая команда на консоли quagga занимает доли секунд. Самая длинная команда cl ip bgp * so out занимает несколько секунд, а дальше процесс bgpd "молотит" в офлайне новые префиксы, не пожерая при этом каких-то запредельных ресурсов.

 

Вобщем-то, сразу же возникает вопрос - зачем вам все(!) маршруты всех сетей в мире?

Вы, если не секрет, вообще BGP используете?

 

Ну а ~3000 маршрутов наш сервак вытянул даже не заметив.

А разве общее количество маршрутов в общей таблице хоть как-то тормозит сервер?

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


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

А разве общее количество маршрутов в общей таблице хоть как-то тормозит сервер?
Для каждого пакетика надо выбрать 1 из 280 000 маршрутов, фигня какая.

 

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


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

А разве общее количество маршрутов в общей таблице хоть как-то тормозит сервер?
Для каждого пакетика надо выбрать 1 из 280 000 маршрутов, фигня какая.

Пока radix tree влезает в L2 cache - фигня.

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


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

А линух уже залез на дерево?

Чето рядом с "radix tree routing" какието непонятные слова "FreeBSD Operating System" "Berkeley Unix" "Mac OS X" "BSD-Reno" а линуха нигде не видно.

 

И 3 метра кеша под таблицу роутинга тоже немало.

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


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

А разве общее количество маршрутов в общей таблице хоть как-то тормозит сервер?
Для каждого пакетика надо выбрать 1 из 280 000 маршрутов, фигня какая.

http://www.google.com/search?hl=ru&cli...1%D0%BA&lr=

 

На практике 280k маршрутов в таблице никак не сказываются на производительности машины, обрабатывающий трафик тысяч пользователей в ЧНН.

 

Проверял по сравнению с пустой таблицей с default маршрутом

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


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

А линух уже залез на дерево?

Залезет если CONFIG_IP_FIB_TRIE=y

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


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

Как много изменилось за пять лет :)

Помнится, народ загонял в квагу full-view. Потом 15 минут ssh-ем на сервер заходил. Тоже ксеон :)

 

В моём случае в 5 раз больше, и 2x Xeon-а 2.80GHz предыдущей линейки уже на пределе

В 5 раз больше народу должны приносить в ~5 раз больше денег. В наших условиях это около $70000+ в месяц. Странно, что всех всё еще пытаются загнать через один линуховый сервер. Раз уж требуется подешевле, то поставить более одного сервера - пущай себе натят и отправляют на маршрутизатор.

 

Вы, если не секрет, вообще BGP используете?

Вообще используеем. Два аплинка. От каждого приезжает некоторое количество маршрутов. Схема достаточно стандартная - основной канал, резервный канал и несколько сетей, которые анонсируются от каждого аплинка. Всего около 100 маршрутов.

Просто нам не особо интересно, через какое место пойдет пакет от AOL к Telecom New Zealand Ltd :)

 

Я так понимаю, в вашем случае - это не основной и резервные каналы?

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


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

а вот завтра у ваших клиентов аська начнет лагать на основном канале... и будете изобретать костыли? ;)

 

стоит вот у меня роутер... 2 fv. LA выше 1 - это что то редкое... причем очень редкое...

а под натом машинки (8 впн серверов) прогибаются... Не сильно, по 5 минут ссш не хожу, но нагрузка там чувствуется...

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


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

Пока radix tree влезает в L2 cache - фигня.
jab - так это сиськи используют процессоры где можно запхнуть любой блок данных в кеш и закрепить там.

 

А у интелей в лучшем случае prefetchnta/prefetcht*, и то - "хочу сделаю, не хочу не сделаю". Плюс гемморой с cache lines, и еще кучей всякой требухи.

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

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


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

Как много изменилось за пять лет :)

Помнится, народ загонял в квагу full-view. Потом 15 минут ssh-ем на сервер заходил. Тоже ксеон :)

Видимо, это было очень давно.

 

В 5 раз больше народу должны приносить в ~5 раз больше денег. В наших условиях это около $70000+ в месяц. Странно, что всех всё еще пытаются загнать через один линуховый сервер. Раз уж требуется подешевле, то поставить более одного сервера - пущай себе натят и отправляют на маршрутизатор.

И проще и дешевле и надёжнее imho ставить один хороший сервер, чем плодить "писюки" и балансировать между ними трафик.

По крайней мере чем сильнее удасться сконцентрировать трафик на меньшем количестве машин - тем лучше.

 

Вообще используеем. Два аплинка. От каждого приезжает некоторое количество маршрутов. Схема достаточно стандартная - основной канал, резервный канал и несколько сетей, которые анонсируются от каждого аплинка. Всего около 100 маршрутов.

Просто нам не особо интересно, через какое место пойдет пакет от AOL к Telecom New Zealand Ltd :)

Ну, нам по крайней мере от IX-ов нужно короткие префиксы принимать, а это уже больше сотни маршрутов..

Впрочем, мы принимаем всё равно все full-view, т.к. не вижу особого влияния на производительность. Один раз загрузили префиксы, один раз выбрали best-routes, а дальше работаем по route-cache. (за одним нюансом, связанным с новыми соединениями, информации о которых в FIB нету. Но, как показывает практика, производительность не падает и загрузка cpu не повышается)

 

Я так понимаю, в вашем случае - это не основной и резервные каналы?

3 основных аплинка + ix. (+ пиринг....с оговорками)

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

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


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

а вот завтра у ваших клиентов аська начнет лагать на основном канале... и будете изобретать костыли? ;)

Ну вот full-view из-за этого уж точно принимать не будем. Ну нету у меня прямого канала на AOL. Не нужны мне их маршруты. У меня всего два варианта, как к ним добраться :)

 

Три варианта разрешения проблемы:

1. прогнуть основного поставщика на тему "шозадела" (это правильный вариант - за это деньги плачены)

2. поменять поставщиков значимостью

3. найти другого поставщика. У нас их есть :)

 

а под натом машинки (8 впн серверов) прогибаются... Не сильно, по 5 минут ссш не хожу, но нагрузка там чувствуется...

Так может не под натом, а под vpn-ом? У нас сервер таким не занимается. Благо, доксис позволяет избавиться от авторизации вообще и не потерять управление сетью. Но на этом же сервере висит собиралка netflow (генератор и оперативное хрнилище). 4 года - полет нормальный.

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


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

а вот завтра у ваших клиентов аська начнет лагать на основном канале... и будете изобретать костыли? ;)

Не понимаю, почему должна начать лагать аська?

Такого никогда не было и в проекте нет ;)

 

стоит вот у меня роутер... 2 fv. LA выше 1 - это что то редкое... причем очень редкое...

Если не секрет, что такое LA?

 

а под натом машинки (8 впн серверов) прогибаются... Не сильно, по 5 минут ссш не хожу, но нагрузка там чувствуется...

У меня один сервер от 600Мбит NATа не прогибается, на SSH спокойно захожу, пинг 1мс. Что я делаю неправильно? :)

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


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

Пока radix tree влезает в L2 cache - фигня.
jab - так это сиськи используют процессоры где можно запхнуть любой блок данных в кеш и закрепить там.

 

А у интелей в лучшем случае prefetchnta/prefetcht*, и то - "хочу сделаю, не хочу не сделаю". Плюс гемморой с cache lines, и еще кучей всякой требухи.

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

Как там на сиськах не знаю, я их не юзаю почти. А на фре разница по нагрузке на простом форвардинге между 1 full-view и пятью статиками с дефолтом, на глаз не заметна, что-то около 1-2%. Но вот если на эту

же тачку понавешать других задач, которые будут забивать L2 cache, то будет резкая ступенька в росте нагрузки. Причем больше там bottleneck'у взяться неоткуда. И CPU и RAM в избытке и шины недогружены.

 

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


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

У меня один сервер от 600Мбит NATа не прогибается, на SSH спокойно захожу, пинг 1мс. Что я делаю неправильно? :)

Пустите гигабит, 500kstates и увидите.

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


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

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

Не подскажите?

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


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

 

Чтобы "продиагнастировать" сервер нужен СОМ.

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


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

Причем больше там bottleneck'у взяться неоткуда. И CPU и RAM в избытке и шины недогружены.

Возвращаясь к исходному вопросу.

 

А как проверить, что шины недогружены?

 

И как проверить насколько используется L2 cache?

 

Пустите гигабит, 500kstates и увидите.

Так что Вы посоветуете по subj?

 

Чтобы "продиагнастировать" сервер нужен СОМ.

А можно попросить ссылку?

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


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

А можно попросить ссылку?

http://forum.nag.ru/forum/index.php?s=&amp...st&p=373112

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


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

собственно у меня стоит вот это

Intel® Xeon® CPU E5405 @ 2.00GHz

2 штуки по 4 ядра.

8 гигов оперативы, платформа интелевая, но как называется не помню.

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

в роутере 2 встроенных сетевки, одна двух портовая, одна 4 портовая.

2 аплинка по 100 мегабит(оба фулвью отдают) + городские сети + точска обмена трафика.

Транзитный поток в пиках 4 гигабита

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

Брать надо с расчетом чтобы было на каждую сетевку по ядру + 2 ядра на систему.

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


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

А можно попросить ссылку?

http://forum.nag.ru/forum/index.php?s=&amp...st&p=373112

Спасибо.

 

В моём случае СОМ, пытающийся повысить свою СО, - это я.

 

 

Можете посоветовать ссылку по оптимизации под CPU-кэш?

 

И что-то по мониторингу. Может мне OProfile поможет?

 

 

PS .. В Xeon-ах линейки 5400 или 3300 L2 кэш составляет 12Мбайт, т.е. 2 раза по 6 Мбайт общего кэша на 2 ядра. В линейке 5500 используется по 256кбайт L2 кэша на каждое ядро и 8Мбайт общего кэша на 4 ядра.

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

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

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


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

 

собственно у меня стоит вот это

Intel® Xeon® CPU E5405 @ 2.00GHz

2 штуки по 4 ядра.

8 гигов оперативы, платформа интелевая, но как называется не помню.

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

в роутере 2 встроенных сетевки, одна двух портовая, одна 4 портовая.

2 аплинка по 100 мегабит(оба фулвью отдают) + городские сети + точска обмена трафика.

Транзитный поток в пиках 4 гигабита

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

Брать надо с расчетом чтобы было на каждую сетевку по ядру + 2 ядра на систему.

Используете какую-то специальную оптимизацию? smp_affinity, специальные параметры netfiltr-а?

Можете скинуть в личку выкопировку из скриптов, что в /proc/sys/net.....?

Что в /sys/module/nf_conntrack/parameters/hashsize?

 

то его правила можно засунуть в хештаблицу

не затруднит пример скинуть?

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


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

Join the conversation

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

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

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

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

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

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

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