[crossfire] new metaserver

Mark Wedel mwedel at sonic.net
Fri May 27 01:05:49 CDT 2005


Brendan Lally wrote:
>
     
      since the previous metaserver has shown itself to be unable to deal with an
     
     >
     
      attack, and since having a metaserver is a nice thing, I have over the last
     
     >
     
      few days been writing a distributed HTTP-based replacement. following a
     
     >
     
      design described on IRC by TechII and Tchize (among others).
     
     >
     
     
     >
     
      This system comprises of a series of metaservers and a metametaserver.
     
     >
     
     
     >
     
      The metaservers collect server information, and propagate it to the
     
     >
     
      metametaserver, and the metametaserver collates this and makes it available
     
     >
     
      to all the metaservers.
     
     
  A few questions on this:

  IS the idea to have DNS records for metaserver.crossfire.org (or whatever) 
point to all those possible/trusted meta servers?

  This of course doesn't really eliminate DOS attacks - it just means that 
someone has to attack 6 hosts instead of 1.  Which is an improvement, but may 
not eliminate the problem.  And while it runs on any web server is certainly 
convenient, it only does good if other people know about it of course (running 
it on mine does no good if no one knows about it, and if the main metaserver 
doesn't trust it)

  It seems to me that it would also be a better idea not to have a 
'metametaserver' at all - just go peer to peer, with the active metaservers 
periodically sending the data to one of the other metaservers (once a minute or 
something, it could connect to another, the two exchange information, merging 
any duplicates/keeping the later).  This removes the single point of failure if 
the metametaserver fails for some reason, at the expense of the data being not 
quite up to date.

  One other question I have is how the server sends its data to the active 
metaserver.  Does it still use UDP?  If not, and it uses TCP, be aware that 
you'll have to modify the server to fork, otherwise the servers can (and will) 
hang if the remote server is down or something.  Udp doesn't have that problem 
of course.

  In terms of data to provide:

IP address is a must.  Much easier for the client to already know the IP address 
instead of having to do DNS looks.  Hostname is then another field.

  As for the data:

  Version should be included in the top line, not the comment line, as it is now 
(one reason is that it is a compiled in value, so if you update your server, the 
version number reported will reflect this without having to go to your settings 
file and manually updating it.)  The protocol versions, IMO, are of limited 
value to most people (no user is really going to know what 1027 vs 1029 gives 
them, where they may know that 1.7.0 is the latest).  Plus, the protocol 
versions have been stable for a very long time.  Including it does no harm, just 
doesn't really add anything.

  Note you should look at the current metaserver for what data it sends.  For 
example, it also sends along the number of input and output bytes it has sent 
(useful for some scripts that collect that stuff) as well as how long the server 
has been up.





    
    


More information about the crossfire mailing list