Как интерпретировать результаты iperf3?

Я не хочу делать ничего сумасшедшего – просто измерьте скорость загрузки и выгрузки для клиента на сервер.

На сервере я побежал:

iperf3 -s 

На клиенте я побежал:

 iperf3 -c IP_ADDESS 

Это мои результаты:

 Connecting to host IP_ADDRESS, port 5201 [ 4] local LAN_IP port 2722 connected to IP_ADDRESS port 5201 [ ID] Interval Transfer Bandwidth [ 4] 0.00-1.01 sec 256 KBytes 2.08 Mbits/sec [ 4] 1.01-2.01 sec 128 KBytes 1.05 Mbits/sec [ 4] 2.01-3.01 sec 128 KBytes 1.05 Mbits/sec [ 4] 3.01-4.01 sec 128 KBytes 1.05 Mbits/sec [ 4] 4.01-5.01 sec 128 KBytes 1.05 Mbits/sec [ 4] 5.01-6.01 sec 128 KBytes 1.05 Mbits/sec [ 4] 6.01-7.01 sec 128 KBytes 1.05 Mbits/sec [ 4] 7.01-8.01 sec 128 KBytes 1.05 Mbits/sec [ 4] 8.01-9.01 sec 0.00 Bytes 0.00 bits/sec [ 4] 9.01-10.01 sec 128 KBytes 1.05 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth [ 4] 0.00-10.01 sec 1.25 MBytes 1.05 Mbits/sec sender [ 4] 0.00-10.01 sec 1.07 MBytes 896 Kbits/sec receiver iperf Done. 

Я понимаю, что сначала он сообщает вам, с чем он связан, а затем каждые 1 секунду (по умолчанию) сообщает, насколько хорошо он выполнял эту 1 секунду. Что:

  1. Результаты? По умолчанию данные отправляются от клиента на сервер (если не указано значение -R, и в этом случае это будет отменено). Итак, если это результат однонаправленной передачи, почему в результате получается 2 строки?
  2. Значения идентификатора. В моем случае все они 4.
  3. При обратном переносе:

    iperf3 -c IP_ADDRESS -R

результаты включают одно дополнительное поле:

 [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 3.02 MBytes 2.53 Mbits/sec 21 sender [ 4] 0.00-10.00 sec 2.94 MBytes 2.46 Mbits/sec receiver 

Поле «Retr» означает, что 21 пакет должен быть повторно передан TCP?

У меня был такой же вопрос, поэтому я вкопался в код и надеюсь найти правильные ответы.

  1. Две линии показывают измерение с обеих сторон. Можно утверждать, что эти результаты должны быть одинаковыми. Но, как вы можете видеть в обоих ваших результатах, приемник измерял меньше данных, чем отправитель. Основная причина заключается в том, что измерение время бит. Так, например, когда вы измеряете 10секунд (начиная с первого пакета), вы отправляете n пакетов, но получатель может получать последние пакеты более чем через 10 секунд после первого. Поэтому они не учитываются. Кроме того, есть потеря пакетов.

  2. Это заполняется sp->socket . Таким образом, в конце концов это файловый дескриптор сокета (который преобразуется в int). Попробуйте запустить с -P Flag. Вы увидите разные идентификаторы для каждого соединения / сокета.

  3. Ваше предположение отчасти верно. Это поле представляет sp->result->stream_retrans . Таким образом, это повторная передача. Это поле отображается только при появлении повторных передач (0 не отображается). Поэтому это должно быть независимо от направления.