I have issue with speed with RB4011GS. I have PPoE configured (bridge+VLAN) with directly from ONT to Mikrotik.
I have 1 gbit download and 500 upload, but issue is that data over TCP goes around 500-600 mbit max (download)
When I do iperf and choose UDP it goes 1 gigabit as should. Only TCP is ssue …
I enabled fastpath but it didnt helped. Can someone can help me to solve this issue?
CAT7 lan cable is everywhere. LAN cards are 1 gigabit
When running the TCP test, run profiler to see if any single CPU core is utilized 100%.
What kind of TCP test is it? If it’s iperf, run multiple (e.g. 4) parallel streams. It’s a well known fact that TCP streams don’t scale throughput well due to various reasons (speedtest.net has gone to multiple parallel streams ages ago for this reason). One of reasons is that ROS (for example) processes all packets of same TCP connection using same core to avoid possibility of causing out-of-order packet delivery (which is one of thing most detrimental to TCP flows) and if this is the problem, you’ll see one CPU core at 100% while others will be almost idle. RB4011 throughput tests do indicate that it’s capable of around 2.5Gbps real-life, but that involves number of parallel streams (and multiple interfaces).
And beware that by default iperf runs test where client is transmitting. If internet site hosts iperf in server mode and your LAN machine is used as iperf client, then by default you’re testing uplink direction.
As I wrote, default is that client sends traffic, if client is LAN host, you’re testing uplink speed. If you want to test downlink, use command line parameter
-R, --reverse
reverse the direction of a test, so that the server sends data to the client
A short explanation about UDP tests: UDP has no feedback (TCP has acknowledgements) which means that iperf3 client sending UDP traffic will send packets at rate specified. The only feedback application (iperf) gets is from local IP stack which will throttle Tx rate to the interface capability. If there’s a bottlebeck further upstream, then the router at the bottleneck entrance will drop packets and sending party will not get any feedback about it. Which means that when performing UDP iperf3 tests, it’s vital to check test results on the receiving side (by default that’s where iperf3 is run in server mode).
I still think you’re actually testing uplink speed with your iperf3 tests.
-R and -P are not mutually exclusive. In other words you can use both at the same time, and because of latency and window size, you may need more than one stream.
And it also assumes the iperf3 server is willing/able to send data to you at 1Gbps, and that the path between you and the server is able to pass that data.
If you want to test the RB4011, you should be running a local server and client with the RB4011 between. Then you are in control of the environment.
Here’s an example of a controlled test with a baseline test using only a wire between the two test PCs running iperf (yes, iperf as in iperf2, which is not the same as iperf3): How to test router performance with iperf (with preliminary baseline test) Testing Ubiquiti’s 5 Port EdgeRouter Using iperf by Tony Fortunato (The Technology Firm)