Iperf CSV আউটপুট ফর্ম্যাট


10

আমি যদি দ্বি নির্দেশমূলক স্থানান্তর পরীক্ষা করতে এবং সিএসভি হিসাবে রফতানি করতে -y C এবং -r আর্গুমেন্ট সহ আইপিএফ ব্যবহার করি।

আমি কিছু আউটপুট পাই তবে সমস্যাটি হ'ল কলামের নামগুলি কী তা আমি জানি না। উদাহরণস্বরূপ এটি তিন সারি ডেটা দেখায় তবে কোনটি প্রেরণ করতে এবং কোনটি গ্রহণ করতে হবে তা আমি জানি না I

অন্যান্য কলামগুলি আমি অনুমান করতে পারি তবে আমি বরং নিশ্চিত হয়েছি।

আমি এই নথিটি কোথাও খুঁজে পাচ্ছি না!

উত্তর:


10

ক্ষেত্রগুলি হয়

টাইমস্ট্যাম্প, source_address, source_port, DESTINATION_ADDRESS, destination_port, ব্যবধান, transferred_bytes, bits_per_second

আমি এটি দেখে অনুমিত

$ 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 );
} 

2

গৃহীত উত্তরগুলি একটি বিজোড় ক্ষেত্র এড়িয়ে যায়: উত্স এবং গন্তব্য আইপি + পোর্ট জোড়া পরে আসে:

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;

যাইহোক, কোডটির মাধ্যমে একটি দ্রুত গ্রেপ ইঙ্গিত দেয় যে এটি খুব বৃদ্ধি পেয়েছে এবং খুব বিভ্রান্তিকরভাবে অনেক হ্রাস পেয়েছে। এমন কোনও সংজ্ঞায়িত ধ্রুবক নেই যা এর অর্থ বলতে বলে। ম্যানুয়াল টেস্টিং ( iperf version 2.0.9 (9 Sept 2016) pthreads) সংযোগগুলির মধ্যে নম্বরটি পুনরায় ব্যবহৃত হচ্ছে দেখায়। সুতরাং আমি অনুমান করি গল্পটির নৈতিকতা ... সেই সংখ্যাটি উপেক্ষা করবেন? অথবা আইপিআরফ 3 ব্যবহার করুন।


1

"," (কমা) ফিল্ড বিভাজক হিসাবে ধরে the ষ্ঠ ক্ষেত্রটি দেখুন। তারপরে এখানে এই লাইনগুলি দেখুন:

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

[ 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

"5" ক্লায়েন্ট -> সার্ভার সংযোগ নির্দেশ করে, তারপরে "4" "সার্ভার -> ক্লায়েন্ট" সংযোগ নির্দেশ করে (উত্স / গন্তব্য বন্দরগুলি দেখুন, "সায়ুরাস" প্রদত্ত এই বিশেষ উদাহরণে)


1

তারিখ এবং সময়, উত্স আইপি, উত্স পোর্ট, গন্তব্য আইপি, গন্তব্য পোর্ট, আইপিএফ প্রক্রিয়া নম্বর, সময়ের ব্যবধান, স্থানান্তরিত ডেটার পরিমাণ (বাইট), ব্যান্ডউইথ (বিট প্রতি সেকেন্ডে), জিটার (মিলিসেকেন্ড), হারানো ডাটাগ্রামের সংখ্যা, মোট সংখ্যা ডেটাগ্রাম পাঠানো হয়েছে, শতাংশ হারানো, অর্ডার বহির্ভূত ডেটাগ্রামের সংখ্যা

আমি উপরের তথ্যটি পেয়েছি:

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


0

এখানে সিএসভি মানগুলি ব্যবহার করে এবং প্রদত্ত বিপিএস পূরণের জন্য একটি লুপ চেকিংয়ে চলছে এমন একটি সাধারণ ডেমো রয়েছে।

আমি আরও দেখতে পেয়েছি যে উপরের উত্তরগুলি থেকে একটি অতিরিক্ত ক্ষেত্র উপস্থিত রয়েছে যা মূল্য 3/4/5। 4 এবং 5 দিক বলে মনে হচ্ছে। 3 আমি এর অর্থ কী তা নিশ্চিত। যাইহোক, যদি এই সাহায্য করে:

#!/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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.