Планирую новую сеть. Весь трафик, исходящий из этой сети, будет направлен в VPN для выхода в Интернет на удаленном сервере. Это будет сделано через OpenVPN. Будет только один туннель.
Мы рассматриваем очень высокоскоростное Интернет-соединение со скоростью входящего потока 100 Мбит / с и исходящей скоростью 5 Мбит / с.
Какое оборудование мне понадобится для поддержки таких скоростей? Существуют ли какие-либо правила для определения размера оборудования серверов OpenVPN?
Будет ли достаточно атомной доски? А как насчет AMD Geode 800Mhz?
Заранее спасибо за вашу помощь,
Я предполагаю, что процессор Atom будет обрабатывать 100 Мбит трафика OpenVPN. Под нагрузкой вы можете обнаружить, что Atom будет иметь немного большую задержку, чем более быстрый ЦП, но это, вероятно, не будет иметь большого значения, если учесть задержку любых длинных удаленных каналов между сервером и клиентами.
Некоторые ненаучные результаты тестов, передача данных между моим нетбуком с процессором Atom и локальным сервером OpenVPN (через сеть 1000 Мбит, но нетбук имеет только 100 Мбит NIC):
dspillett@minirant:~$ time dd if=/dev/zero bs=1024 count=1048576 | nc -q 0 192.168.43.1 3333
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 91.2072 s, 11.8 MB/s
real 1m31.227s
user 0m1.792s
sys 0m25.874s
dspillett@minirant:~$
dspillett@minirant:~$ time dd if=/dev/zero bs=1024 count=1048576 | nc -q 0 192.168.44.1 3333
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 113.082 s, 9.5 MB/s
real 1m53.107s
user 0m1.468s
sys 0m15.337s
dspillett@minirant:~$
где 192.168.43.1 - это сервер, видимый только в локальной сети, а 192.168.44.1 - это тот же компьютер, который виден через ссылку OpenVPN в этой сети. VPN работает в мостовом режиме с использованием соединения на основе UDP.
htop показал, что ЦП во время теста VPN облагается большим налогом, чем подсчитывает пользователь + система из time
указать, потому что time
только считает dd
активность процессора, а не VPN. Он показал cpu0 на уровне ~ 70% и cpu1 на уровне ~ 30% на протяжении всего теста, что предполагает, что процессор близок к пределу, который он может передавать через OpenVPN в этом тесте (этот Atom был одноядерным, но с гиперпоточностью) - хотя он все еще справлялся в случайном порядке со скоростью 9,5 Мбайт / сек.
В качестве индикатора задержки, добавляемой VPN (которая будет представлять собой комбинацию накладных расходов от работы ЦП при шифровании данных и накладных расходов от метода туннелирования), проверка связи с небольшими (по умолчанию, 56-байтовая полезная нагрузка) пакетами:
--- 192.168.43.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8997ms
rtt min/avg/max/mdev = 0.138/0.166/0.183/0.015 ms
--- 192.168.44.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8998ms
rtt min/avg/max/mdev = 0.544/0.614/0.860/0.091 ms
и более крупные (2048 байт полезной нагрузки):
--- 192.168.43.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet los
rtt min/avg/max/mdev = 0.514/0.521/0.531/0.021 ms
--- 192.168.44.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9011ms
rtt min/avg/max/mdev = 0.710/0.997/1.437/0.173 ms
Очевидно, вы получите разные результаты, если VPN будет обрабатывать несколько подключений, демонстрирующих реальные шаблоны трафика, поэтому вы можете захотеть выполнить более подробные тесты самостоятельно. Возможно, вы сможете выжать больше с помощью некоторых настроек - мой набор OpenVPN в значительной степени работает с готовыми настройками по умолчанию.
Мне не известны какие-либо опубликованные тесты, кроме некоторых неофициальных тестов, которые несколько человек запустили и разместили на своих веб-сайтах. Как ни странно, криптокод (OpenSSL) не кажется самым оптимизированным в мире, но и свиньей тоже. Простым тестом для вас может быть установка сервера и клиента OpenVPN на пару компьютеров в локальной сети и время на перемещение некоторого трафика между ними, наблюдая за загрузкой процессора на обоих.
Я могу сказать вам, что могу заполнить канал 802.11g, работающий со скоростью 54 Мбит / с, зашифрованным трафиком, не перегружая ЦП на мусорной машине Pentium II 400 МГц, которая является сервером OpenVPN в моей домашней локальной сети. Это заставляет меня думать, что Geode, вероятно, тоже может это сделать.
OpenSSL (и, следовательно, OpenVPN) также поддерживает некоторые решения аппаратной разгрузки. Более дешевым решением является «замок» Via, входящий в состав некоторых чипсетов Via. Это также может быть способом снизить требования к процессору. Видеть:
Я установил 2 сервера OpenVPN, и оба работают нормально, я сделал 3 клиента для каждого, и они согласны, отлично работают.
Один основан на RasPi 3 с очень быстрой Micro SD 32 Гб и дополнительным USB-ключом 32 Гб, пока все хорошо.
Другой - это ноутбук с 4Gb Ram и 500Gb HD с UBUNTU, этот тоже работает нормально.
Мой вывод таков; если у вас не так много клиентов в моем случае 3, вам действительно не нужно много зверя, обрабатывающего числа, поэтому очень мало затрат на его настройку.
Моя скорость загрузки из Интернета составляет 60 МБ / с, а скорость загрузки - 16 МБ / с, поэтому у меня 3 клиента, т.е. ~ 5 МБ / с каждый.
Ура
Сиамак
Я бы порекомендовал VIA Nano. С via VIA Nano L2200 @ 1600MHz я могу протолкнуть 330 Мбит. VIA nano находится в том же ценовом диапазоне, что и Atom, и имеет аппаратную поддержку AES. Чтобы получить такую производительность, вам нужно будет перейти с blowfish с AES и добавить в openssl.conf следующее:
openssl_conf = openssl_def
[openssl_def]
engines = openssl_engines
[openssl_engines]
padlock = padlock_engine
[padlock_engine]
default_algorithms = ALL
Вот ссылка на пример комбинации mobo / CPU: http://www.via-itx.com/via-vb8001.html