Treatment
Flow Control
Turn on “Flow Control”
flow control is the process of managing the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver. It provides a mechanism for the receiver to control the transmission speed, so that the receiving node is not overwhelmed with data from transmitting node.
https://en.wikipedia.org/wiki/Flow_control_(data)
With UniFi network controller, this can be turned on at the level of switch and router. They are turned off by default. On network controller, go to devices, select target device. For example, in my network I went to UniFi Aggregation switch.
Config > Services > Enable flow control (On)
In my case, I have USW-24-Pro PoE Gen 2 switch and UDM Pro. So I have also turned on “flow control” on these two devices.
Here is a summary of some speed testing I have conducted.
There are four high to low (10G/1G) network interface mismatch:
- LAN download (10G NAS) to iMac 2020 (1G)
- LAN download (10G NAS) to iPhone 12 Pro
- Internet download to iMac 2020 (1G)
- Internet download to iPhone 12 Pro
Amongst these four cases, three showed suboptimal throughput cap. LAN download (10G NAS) to iMac 2020 (1G) reached full bandwidth. This is not unexpected as “not all 10G to 1G mismatch result in speed degradation”. I surmise iMac 2020 buffer/processing power are sufficient here to compensate the mismatch.
By turning on Flow control, I got following result.
Marked improvement to the point, I consider essentially issues are nearly if not completely resolved.
*Later, I could get 500+ speed test on my iPhone 12 Pro via 10G NAS path.
How does flow control work?
Using the restaurant analogy, flow control is analogous to customers are required to call in or make an appointment appointment before coming in. Therefore, there will no more than what restaurant can handle showing up at once.
Buffer Size
Mismatch does not always result in throughput degradation even when 10G sender to 1G receiver connection setting as depicted on my own testing. This is due to buffer size difference (ref).
If restaurant has a large enough capacity to accommodate all the incoming customers waiting inside, there is no loss of customer and retains the full possible rate (1 server/1 customer at a time).
So large(r) buffer on switch/network gear is a solution but this is a hardware specification to a given switch. So this solution requires replacing hardware itself and therefore, I do not see a practical variable for home users.