Beating TCP is not hard. But doing it without starving TCP sessions to death is.
The only way to co-exist gracefully with TCP is to use a compatible backoff mechanism. Anything more aggressive will basically steal all of the bandwidth from TCP and that's it.
Is the competition on your local boxes (computer, router) or in the network backbone and middleware boxes? Seems like KCP is aimed for real-time gaming and this case it does not matter if your own other connections (browser, autoupdater) suffer at the same time.
It'd be wherever in the network path has the most contention, all else being equal.
For a home environment, this would most likely be at the Internet Gateway level, since home networks usually operate at >100Mbps transfer rates between nodes, but to the internet have <=100Mbps.
That all being said, contention at the gateway level like this would be assuming that KCP and TCP are both being used for, say, large file downloads.
If KCP is limited to use for sharing game state data for a game like Counter Strike, then the likelihood that KCP would consume all available bandwidth within a given time window is low, since the data rate is measured in hundreds of Kbps, not Mbps.
It's worth mentioning that at least a few popular and successful games, such as Genshin Impact, use this protocol. The aforementioned is actually the only reason I knew it existed before now.
6 comments
[ 0.26 ms ] story [ 44.2 ms ] thread[1] https://en.wikipedia.org/wiki/Automatic_repeat_request
The only way to co-exist gracefully with TCP is to use a compatible backoff mechanism. Anything more aggressive will basically steal all of the bandwidth from TCP and that's it.
For a home environment, this would most likely be at the Internet Gateway level, since home networks usually operate at >100Mbps transfer rates between nodes, but to the internet have <=100Mbps.
That all being said, contention at the gateway level like this would be assuming that KCP and TCP are both being used for, say, large file downloads.
If KCP is limited to use for sharing game state data for a game like Counter Strike, then the likelihood that KCP would consume all available bandwidth within a given time window is low, since the data rate is measured in hundreds of Kbps, not Mbps.