Iperf выходной формат CSV

Вероятно, зависит от прокси. Сквид сразу передает.

9
задан 12 January 2014 в 16:59
5 ответов

Поля:

отметка времени, исходный_адрес, исходный_порт, целевой_адрес, целевой_порт, интервал, переданные_байты, биты_за_секунду

Я вывел это, посмотрев на

$ iperf -c localhost -r
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to localhost, TCP port 5001
TCP window size:  648 KByte (default)
------------------------------------------------------------
[  5] local 127.0.0.1 port 54401 connected with 127.0.0.1 port 5001
[  4] local 127.0.0.1 port 5001 connected with 127.0.0.1 port 54401
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.0 sec  50.3 GBytes  43.2 Gbits/sec
[  4]  0.0-10.0 sec  50.3 GBytes  43.2 Gbits/sec

$ iperf -c localhost -r -y C
20140114124826,127.0.0.1,54402,127.0.0.1,5001,5,0.0-10.0,52551090176,42041052917
20140114124826,127.0.0.1,5001,127.0.0.1,54402,4,0.0-10.0,52551090200,41999020136

РЕДАКТИРОВАТЬ: Вы можете найти соответствующие исходный код здесь :

// TCP Reporting
printf( reportCSV_bw_format,
timestamp,
(stats->reserved_delay == NULL ? ",,," : stats->reserved_delay),
stats->transferID,
stats->startTime,
stats->endTime,
stats->TotalLen,
speed);
} else {
// UDP Reporting
printf( reportCSV_bw_jitter_loss_format,
timestamp,
(stats->reserved_delay == NULL ? ",,," : stats->reserved_delay),
stats->transferID,
stats->startTime,
stats->endTime,
stats->TotalLen,
speed,
stats->jitter*1000.0,
stats->cntError,
stats->cntDatagrams,
(100.0 * stats->cntError) / stats->cntDatagrams, stats->cntOutofOrder );
} 
9
ответ дан 2 December 2019 в 22:30

Посмотрите на 6-е поле, предполагая, что "," (запятая) является разделителем полей. Тогда посмотрите на эти строки здесь:

Server listening on TCP port 5001
------------------------------------------------------------
Client connecting to localhost, TCP port 5001

[5] локальный 127.0.0.1 порт 54401 соединен с 127.0.0.1 портом 5001 [4] локальный порт 127.0.0.1 5001 соединен с портом 127.0.0.1 54401 [ID] Интервальная пропускная способность передачи [5] 0,0–10,0 с 50,3 ГБ 43,2 Гбит / с [4] 0,0–10,0 с 50,3 ГБ 43,2 Гбит / с

«5» указывает соединение клиент -> сервер, затем «4» указывает соединение «сервер -> клиент» (посмотрите на порты источника / назначения, чтобы сказать, в этот конкретный пример дан "sciurus".

1
ответ дан 2 December 2019 в 22:30

дата и время, IP-адрес источника, порт источника, IP-адрес назначения, порт назначения, номер процесса iperf, временной интервал, количество переданных данных (байт), полоса пропускания (бит в секунду), джиттер (миллисекунды), количество потерянных датаграмм, общее количество отправленных датаграмм, процент потерь, количество датаграмм, полученных не по заказу

Я получил вышеприведенную информацию по адресу:

http://www. jb.man.ac.uk/~jcullen/code/python/iperf_tests.py

1
ответ дан 2 December 2019 в 22:30

Isit la se yon Demo senp lè l sèvi avèk valè yo CSV ak kouri nan yon bouk tcheke pou yon bps bay ke yo te rankontre.

Mwen te jwenn tou gen yon jaden siplemantè prezan nan repons ki anwo yo ki se 3/4/5 nan valè. 4 ak 5 sanble ap direksyon. 3 Mwen pa fin sèten sa sa vle di. De tout fason, nan ka sa a ede:

#!/usr/bin/python

import sys
import subprocess
from subprocess import Popen

def runProcess(exe):
    p = subprocess.Popen(exe, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    while(True):
      retcode = p.poll() #returns None while subprocess is running
      line = p.stdout.readline()
      yield line
      if(retcode is not None):
        break

#
# do an iperf to a peer and check the bps calculated is at least
# what we asked for
#
def peer_run_until_target_bps_not_met (peer, sample_period, target_bps):

    debug = 0
    target_kbps = target_bps / 1024.0
    target_mbps = target_bps / (1024.0 * 1024.0)
    cmd = "iperf -c %s -t %d -i %d -y C" % (peer, sample_period, sample_period)

    while (True):
        bps=0
        for line in runProcess(cmd.split()):
            if line == "":
                break

            if (debug):
                print "timestamp           %s" % line.split(',')[0]
                print "source_address      %s" % line.split(',')[1]
                print "source_port         %s" % line.split(',')[2]
                print "destination_address %s" % line.split(',')[3]
                print "destination_port    %s" % line.split(',')[4]

                #
                # "3" ???
                # "5" indicates client -> server connection,
                # "4" indicates "server -> client"
                #
                print "direction           %s" % line.split(',')[5]

                print "interval            %s" % line.split(',')[6]
                print "transferred_bytes   %s" % line.split(',')[7]
                print "bits_per_second     %s" % line.split(',')[8]

            transferred_bytes = float(line.split(',')[7])
            bps = (transferred_bytes * 8) / float(sample_period)

        kbps = bps / 1024.0
        mbps = bps / (1024.0 * 1024.0)
        print "OK: %12.2f bps / %10.2f Kbps / %10.2f Mbps (target %-10.2f Mbps)" % (bps, kbps, mbps, target_mbps)

        if (bps < target_bps):
            print "FAILED: need %.2f bps / %.2fKbps / %.2f Mbps" % \
        (target_bps, target_kbps, target_mbps)
            return

peer_run_until_target_bps_not_met("10.2.0.0", 5, 0.2 * 1024 * 1024) # 10 Mbps
0
ответ дан 2 December 2019 в 22:30

В принятом ответе пропущено одно нечетное поле: поле, которое следует после пары IP-адрес источника и назначения + порт:

timestamp,
source_address,
source_port,
destination_address,
destination_port,
XXX,                  <---- this one
interval,
transferred_bytes,
bits_per_second

Код в принятом ответе говорит, что это исходит от transferID переменная. Некоторые из других ответов здесь, похоже, утверждают, что он представляет собой идентификатор соединения или направление соединения. Однако беглый взгляд на код показывает, что transferID происходит из глобальной переменной с именем groupID . Он инициализирован нулем:

// Global ID that we increment to be used 
// as identifier for SUM reports
int groupID = 0;

Однако быстрый поиск с помощью команды grep, похоже, указывает на то, что он сильно увеличивается и уменьшается, что очень сбивает с толку. Кажется, нет никаких определенных констант, которые бы говорили, что это означает. Ручное тестирование ( iperf версии 2.0.9 (9 сентября 2016 г.) pthreads ) показывает число, повторно используемое между соединениями. Итак, я полагаю, что мораль этой истории ... игнорировать это число? Или используйте iperf3.

1
ответ дан 2 December 2019 в 22:30

Теги

Похожие вопросы