iperf | measure maximum TCP bandwidth , allowing the tuning
kandi X-RAY | iperf Summary
kandi X-RAY | iperf Summary
This repository provides an execution wrapper for the Iperf network benchmark utilities. NOTE: When cloning this repository, please use the --recurse-submodules option to also pull the submodule.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of iperf
iperf Key Features
iperf Examples and Code Snippets
Community Discussions
Trending Discussions on iperf
QUESTION
I use iperf3.7 to measure the throughput of a system that is capable of around max 4 Gbps.
The iperf3 server is running on a Linux machine. I start the traffic with this command on the client side with the following flags, -R option to let the server send to the client: iperf3 -c 32.0.161.84 -u -l 1360 -b 550M -P 8 -w 16M -R -t 3000
Most of the times everything works as expected, I receive around 4 Gbps. But on some occasions, like 1-2 times of 10 iterations I receive lower throughput than expected. How much lower seem to be random, could be 2 Gbps or 3 or 3.5. When I get the low throughput scenario, it usually stays low for several minutes. Sometimes, after a couple of minutes it could recover by itself up to max speed and sometimes it stays low longer time. When I get this low throughput scenario, I can get a good throughput scenario if stopping the traffic and starting again and in this case the client side have received a new ip address as it’s dynamically assigned to the client on each iteration.
Looking at the printouts from sending server side it says it’s sending 8x550M and I have also checked with ifstat that also shows it sends 4400 Mbps.
Still receiving side receive lower speed.
Mirroring the ethernet card of the machine that the iperf client (sending side) is running on into wireshark shows there is a silent gap of 10.8 ms from time to time which can explain the received lower rate.
In this example with wireshark, the traffic is 4.4 Gbps and then suddenly, it seems to be a silence gap for 10.8 ms and we lose 4486 ip frames with 1360 bytes. That can explain why the traffic decrease to 3 Gbps for a while.
Does anybody know if why this happens and if it is a known problem potentially fixed in later versions, 3.8 or 3.9? Any additional flag could be useful to avoid this scenario? I have tried to run the server on a different Linux machine, but same problem occur, so I don’t think it’s a problem on the machine itself.
BR Niklas
...ANSWER
Answered 2021-May-18 at 10:09We changed the logging technique to something called net-sniff and then we cannot see the gap anymore when the lower throughput happens. So the gap I referred to initially was no real gap, more likely a bug in the logging. So we consider iperf3 to work as it should and think the lower throughput is due to something in the network instead.
QUESTION
I am trying to run a Basic Publisher/Subscriber pair on the same Multicast/Port. It works perfectly when the hosts are connected to the same Switch, but not if the subscriber is on a different Switch.
Publisher
...ANSWER
Answered 2021-Apr-13 at 14:54I was able to make it work with adding a ttl config option.
Publisher
QUESTION
Simple application that scans Wi-Fi networks.
This one for a reference: Get available wi-fi scan result in customized listview
Just put a ListView in a layout and add ACCESS/CHANGE_WIFI_STATE permissions into manifest.
The problem is that it works on my Samsung J3 (2016), but I don't know why it doesn't on my new Samsung M11. Has it something to do with Android versions? I have already returned a Realme C3 that was having same issues because I thought it was due to Mediatek SOC.
SAMSUNG M11 (Android 10) LOG:
...ANSWER
Answered 2021-Mar-29 at 11:37Solved. I had to add FINE_LOCATION to the manifest and:
- Manually give location permissions in Settings.
or
- Make a popup that asks for location permissions the first time the user launch the app.
QUESTION
I want to deploy an Azure Ubuntu 18.04-LTS VM with a custom data file during an automation test, using tmplate.json and parameters.json files.
Although, the VM was deployed successfully, It seem that the custom data execution have failed and I do not understand why...
According to this link, cloud-init is available in the image that I use.
My template.json file contain:
...ANSWER
Answered 2020-Nov-09 at 08:13According to my experience, the problem is that the value for the custom data is not right. I check the VM that the cloud-init provision successfully, the code does not match yours. You can check the file /var/lib/waagent/ovf-env.xml
yourself. Do not change the text yourself into a string. You can encode the text online.
QUESTION
I have a PHP array dd($iperfProfiles);
ANSWER
Answered 2020-Oct-15 at 20:04//in PHP
$iperfProfiles = json_encode($iperfProfiles);
//and then in JS
var iperfProfiles = JSON.parse({!!$iperfProfiles!!});
QUESTION
I have this code
...ANSWER
Answered 2020-Oct-13 at 20:33Set class text-right
instead of pull-right or float right. Because those class would just try to push the label tag from outside. And not the content as « text-right » would do!
QUESTION
I just started a course on Computer Networks and my first assignment provides me with mininet script of a simple star topology, and asks me run an iperf measurement between h1 and h2. While the iperf is running I should test the ping between h3 and h4.
My question is that how do I make iperf measuring the data to run in background so I can test the ping, as I can not input when the iperf is running also cant open new terminal for mininet.
...ANSWER
Answered 2020-Sep-16 at 11:17You have two options:
1 - use the python API
2 - run parallel processes from the CLI
I am going to explain the second option, since you are using the CLI for your experiments.
First step: run Mininet with the single(star) topology.
QUESTION
The code for my scanner is below. If I decide to check if only port 2220 is open on 176.9.9.172, it tells me that it is. However, when I run option 0 to check ALL the ports up to 10000, it only registers that port 22 and port 80 are open. It's multi-threaded and runs up to 4 threads at a time. It waits for the 4 threads to complete and then deletes them and resets the vector of threads to reduce memory issues. I'm not sure what's causing the problem.
UPDATE - I added a section of code after myNetworkSocket = socket(AF_INET, SOCK_STREAM, 0);
in the TestPortConnection() function, and as I ran it, I found that the socket creation failed after I scanned ports 1 - 1023. I realized that I forgot to close the ports if they failed to connect in some situations. I inserted the code to close them, and it works now!
ANSWER
Answered 2020-Sep-09 at 02:11You are starting multiple execution threads, passing the pointer to the same std::vector
, named "buffer" to all of these threads:
QUESTION
I am running the BasicPublisher/BasicSubscriber pair from https://github.com/real-logic/aeron binding them to the same multicast group+port. When they run on the same host they connect, but when they run on separate hosts (same switch+subnet+vlan) the publisher reports "Offer failed because publisher is not connected to subscriber”. Here are my configurations:
AERON PAIR:
...ANSWER
Answered 2020-Jul-27 at 15:13When using multicast endpoints it is also necessary to provide the interface for some operating systems when going remote. The interface can have a mask to simplify configuration for all machines on a subnet. For example:
QUESTION
I have just started working with TCP (and all associated libraries) due to the need to implement communication between two processes over an internet connection. My code works but it is very slow compared to what I (perhaps due to lack of experience) would expect given the network latency and bandwidth. Also, I'm sure there are many other things wrong with the code, which is using the UNIX socket API. I would prefer not to use big libraries (such as Boost) for my project unless there is a very good reason.
I include a minimal working example. It is rather long despite my best efforts to shorten it. However, I think most of the problems should be in the first file (tcp_helpers.h) which is only used by the client and server main programs in a fairly obvious way. The functions there are not fully optimized but I find it hard to believe that is the problem, rather likely are some fundamental flaws in the logic.
I also want to ask some questions relevant to the problem:
- For network performance, should I worry about using IPv4 vs IPv6? Could it be that my network dislikes the use of IPv4 somehow and penalized performance?
- Since the Socket API emulates a stream, I would think it does not matter if you call send() multiple times on smaller chunks of data or once on a big chunk. But perhaps it does matter and doing it with smaller chunks (I call send for my custom protocol header and the data separately each time) leads to issues?
- Suppose that two parties communicate over a network doing work on the received data before sending their next message (as is done in my example). If the two processes take x amount of time on localhost to finish, they should never take longer than (2*x + (network overhead)) on the real network, right? If x is small, making the computations (i.e. work before sending next message) go faster will not help, right?
- My example program takes about 4ms when running on localhost and >0.7 seconds when running on the local (university) network I'm using. The local network has ping times (measured with
ping
) of ( min/avg/max/mdev [ms] = 4.36 / 97.6 / 405. / 86.3 ) and a bandwidth (measured withiperf
) of ~70Mbit/s. When runnin the example program on the network I get (measured withwireshark
filtering on the port in question) 190 packets with an average throughput of 172kB/s and average packet size ~726 Bytes. Is this realistic? To me it seems like my program should be much faster given these network parameters, despite the fairly high ping time. - Looking at the actual network traffic generated by the example program, I started thinking about all the "features" of TCP that are done under the hood. I read somewhere that many programs use several sockets at the same time "to gain speed". Could this help here, for example using two sockets, each for just one-way communication? In particular, maybe somehow reducing the number of ack packets could help performance?
- The way I'm writing messages/headers as structs has (at least) two big problems that I already know. First, I do not enforce network byte order. If one communicating party uses big-endian and the other little-endian, this program will not work. Furthermore, due to struct padding (see catb.org/esr/structure-packing/), the sizes of the structs may vary between implementations or compilers, which would also break my program. I could add something like (for gcc)
__attribute__((__packed__))
to the structs but that would make it very compiler specific and perhaps even lead to inefficiency. Are there standard ways of dealing with this issue (I've seen something about aligning manually)? (Maybe I'm looking for the wrong keywords.)
ANSWER
Answered 2020-Jul-06 at 05:17The first thing I would suspect as a cause of the perceived slowness over TCP is Nagle's algorithm; if it is enabled on your TCP sockets (which it is, by default), then it can add up to 200mS of latency to a send()
call. If it is enabled, try disabling it (as shown in the code below) and seeing if that makes things faster for you.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install iperf
PHP requires the Visual C runtime (CRT). The Microsoft Visual C++ Redistributable for Visual Studio 2019 is suitable for all these PHP versions, see visualstudio.microsoft.com. You MUST download the x86 CRT for PHP x86 builds and the x64 CRT for PHP x64 builds. The CRT installer supports the /quiet and /norestart command-line switches, so you can also script it.
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page