-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iperf3 increases packets per seconds for UDP tests after some time #1367
Comments
All of your results that are good show zero packet loss (Lost Datagrams) at the receiver. They aren't getting there so they are retransmitted, hence the higher packet per second count. Using UDP there will never be any loss listed by the sender as the sender would have no idea any packets were lost. |
TheRealDJ, Just to make everything clear. I passed my CCIE exams in 2004, so I have some :-) networking experience. This is a UDP test. So, there is NO reason to retransmit packets. I made some simple calculations. Iperf sent 3900567 packets for 10 seconds. netstat -s shows the same result. But, for 1100 bytes payload it is more than 3Gbps. Why iperf is sending more than 3 gigabits per second? I understand that there should be some packet drops. 1100 bytes payload + 42 bytes overhead = 1142 bytes = 9136 bits. Plus 96 bits IPG = 9232 bits on wire. 9232 bits * 107946 frames = 996.5 Mbps on wire, this is really at line rate. BUT I thing there is NO reason to send 3 Gbps from iperf and display 72% packet loss.
|
The problem is probably because network buffers got full and Per the code, the sent UDP packets are counted regardless of whether the packet was successfully sent or not. The failure does not terminate the test on "soft" error, when the error is |
Regardless, iperf3 shouldn't be trying to send faster than 950 Mb/s, but clearly (if we're to believe the "Total Datagrams" column) it is. I suspect some unusual error is occurring that is causing a different path through the iperf3 code, circumventing the transmission rate limit (bitrate). There's clearly a bug here. |
As the test results of this issue description show, iperf3 is not trying (and cannot) send faster then 950Mb/s. Since after 5 seconds sending most of the packets fail, iperf3 is continue to to try sending. I agree that is a bug in the way iperf3 counts the failed packets, and that it sends packets with new numbering instead of retrying sending the same packet number. These issues cause the client to show that it sent many packets that practically were not sent. Worse is that the server shows a lot of lost packets, although practically they were not sent. Submitter PR #1380 which should fix the above statistics issues. |
…-messages-that-were-not-sent Do not count UDP messages that were not sent. Fixes #1367
Context
Version of iperf3:
client (sender): 3.11 (i assume that this is sender issue) - from FreeBSD packages
server (receiver): 3.7 - from FreeBSD packages (upgraded to 3.11 - doesn't help)
Hardware:
i82576 PCIe-x4 dual NIC.
Intel Pentium G5420 CPU
Operating system (and distribution, if any):
FreeBSD 13.1-RELEASE (sender)
FreeBSD 12.0-RELEASE-p12 (receiver)
Bug Report
For some combinations of bandwidth and length iperf3 increases pps (keeping bitrate - so I assume that it decreases the packet size) after some time.
Test setup - two PCs connected by direct ethernet cable. 1 GBps interface speed. 9216 MTU size.
Test 1. length 9000, bw 950M - working fine
Test2. length 1500, bw 950M - working fine
Тест 3. length 1200, bw 950M - increased pps at second 5, 100% cpu load, packet loss. 100k datagrams at sec 4 but 500k datagrams sent at sec 5.
** Test 4.** The same, but test run for 4 seconds: Working fine.
It seems that iperf decreases packet size at second 5 of test.
** Test 5.** Another interface between this PCs. 1200 bytes works, 1100 - errors starts from second 4:
Test 6. bw 950M, length 1000: Problems at sec 2.
Keep PPS rate.
Increase PPS rate.
I'm really confused. I can't find any option to disable this behavior.
The text was updated successfully, but these errors were encountered: