### iperf
**Совместимость iPerf и iPerf3**  
Клиент и сервер совместимы, но нужно знать, что по умолчанию, рабочий порт для iPerf — 5001, для iPerf3 — 5201.  
**Установка**
```bash
sudo apt install iperf
```
или
```bash
sudo apt install iperf3
```
Запускаем сервер:
```bash
iperf3 -s
```
На экране появится:
```
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
```
Сервер ждет запросов.  
**Все ключи запуска iPerf**  
**Общие для сервера и клиента:**  
Ключ        Описание  
`-p`          _Определить порт, на котором будет слушать сервер или отправлять запросы клиент_  
`-f`          _Формат отчетов — kmgKMG (Kbits, Mbits, KBytes, MBytes, ...)_  
`-i`          _Задать интервал, в течение которого выполняется одна проверка_  
`-F`          _Указать файл, из которого будут взяты входные данные для запуска_  
`-A`          _Степень нагрузки на процессор_  
`-B`          _Указать, через какой сетевой интерфейс работать_  
`-V`          _Детализированные сообщения в консоли_  
`-J`          _Вывод в формате json_  
`--logfile`	_Весь вывод в отдельный лог-файл_  
`-d`          _Режим отладки (много сообщений)_  
`-v`          _Показать версию программы_  
`-h`          _Вызвать справку по работе с программой_  

**Для сервера:**  
Ключ        Описание  
`-s`          _Запустить iPerf в режиме сервера_  
`-D`          _Запустить как демона (как службу)_  
`-I`          _Указать pid-файл_  
`-1`          _Принять запрос от одного клиента и завершить работу_  

**Для клиента:**  
Ключ	    Описание  
`-c`          _Запустить iPerf в режиме клиента_  
`-u`          _Отправлять UDP-пакеты_  
`-b`          _Формат отчетов для bandwidth (средней скорости)_  
`-t`          _Количество секунд, в течение которых будет идти проверка скорости_  
`-n`          _Объем данных для проверки (применяется вместо времени -t)_  
`-k`          _Количество пакетов для проверки (вместо -t или -n)_  
`-l`          _Размер буфера записи/чтения для TCP (по-умолчанию 128K), размер пакета для UDP (по-умолчанию 1470)_  
`-P`          _Число параллельных запросов_  
`-R`          _Обратный режим — сервер отправляет, клиент принимает_  
`-w`          _Размер сетевого окна_  
`-C`          _Установить алгоритм управления перегрузкой TCP_  
`-M`          _Задать максимальный размер MTU_  
`-4`          _Работать только для IPv4_  
`-6`          _Работать только для IPv6_  
`-Z`          _Использовать метод «нулевой копии» для отправки данных_  
`-O`          _Опустить первые n секунд_  
`-T`          _Задать префикс для каждой строки вывода_  

Также самый свежий список ключей можно получить командой:
```bash
man iperf3
```
**Примеры использования iPerf**  
_Рассмотрим некоторые команды запросов к серверу для проверки скорости соединения._  
Использование UDP
```bash
iperf3 -c 192.168.0.15 -u
```
* сам сервер не нужно запускать в UDP-режиме, так как он принимает любые запросы.

Альтернативные порты  
_Для этого необходимо сначала запустить сервер на нужном порту:_
```bash
iperf3 -s -p 443
```
* кстати, можно запустить несколько процессов iperf одновременно, которые будут слушать на разных портах.  
* стоит не забывать про настройки брандмауэра. В данном примере понадобиться ввести команды `firewall-cmd --permanent --add-port=443/tcp и firewall-cmd --reload`.

Теперь можно запускать клиента:
```bash
iperf3 -c 192.168.0.15 -p 443
```
Проверка скорости в течение 30 секунд с интервалами по 2 секунды
```bash
iperf3 -c 192.168.0.15 -t 30 -i 2
```
Несколько параллельных запросов
```bash
iperf3 -c 192.168.0.15 -P 3
```
Отправляем на проверку 3 Гб данных
```bash
iperf3 -c 192.168.0.15 -n 3G
```

