Open bmah888 opened 7 years ago
I would love to see libiperf fully updated.
Following is a table of all parameters that are available when invoking iperf3
through the command line, and their equivalent API methods (where applicable) as of commit 7f88301:
Options | libiperf functions | Status |
---|---|---|
-p , --port |
iperf_set_test_server_port , iperf_get_test_server_port |
:heavy_check_mark: |
-f , --format |
:x: | |
-i , --interval |
iperf_set_test_reporter_interval , iperf_get_test_reporter_interval , iperf_set_test_stats_interval , iperf_get_test_stats_interval |
:heavy_check_mark: |
-F , --file |
:x: | |
-A , --affinity |
iperf_setaffinity , iperf_clearaffinity |
:heavy_check_mark: |
-B , --bind |
iperf_set_test_bind_address , iperf_get_test_bind_address |
:heavy_check_mark: |
-V , --verbose |
iperf_set_verbose , iperf_get_verbose |
:heavy_check_mark: |
-J , --json |
iperf_set_test_json_output , iperf_get_test_json_output |
:heavy_check_mark: |
--logfile |
:white_check_mark: | |
--forceflush |
:white_check_mark: | |
-d , --debug |
:white_check_mark: | |
-v , --version |
:white_check_mark: | |
-h , --help |
:white_check_mark: | |
-s , --server |
iperf_set_test_role , iperf_get_test_role , iperf_set_test_server_hostname , iperf_get_test_server_hostname |
:heavy_check_mark: |
-D , --daemon |
:white_check_mark: | |
-I , --pidfile |
:white_check_mark: | |
-1 , --one-off |
iperf_set_test_one_off , iperf_get_test_one_off |
:heavy_check_mark: |
-c , --client |
iperf_set_test_role , iperf_get_test_role |
:heavy_check_mark: |
-u , --udp |
set_protocol , get_protocol |
:heavy_check_mark::heavy_minus_sign: |
--connection-timeout |
:x: | |
-b , --bitrate |
iperf_set_test_rate , iperf_get_test_rate , iperf_set_test_burst , iperf_get_test_burst |
:heavy_check_mark: |
--pacing-timer |
:x: | |
--fq-rate |
:x: | |
-t , --time |
iperf_set_test_duration , iperf_get_test_duration |
:heavy_check_mark: |
-n , --bytes |
:x: | |
-k , --blockcount |
:x: | |
-l , --length |
iperf_set_test_blksize , iperf_get_test_blksize |
:heavy_check_mark: |
--cport |
:x: | |
-P , --parallel |
iperf_set_test_num_streams , iperf_get_test_num_streams |
:heavy_check_mark: |
-R , --reverse |
iperf_set_test_reverse , iperf_get_test_reverse |
:heavy_check_mark: |
-w , --window |
iperf_set_test_socket_bufsize , iperf_get_test_socket_bufsize |
:heavy_check_mark: |
-C , --congestion |
:x: | |
-M , --set-mss |
iperf_set_control_socket , iperf_get_control_socket |
:heavy_check_mark: |
-N , --no-delay |
:x: | |
-4 , --version4 |
:x: | |
-6 , --version6 |
:x: | |
-S , --tos |
iperf_set_test_tos , iperf_get_test_tos |
:heavy_check_mark: |
--dscp |
:x: | |
-L , --flowlabel |
:x: | |
-Z , --zerocopy |
iperf_set_test_zerocopy , iperf_get_test_zerocopy , iperf_has_zerocopy |
:heavy_check_mark: |
-O , --omit |
iperf_set_test_omit , iperf_get_test_omit |
:heavy_check_mark: |
-T , --title |
:x: | |
--extra-data |
iperf_set_extra_data , iperf_get_extra_data |
:heavy_check_mark: |
--get-server-output |
iperf_set_test_get_server_output , iperf_get_test_get_server_output |
:heavy_check_mark: |
--udp-counters-64bit |
iperf_set_test_udp_counters_64bit , iperf_get_test_udp_counters_64bit |
:heavy_check_mark: |
--repeating-payload |
:x: |
Personally, the most critical missing libiperf functionality is:
--bytes
--pacing-timer
However I agree it would be useful for libiperf to catch up completely with all available functionality.
I have had a play around making changes in my local iperf repository and successfully added in the functions I needed, however would ideally like to have this available upstream. If possible I will try and put together a pull request soon for at least some of these changes.
Is this the reason why the Python wrapper (using libiperf.3 directly) cannot use the CLI --no-delay
option?
@ckleu The python wrapper uses the libiperf.3 for all functionality. Options not available in the libiperf.3 library are not available in the python wrapper.
Context
Version of iperf3: any
Hardware: all
Operating system (and distribution, if any): all
Enhancement Request
A number of enhancements have been made to iperf3 that caused the
iperf_test
andiperf_settings
to grow some new members corresponding to new configuration parameters. In many cases, the libiperf API was not extended to include getters and setters for these parameters, with the result that programs using libiperf don't have access to all of the test parameters that can be specified from the command-line.The libiperf API should catch up to the reality of these structure definitions.