The Netlog provides a breakdown of the connection properties of all clients attempting to our session. Using this, we can see what kind of NAT the other player has, and detect possible instancing problems early.
This parsing has to be done in the main netlog parser, looking for RxRoute: lines that contains our client's RunID. After the last IP block, we get four numbers like this: (x,x,x,x).
First number: NAT Type
Second number: UPNP status
Third number: Whether one or more levels of NAT are in use.
Fourth number: MTU
The first number is the NAT type. 2 is great, 5 is just as good, and 8 is horribly bad.
If the third number is greater than 1, the player is behind multiple NATs, which is VERY bad.
Implement checks in the netlog parser that detect client's NAT type and reports this, especially if the NAT type seems likely to cause instancing problems.
The Netlog provides a breakdown of the connection properties of all clients attempting to our session. Using this, we can see what kind of NAT the other player has, and detect possible instancing problems early.
This parsing has to be done in the main netlog parser, looking for RxRoute: lines that contains our client's RunID. After the last IP block, we get four numbers like this: (x,x,x,x). First number: NAT Type Second number: UPNP status Third number: Whether one or more levels of NAT are in use. Fourth number: MTU
The first number is the NAT type. 2 is great, 5 is just as good, and 8 is horribly bad. If the third number is greater than 1, the player is behind multiple NATs, which is VERY bad.
Implement checks in the netlog parser that detect client's NAT type and reports this, especially if the NAT type seems likely to cause instancing problems.