@ Карта сайта News Автора!

Bog BOS: Производительность сети и её измерение: ping, traceroute, netperf, iperf, pathrate, pathload, abget

Последние изменения:
2018.12.21: sysadmin: bacula 9 и схема исключительно инкрементального копирования

Последнее изменение файла: 2009.09.23
Скопировано с www.bog.pp.ru: 2020.09.18

Bog BOS: Производительность сети и её измерение: ping, traceroute, netperf, iperf, pathrate, pathload, abget

Производительность сети и её измерение

Элементарные единицы производительности сети:

Методы получения информации о производительности сети:

Утилита ping

Утилита ping посылает ICMP пакеты ECHO_REQUEST на указанный хост и использует полученные (или неполученные) в ответ ICMP пакеты ECHO_RESPONSE для определения доступности этого хоста и времени реакции. В Linux требует прав CAP_NET_RAWIO (обычно через suid root). Ключи:

Сигналы:

Возвращает 1, если не получено ни одного ответа. Возвращает 2 при ошибках. Возвращает 0, если сеть хоть как-то работает.

Утилита traceroute

Утилита traceroute позволяет выяснить маршрут следования пакетов к хосту назначения. Для этого она посылает серию UDP пакетов с TTL от 1 до 30 и получает ответы от промежуточных маршрутизаторов об истечении TTL (ICMP TIME_EXCEEDED). Для обеспечения работоспособности необходимо открыть сетевые экраны на пути следования для пакетов UDP на нужные порты. Вторым параметром можно указать размер пакета (40; путь может зависеть от размера бакета; помогает выяснить MTU в сочетании с ключом -F). Ключи:

Загадочные значки в ответах:

traceroute6 - эквивалент traceroute -6.

tracert - эквивалент traceroute -I.

tcptraceroute - эквивалент traceroute -T -p 80.

tracepath позволяет выяснить маршрут следования пакетов к хосту назначения и MTU, используя UDP-метод. Вторым параметром можно указать порт назначения.

netperf

netperf - "классический" (документация от HP к версии 2.0 от 1995 года!) инструмент измерения пропускной способности сети и времени задержки ответа (TCP, UDP, DLPI - уровень канала, UNIX domain sockets, SCTP; IPv4 и IPv6). Доступна для различных вариантов Unix, Linux, MS Windows, OpenVMS и др.. Состоит из 2 частей: netserver, который должен быть предварительно запущен на удалённом хосте, и netperf, который запускается в момент измерения. При запуске теста между netperf и netserver устанавливается управляющее соединение (по умолчанию - 12865/tcp), тестовые данные пересылаются по другому каналу (первый попавшийся "пользовательский" порт).

Брал готовые пакеты версии 2.4.2-1 с репозитария dag. Исходные тексты можно получить здесь.

Утилита netperf имеет 2 типа параметров: глобальные и специфические для типа теста. Глобальные параметры указываются первыми и отделяются от специфических параметров двумя знаками "минус" ("--"). Некоторые параметры (например, размер) задаются парами. Чтобы установить одинаковое значение элементам пары необходимо указать одно значение, чтобы установить разные - значения через запятую, только первому элементу - "значение,", только второму - ",значение".

Глобальные параметры (основные):

Специфические параметры, общие для всех тестов TCP, UDP и SCTP (через сокеты и XTI):

netserver может быть запущен как самостоятельный процесс (параметр -p задаёт номер порта управляющего соединения) или под inetd (xinetd). Параметры для inetd.conf: netserver stream tcp nowait nobody. Настройка для xinetd:

service netserver
{
  socket_type = stream
  wait        = no
  user        = nobody
  server      = адрес-программы
}

Параметры netserver:

Использование ЦП выводится в процентах от полной загрузки и в микросекундах, требуемых для передачи килобайта или транзакции. В Linux версии используется механизм /proc/stat (S).

Можно запускать с правами обычного пользователя.

Методика измерения пропускной способности

Через 1 коммутатор:

TCP_STREAM

Recv   Send    Send                          Utilization       Service Demand
Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
Size   Size    Size     Time     Throughput  local    remote   local   remote
bytes  bytes   bytes    secs.    10^6bits/s  % S      % S      us/KB   us/KB

 87380  16384  16384    50.01       938.70   16.41    42.41    11.457  29.609 

Alignment      Offset         Bytes    Bytes       Sends   Bytes    Recvs
Local  Remote  Local  Remote  Xfered   Per                 Per
Send   Recv    Send   Recv             Send (avg)          Recv (avg)
    8       8      0       0 5.868e+09  16384.00    358172   8530.56 687914

Maximum
Segment
Size (bytes)
  1448

TCP_RR

Local /Remote
Socket Size   Request Resp.  Elapsed Trans.   CPU    CPU    S.dem   S.dem
Send   Recv   Size    Size   Time    Rate     local  remote local   remote
bytes  bytes  bytes   bytes  secs.   per sec  % S    % S    us/Tr   us/Tr

16384  87380  1       1      50.00   11154.17  19.80  43.03  142.024  308.618 
16384  87380 

UDP_RR

Local /Remote
Socket Size   Request Resp.  Elapsed Trans.   CPU    CPU    S.dem   S.dem
Send   Recv   Size    Size   Time    Rate     local  remote local   remote
bytes  bytes  bytes   bytes  secs.   per sec  % S    % S    us/Tr   us/Tr

126976 126976 1       1      50.01   11573.89   18.47  43.07  127.660  297.708
135168 135168

Через 5 коммутаторов:

TCP_STREAM

Recv   Send    Send                          Utilization       Service Demand
Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
Size   Size    Size     Time     Throughput  local    remote   local   remote
bytes  bytes   bytes    secs.    10^6bits/s  % S      % S      us/KB   us/KB

 87380  16384  16384    50.01       919.84   8.76     42.04    3.120   29.955 

Alignment      Offset         Bytes    Bytes       Sends   Bytes    Recvs
Local  Remote  Local  Remote  Xfered   Per                 Per
Send   Recv    Send   Recv             Send (avg)          Recv (avg)
    8       8      0       0 5.75e+09  16384.02    350982   8193.70 701819

Maximum
Segment
Size (bytes)
  1448

TCP_RR

Local /Remote
Socket Size   Request Resp.  Elapsed Trans.   CPU    CPU    S.dem   S.dem
Send   Recv   Size    Size   Time    Rate     local  remote local   remote
bytes  bytes  bytes   bytes  secs.   per sec  % S    % S    us/Tr   us/Tr

16384  87380  1       1      50.01   8061.24  3.64   43.30  18.074  429.677 
16384  87380 

UDP_RR

Local /Remote
Socket Size   Request Resp.  Elapsed Trans.   CPU    CPU    S.dem   S.dem
Send   Recv   Size    Size   Time    Rate     local  remote local   remote
bytes  bytes  bytes   bytes  secs.   per sec  % S    % S    us/Tr   us/Tr

135168 135168 1       1      50.01   8427.60   5.14   42.71  24.388  405.477
135168 135168

iperf

Iperf позволяет измерить производительность сети (TCP и UDP) и поэкспериментировать с настройками приложения и хоста. Имеется версия под Windows (устанавливается как сервис: -s -D). Так же как и при использовании netperf предварительно на удалённом конце запускается iperf в режиме сервера. В момент измерения с нашей стороны запускается iperf в режиме клиента. Если сервер запускается в интерактивном режиме, то он также выдаёт результаты измерения. При запуске теста между клиент