linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Команды/cmd-iperf3

kb/commands ── Команды ── intermediate

iperf3 - измерение bandwidth

`iperf3` - стандартный инструмент замера throughput TCP/UDP между двумя точками. Запускается парой server + client. Не для прода, а для теста сети.

view as markdownaka: bandwidth-test, throughput-test

Базовый workflow

bash
# На стороне A - сервер
iperf3 -s                            # слушает на :5201
# На стороне B - клиент, подключается к A
iperf3 -c 10.0.0.1                   # 10 секунд по умолчанию
iperf3 -c 10.0.0.1 -t 30              # тест 30 секунд

Вывод клиента - таблица интервалов + summary:

[ ID] Interval        Transfer   Bitrate         Retr  Cwnd
[  5] 0.00-1.00 sec   1.10 GBytes 9.45 Gbits/sec 0    1.62 MBytes
...
[ ID] Interval        Transfer   Bitrate         Retr
[  5] 0.00-10.00 sec  10.9 GBytes 9.41 Gbits/sec 0      sender
[  5] 0.00-10.00 sec  10.9 GBytes 9.41 Gbits/sec        receiver

Главное - Bitrate (throughput) и Retr (TCP-retransmits - индикатор потерь / congestion на пути).

Полезные флаги

bash
iperf3 -s -D                          # сервер в daemon (отвязка от терминала)
iperf3 -s -p 9999                     # другой порт
iperf3 -c host -P 4                   # -P: 4 параллельных стрима (бьёт single-flow лимит)
iperf3 -c host -R                     # reverse: server шлёт client'у (для теста downlink)
iperf3 -c host -u -b 100M             # UDP-режим, target 100 Mbit/s
iperf3 -c host -t 60 -i 2             # 60с тест, отчёт каждые 2 секунды
iperf3 -c host -J                     # JSON-вывод (для парсинга)

Что подключить к выводу

  • TCP test, низкий throughput, retr > 0 → потери на пути; проверь cmd-tc qdisc, MTU, congestion control в tcp-states
  • TCP test, низкий throughput, retr = 0 → bandwidth-delay product; маленькое окно или CPU-bound
  • UDP test, packet loss > 0% → реальные потери на маршруте

Парный тест с tc netem

Стандартное упражнение: измерить baseline → ухудшить сеть → сравнить:

bash
# Baseline
iperf3 -c server -t 5
# Деградация на исходящем интерфейсе
sudo tc qdisc add dev eth0 root netem delay 50ms loss 1%
iperf3 -c server -t 5

▸Bitrate должен резко упасть (TCP не разгоняется при потерях)

# Восстановление
sudo tc qdisc del dev eth0 root

iperf2 vs iperf3

  • iperf2 (он же iperf) - старый, многопоточный, хорош для UDP-теста
  • iperf3 - современный, single-thread, чище отчёт, JSON-вывод

Для bidirectional одновременного теста на iperf3 используют два параллельных запуска (-c host + -c host -R параллельно), iperf2 делал это одной командой -d.

Capability в контейнерах

Для UDP-теста выше user-quota - может потребоваться CAP_NET_RAW. Базовый TCP-тест работает без особых привилегий.

§ команды

bash
iperf3 -s -D

Запустить сервер в фоне (daemonize); слушает :5201

bash
iperf3 -c 10.0.0.1 -t 30

30-секундный TCP-тест к серверу

bash
iperf3 -c 10.0.0.1 -P 4

4 параллельных стрима - обходит single-flow лимит kernel'я

bash
iperf3 -c 10.0.0.1 -u -b 1G

UDP-тест с целевым bitrate 1 Gbit/s - покажет реальные потери

bash
iperf3 -c 10.0.0.1 -J -t 5 | jq '.end.sum_received.bits_per_second'

JSON-вывод для скриптов: достать только итоговый bitrate

§ см. также

  • tcp-handshakeTCP three-way handshakeTCP-соединение открывается тремя пакетами: SYN от клиента, SYN-ACK от сервера, ACK от клиента. После - соединение Established, можно слать данные.
  • udp-basicsUDP - User Datagram ProtocolUDP - простой протокол доставки датаграмм без установки соединения, без ретрансмитов, без гарантии порядка. Заголовок 8 байт. Применение: DNS, DHCP, QUIC, VoIP, любой случай когда задержка важнее надёжности.
  • cmd-ssss - кто слушает и кто подключён`ss` - современная замена netstat. Показывает сокеты: LISTEN, ESTABLISHED, поддерживает фильтры по адресу/порту/state и extended TCP info.
  • cmd-tctc - traffic control`tc` управляет очередями пакетов на сетевых интерфейсах: лимиты bandwidth, задержки, потери, классификация. Часть iproute2.
  • cmd-mtrmtr - traceroute + ping в одномmtr = traceroute + ping. Непрерывно опрашивает каждый hop, показывает loss% и latency. Помогает за секунду найти где в маршруте теряются пакеты или растёт задержка.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки