4v4 QUEUE ISSUES UPDATE

11

UPDATE 02/01/2022:


Layman terms explanation: Layman terms explanation: The ice adapter contains a serious bug mangling data packets in transmission causing the connection process to crash.

In short, continued patience is appreciated as we believe the issues will be resolved and everyone can enjoy the 4v4 TMM queue more going forward. This is bad but good news as it means the poor game connectivity issues will be a thing of the past soon enough.

Technical excerpt from the ICE developer:

Layman terms explanation: The ice adapter contains a serious bug mangling data packets in transmission causing the connection process to crash


Technical excerpt from the ICE developer:


Additionally to forwarding data, the ice adapter constantly monitors the latency of the connection to react to connection losses by reconnecting. To achieve this, the adapter prepends each data packet from the game with a type marker <d> or <e>:

Data packet: <d> <game data> <game data> <game data>
Echo packet: <e> <the time when this packet was sent>

The data packet is forwarded to the other player's game, the echo packet is returned back to the sender to estimate the connection's latency.

Case 1: The bug occurs due to the way packets are received. The protocol is not capable of detecting packet sizes or boundaries. So when there is a delay in the packet transmission over the Internet, multiple packets may be received and processed at once:

<d> <game data> <d> <game data> <e> <timestamp>
The ice adapter sees a data packet, removes the first <d> and sends <game data> <d> <game data> <e> <timestamp> to the game, which can't deal with the injected <d> and <e> markers and discards the packet. -> packet loss

Case 2: The other possible cause is the packet being split (either during transit or due to the receiving buffer being to small, this is under investigation):

Sent packet: <d> <game data> <game data>
Received packet: <d> <game data> -> game data sent to FA
Next packet: <game data>

The next packet now is really the second half from the previous packet, the ice adapter reads the first byte from the <game data> , looks for the marker, doesn't find one and crashes / reconnects (causing this packet to be dropped).
This happens during custom games as well, but the adapter usually reconnects within <5 secs. This might be amplified with TMM due to everybody connecting at once or the game not being capable of handling packet loss during the initial connection process cause the game to never launch.

This will be incompatible with previous adapters and require a forced client update.


CLIENT UPDATE FOR 4v4 NO SHARE:


As it turns out, the client issue was unique only to the "4v4 No Share" search and queue. The client issue has nothing to do with the likelihood of a match taking place.

alt text


Please note that the root cause of 4v4 TMM queue has made a further development. See the initial post as I have edited it with more information.

Just wanted to update everyone that a "penalty" system for failed connections will be implemented soon. This is not a "fix" but will hopefully cut down on games getting stuck because the same person(s) who has issues repeatedly attempts to join. A warning message will be issued so users understand they need to do something to alleviate the issue.

The penalty will not be too great, you can read the exact timings based on the number of attempts here in this pull request:

https://github.com/FAForever/server/pull/885