Какую дополнительную нагрузку на процессор создает копирование данных по сети (защищенное и без криптозащиты)


Для тестирования пропускной способности сети используется утилита iperf, для ее установки выполните команду:

# aptitude install iperf

Эта утилита запускается в клиент-серверном режиме и на одном из компьютеров она будет слушать, а на втором отправлять данные. Для тестирования пропускной способности сети мне понадобится файл со случайными данными которые я и буду отправлять. Я использую данные полученные из /dev/urandom чтобы создать трафик максимально приближенный к оригиналу и минимизировать эффект от сжатия трафика и прочих систем оптимизации.

# dd if=/dev/urandom of=/urandom.dat bs=10M count=10000

Запускаем "слушатель" на одном из серверов:

# iperf -s

На втором сервере запускаем "Клиента" к первому, но указываем что отправлять мы собираемся данные из нашего файла заполненного случайными данными (/dev/urandom):

# iperf -t 120 -l 65536 -c 10.1.1.76 -F /urandom.dat

Замер пропускной способности тестовой среды показал, что примерно гигабит я и могу по ней "прокачать".

----------------------------------------------------------
Client connecting to 10.1.1.76, TCP port 50
TCP window size: 85.0 KByte (defaul
----------------------------------------------------------
[  4] local 10.1.1.73 port 48312 connected with 10.1.1.76 port 50
[ ID] Interval       Transfer     Bandwid
[  4]  0.0-89.1 sec  9.77 GBytes   941 Mbits/sec

Первый эксперимент который я хотел бы провести, это замеры нагрузки при передачи данных по сети в штатном режиме, то что я и делал выше. Тестовая среда у меня Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz и сетевая карта интегрированная Corporation Ethernet Connection (2) I219-V.

Как обработка передачи данных по сети нагружает процессор?

Это первое базовое измерение и в этом случае у нас никакой криптографии, только банальная передача трафика. 

Сразу могу сказать, что Intel i5 такая операция практически не загрузила.

Какая дополнительная нагрузка создается при копировании утилитой scp?

Утилита csp использует механизмы Secure Shell (SSH) и соответственно Secure File Copy (SCP) использует шифрование которое должно нагрузить процессор. Теоретически понятно, что будет создана избыточная нагрузка, но вопрос в том какая?

И как вы наверное заметили, нагрузка значительно возросла по сравнению с первым замером. 

Для копирования я использовал команду:

# scp /urandom.dat root@10.1.1.76:/

Я хотел бы обратить ваше внимание, что львиная доля, это iowait который в первом случае у нас отсутствовал, так как отсутствовала сама операция записи переданных данных, но User Time и System Time значительно возросли и как мы видим SCP достаточно ресурсоемкая операция.

Как OpenVPN нагружает систему?

А вот теперь самое интересное, ради чего мы все это и затевали, мне необходимо понять какую избыточную нагрузку на сервер создаст OpenVPN тунель. Для проведения этого теста, я внутри нашей гигабитной сети подниму OpenVPN туннель и проведу первый тест.

Первый неприятный сюрприз, это то что гигабита у нас больше нет. Даже с учетом того, что утилизированы не все ресурсы процессора, скорость обмена данными внутри туннеля значительно просела.

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 172.16.8.1 port 5001 connected with 172.16.8.6 port 56716
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-120.0 sec  6.03 GBytes   432 Mbits/sec

Нагрузка на процессор выше чем при Secure File Copy (SCP) и это при условии, что дискового iowait-а у нас практически нет.

Финальный тест. Защищенное копирование средствами SCP внутри OpenVPN-туннеля!

Этот тест проводится просто так, что называется Just For Fun. 

Результат вполне ожидаемый.

Как вы наверное поняли, излишние крипто-алгоритмы основательно нагружают систему и использовать их имеет смысл только там где они реально нужны.