Basic Summary
I get buffering when streaming higher qualities over the internet even though my internet connection should be able to handle it. Especially when I am far away (geographically) from my server. This feature would ensure internet streaming is maxing out your connection and allow streaming the highest quality possible. This would also help if your ISP (such as Comcast) tries to throttle your streaming by bypassing their per-connection speed limits.
If you are familiar with download accelerators like Internet Download Manager (using multiple connections to speed up your downloads), this works in much the same way but for streaming.
Detailed Explanation
I have a server in Germany hosting my Plex content with a 1Gbps uplink. My connection at home is capable of 100Mbps down, however I live in Australia so there is quite a bit of latency (~300ms) between me and my server. I can stream up to 20Mbps, but anything above that needs to buffer every few seconds. This bothered me as my home connection is definitely able to handle more than that, and I would eventually like to stream UHD 4K.
I am by no means a networking expert but after doing some research I believe this is due to the extreme latency between me and my server. What I do know for certain is that multiple connections increase my download speeds significantly. In the screenshots below I am using Internet Download Manager (IDM) to download a movie from my library using a download link generated by Plex. You will see using 8 threads (~10MB/s) gives an almost linear increase in speed over 1 thread (~1.5MB/s). I also used iperf3 to test my connection which gave very similar results.
This post goes over this issue in depth and “Bandwidth Delay Product” seems to be what I’m running into. I tried the advice in that post and increased my TCP window size, but that had no noticeable impact. The only other solution suggested is using multiple parallel streams.
Which brings me to the feature being requested: Multiple parallel connections for internet streaming. This paper proposes an algorithm for how it could be done but I’ll admit it goes a bit over my head. I also came across jspeedstreamer which claims to do exactly that. But it would be much nicer if Plex did this natively as I’m sure I’m not the only one with this problem. This feature would also get around some other problems I’ve seen other people having such as ISP throttling.
Here are some relevant posts I’ve come across:
Thank you for reading and as I said, I am no expert so if anyone has any suggestions or corrections please let me know.
IDM using 1 thread (~1.5MB/s)

IDM using 8 threads (~10MB/s)

iperf3 using 1 connection (~5Mbps)

iperf3 using 5 parallel connections (~25Mbps)
