One more clarification: this proposal is only to change A2S_INFO, A2S_PLAYER, 
and A2S_INFO.  There are other connectionless packets in Source engine 
protocols.  We could update our own games to require that those be padded as 
well (and check the same environment variables).  But it's totally separate 
code.  (Not to mention other games!)  So, any filtering will need to be smarter 
than just checking if the first 32-bits are ffffffff.

While I'm touching this code, I'm also hardening the challenge generation.

From: csgo_servers@list.valvesoftware.com <csgo_servers@list.valvesoftware.com>
Sent: Tuesday, November 17, 2020 10:29 AM
To: csgo_servers@list.valvesoftware.com
Subject: Re: [Csgo_servers] RFC: Changes to the A2S_INFO protocol

As John said, padding with zeros will be easier to mitigate (and less resource 
intensive) for providers, and it solves the reflection.

Any word on the last bit of John's response regarding "abuse" of BGP/Anycasting 
to reply to source engine queries from the closest geographical location to the 
requester?

It's one thing for hosts to use edge locations to mitigate attacks, allowing 
inbound filtering to be spread across multiple edge locations. But people are 
taking it a step further and intentionally sending a cached query response from 
those edge locations to benefit from players thinking their server has the 
lowest latency in the server browser.



John!  Good to hear from all old folks from years ago!

TL/DR: New proposal: the server requires all 3 connectionless packets from 
clients to be at least 1200 bytes.

I've gotten similar feedback from a few people now.  The only reason to 
consider allowing a smaller packet with a challenge is to give the client a way 
to reduce the bandwidth sent when pinging a ton of servers.  But doing this 
would impair the ability to filter out these packets further out, and it is 
also more complicated to implement.  (I wasn't planning on changing the server 
browser in steamclient.dll to do it, I was just going to do the simple thing of 
padding the packet.)  Given that it is 2020 The Year of Our Lord Gaben, 
probably the extra bandwidth needed to ping a bunch of servers is just not 
significant.

Regarding 1200: although this technically maybe not OK according to RFCs from 
the mid 90's, being larger than the absurdly small minimum IPv4 MTU, I believe 
it is OK in practice in 2020 TYOOLG, especially since the minimum MTU for IPv6 
is 1280.  In the SDR protocol used by CSGO and Dota, clients always initiate 
their communication with a 1200 byte packet, and that has not caused any 
problems.

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives,
please visit:
https://list.valvesoftware.com/
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives,
please visit:
https://list.valvesoftware.com/

Reply via email to