Интернет с низкой пропускной способностью через VPN

10

Я только что закончил настройку VPN-хранилища на базе VPN с моей недавно разогнанной Raspberry Pi Model-B и столкнулся с чем-то, для чего не могу найти ответ в другом месте.

Пропускная способность интернета, определенная с использованием

wget --output-document = / dev / null http://speedtest.wdc01.softlayer.com/downloads/test500.zip

намного медленнее, чем я ожидал получить. Я получаю около 1,34 МБ / с на моем Pi через Ethernet, когда я приближаюсь к 7 МБ / с, когда Ethernet подключен непосредственно к моему ноутбуку.

Проблема в OpenVPN, но я не могу понять, что именно. Вот как я это знаю.

Я сравнил скорость загрузки на Pi с выключенным и включенным VPN - это было 5,03 МБ / с против 1,34 МБ / с.

Затем я попробовал его на своем ноутбуке (проводной) - он был 6,9 МБ / с (идеальный) против 6,7 МБ / с (почти идеальный).

Таким образом, ошибка не полностью связана с моей VPN-службой (PrivateInternetAccess), которая дает 3% -ное снижение пропускной способности на моем ноутбуке, но связана с тем, как OpenVPN работает на Pi, что дает 74% -ное снижение пропускной способности.

Есть идеи, почему OpenVPN на Raspbian так ужасен?

ОБНОВЛЕНИЕ: Большая часть этого сокращения с 6,9 МБ / с на ноутбуке без VPN до 5,03 МБ / с на Pi без VPN, по-видимому, связана со скоростью записи на SD-карту, которую я определил около 4,9 МБ / с. Это огромное сокращение с 5,03 MPBS на Pi без VPN до 1,3 Мбит / с с VPN, которое необходимо объяснить.

ОБНОВЛЕНИЕ 2: Еще несколько подсказок из предложений из комментариев: 1) OpenVPN использует 70% ЦП, когда он работает, а wget находится в фоновом режиме. 2) На Pi я получаю 1,34 МБ / с от VPN-сервера в США и около 500- 600 Кбит / с со всех европейских VPN-серверов, НО на моем ноутбуке я получаю 6,7 МБ / с от американского VPN-сервера и очень похожие 6,6 МБ / с от некоторых европейских серверов, таких как один в Нидерландах. Я говорю о том, что расстояние до сервера, по-видимому, непропорционально влияет на Pi, а не на мой ноутбук.

dbrane
источник
Это может быть сочетание низкой скорости записи и накладных расходов VPN. Я никогда не любил использовать VPN, потому что они были медленными по Интернету, а SSH-туннелирование всегда было самым быстрым. Есть ли варианты включения сжатия в OpenVPN? Возможно, поиграть с этим, может быть, на лету шифрование вызывает проблемы. Это хороший вопрос. Я также заинтересован в ответах относительно Пи
Петра Кула
Посмотрите на загрузку процессора topво время тестирования, это должно сказать что-то о накладных расходах шифрования.
Фрепа
@Frepa Отличное предложение! Когда VPN включен, OpenVPN использует 70% ЦП. Как вы думаете, это то, что вызывает огромную разницу в скорости передачи?
dbrane
@dbrane, звучит так, как будто процессор является ограничивающим фактором. Куда уходит оставшееся 30% процессорного времени? Idle? Из обновления 2 кажется, что задержка сети (то есть не только пропускная способность) важна для производительности. Возможно, в VPN происходит какое-то рукопожатие.
Фрепа
@Frepa Большую часть оставшегося времени процессора использует сам wget, это команда, которую я использую для проверки скорости передачи. Все остальное в списке использует менее 1% каждый. Я использую сертификат CA с VPN, если эта информация помогает. Может, стоит попробовать разогнать и посмотреть, поможет ли это?
2013 года

Ответы:

4

На устройствах с низким энергопотреблением, по крайней мере, при использовании SSH, у меня был хороший опыт использования шифра RC4 для повышения производительности, поскольку он быстрее в вычислительном отношении, поэтому использует меньше ЦП для полосы пропускания / допускает более высокую пропускную способность при той же загрузке ЦП. В этом руководстве объясняется, как заменить шифр на любой, поддерживаемый OpenSSL, например RC4:

http://openvpn.net/index.php/open-source/documentation/howto.html#security

Обратите внимание, что RC4 не является самым безопасным доступным алгоритмом, но SSL все еще использует его безопасными способами (которые существуют, как описано здесь: http://en.wikipedia.org/wiki/RC4 ). Обновление : сейчас это менее верно, чем в прошлом. Доверие к безопасности RC4 снижается еще больше, так как методы его взлома развиваются , и 2013 год дал нам различный прогресс в разрушении RC4 и спекуляциях о том, что АНБ справилось . Цитируя Википедию:

По состоянию на 2013 год, есть предположение, что некоторые государственные криптологические агентства могут обладать способностью сломать RC4 даже при использовании в протоколе TLS. [3] Microsoft рекомендует по возможности отключать RC4. [4] [5]

Итак, могу ли я по-прежнему рекомендовать RC4? Не совсем в общем. Конечно, вам нужно поменять безопасность и производительность, и, может быть, вам не нужно много безопасности - любая криптография, даже RC4, все равно замедлит усилия по наблюдению, такие как от NSA. Но я был бы очень осторожен с действительно конфиденциальными данными и, если возможно, изменил бы алгоритм на что-то другое (я начал тестировать свою Raspberry, чтобы искать быстрые альтернативы).

Обновление 2 : на моей (разогнанной) Raspberry AES работает не так медленно, если у вас достаточно процессорного времени. Таблица ниже показывает, что RC4 может шифровать ~ 57 МБ / с, в то время как AES-128-CBC может шифровать ~ 21,4 МБ / с. Конечно, это не объясняет, почему вы получаете такую ​​плохую производительность - но, возможно, вы используете по умолчанию более медленный шифр, или, может быть, есть и другая неэффективность, которую можно улучшить.

$ openssl speed rc4 aes
[...]
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
rc4              45281.36k    54782.67k    57196.80k    57391.48k    57570.77k
aes-128 cbc      17904.15k    20469.38k    21133.95k    21449.62k    21403.72k

Настройки разгона от /boot/config.txt:

arm_freq=950

# for more options see http://elinux.org/RPi_config.txt
core_freq=250
sdram_freq=450
over_voltage=6
Blaisorblade
источник
1
Любой тип шифрования (ssh / vpn) вызовет дополнительное использование процессора, что, вероятно, является вашим узким местом.
earthmeLon
1
Я хотел сказать, что RC4 использует меньше ресурсов ЦП, чем другие шифры, поэтому в этой ситуации это может быть хорошо. Но я не уверен, согласны ли вы или не согласны с моим ответом.
Blaisorblade
@earthmeLon: я обновил свой ответ, чтобы четко изложить свою точку зрения, потому что она все равно была неясной. Не уверен, что адрес вашего комментария.
Blaisorblade
Абсолютно. Я был очень признателен, когда узнал, что RC4 является хорошим решением с минимальными накладными расходами благодаря реализации SSH2. Спасибо за информацию: D. Жаль, что ты не мог видеть, что я дал тебе голос, а?
earthmeLon
В самом деле, я только позже заметил, что ваш комментарий совпал по времени с повышением. Спасибо!
Blaisorblade