[crossfire] Steam Protocol Proposal

Mark Wedel mwedel at sonic.net
Tue May 9 02:10:11 CDT 2006


Alex Schultz wrote:
> Mark Wedel wrote:
> 
>>  Some general quick thoughts:
>>
>>  As stated before, selective 'per packet' compression has the nice advantage 
>> very easy to do - no need for extra buffers on the client or server side needed.
>> That said, if someone is willing to write that extra code, sounds good to me.
>>  
>>
> It is simpler to do selective 'per packet', however given some tests I 
> did, it can easily take up to 50% more bandwidth, so I think for 
> compression that streams are the way to go.

  It's hard for me to see why compressing per packet would take 50% more 
bandwidth, but I suppose it could be a matter of grouping those smaller packets 
together.

  I don't know the specific test methodology used, but one point is that for 
real life usage, the server will often need to compress small amounts of data, 
just so that it gets sent to the client in a timely fashion (the server can't 
really wait for 6 ticks to gather a good block of compressible data - it needs 
to send things every tick).

  But in any case, doing stream compression makes sense, save for the extra work 
needed to do it.

  We also had a discussion on IRC about a separate media server (for 
images/sounds/whatever) - if that is in fact done, that also removes some of the 
issue of the server compressing data it doesn't need to compress (client would 
grab the images from that other server where they are precompressed or not 
compressed, whatever)


> Well, I was thinking of allowing layering different types of streams 
> within eachother, however now I don't really think there is a need for 
> such and hence isn't worth bothering with.

  Ok - that is good.  Otherwise, it does add a fair amount of complication - its 
not just recording which encapsulation methods are in use, but also the order of 
use (ssl inside of zlib is different than zlib inside of ssl).  Supporting only 
a single stream type makes things much easier.

> Agreed. This protocol while suitable for streams in general, isn't 
> suitable for switching to a stream for a specific purpose (i.e 
> password). At that, I'm not completely sure ssl is the best way to send 
> a password for more secure login, however if that is done, some sort of 
> per-packet would be better.

  And some point, it depends on how paranoid we are.  But one consideration also 
is what external dependencies this puts in.  For example, SSL is quite secure, 
but would require SSL on both server and client.  It would probably also require 
some setup on the server side to properly create a SSL certificate - a self 
signed certificate could be created, but that also isn't quite as secure.





More information about the crossfire mailing list