[MUD-Dev] [TECH] Peer-to-peer downloads for MMO games

Olof Ekstrom olof.ekstrom at abc.se
Thu Feb 21 13:32:37 CET 2002


Abstract: 

  A suggestion for use of peer-to-peer technology to limit network
  demands on servers in massively multiplayer scenarios with large
  download volumes.

Keywords: 

  Client side caching, peer-to-peer, patching, network bandwidth
  Content: Suggested service outline, request for input

I'm sure readers of this list are more knowledgeable than myself
when it comes to the exact cost of bandwidth, but suffice it to say
that bandwidth is, at least for MMORPGs, a substantial part of the
operational budget. So there is need to limit network bandwidth
usage.

MMORPGs have a substantial need for patching, this is no
secret. WWIIO had a ~70M mandatory patch upon release, updates and
patches of various titles frequently demand similar downloads. To
address this issue, I came up with a design to offload the bandwidth
demands of the game operator. To my knowledge, noone has tried this
solution yet.

Recently peer-to-peer (P2P hereafter) technologies have received a
lot of attention. The gaming industry is interested in control and
I'm not terribly surprised to see that P2P has not been a popular
design feature. In online games, additional problems in the form of
hacking and cheating in various ways add to developers' cautiousness
for the subject. I believe it is doable, and this is what I set out
to do:

  Terms: 

    system - all the services and machines operated by the provider
    of the application

    service - a server providing files, maintained by the owner of
    the system

    client - an application running on a customer's computer

    provider - an application making something available to others,
    either a service provided by the system or a feature of an
    application on an end user's computer)

  - On demand, dynamic background patching. The client receives
  updates of the player's surroundings and then knows what media it
  needs. If that data is missing or corrupt, the necessary files are
  requested from the server.

  - Clients are registered as they connect, collecting up- and
  downstream bitrates and whether the client can support hosting
  media. This is a run-time registration only, not customer or
  subscription which are separate as needed by the system.

  - The server system provides download services and client pairing

  - Upon request for a media file, the download service either
  provides the file directly or notifies one client to act as server
  and the other where to get the file. When assigning P2P client and
  server roles, the service must track current bandwidth usage at
  both ends. The client requesting the download also receives a
  checksum map of the file requested with additional data necessary
  to detect corrupt or tampered data.

  - Clients verify their media files via checksums. If corrupt data
  is encountered, the download service is notified and a new data
  provider assigned. The service may take steps to correct the
  download provider (the client that provided corrupt data - at the
  least, the client should be forced to repatch the data on its own
  installation)

  - To additionally prevent malicious tampering, media files are not
  taken from a client in their entirety but in fragments. Typically
  only a few kbytes in each block. This way only blocks that pass
  checksum tests can be provided, and a checksum of the complete
  file can also alert the system to tampering or corruption.

  - The stream for download must be throttled so as not to interfere
  with actual game updates (patching bitmaps must not prevent the
  user from seeing what is happening in the game)

  - The media stream (the P2P stream mentioned above) is separate
  from the game update stream, ie no game data updates occur in this
  stream.

The main hurdles to overcome to make this implementation a reality
and, most of all, useful are as I see them:

  - Server processing. The workload for keeping the system in
  operation is tremendous. I honestly think the advantages in
  bandwidth costs should pay the hardware expense, if not at this
  time then within a year or two. Continuous operation also pays off
  - buying a server is a one time cost (let's skip other financing
  options for now, they don't change basic facts), while bandwidth
  costs every day, every hour, every minute.

  - Customer client bandwidth. Widespread use of broadband services
  is necessary. Also necessary is that clients be configured to
  accept and allow P2P usage. MMORPGs today all use less than what a
  56k modem provides and most of the bandwidth of broadband
  customers is unused.

  - Clients must either be forced to accept being used as hosts
  (less than tasteful if you ask me) or given a good reason to
  provide it, such as subscription cost reduction or otherwise
  improved service.

To additionally improve the concept, one could 

  - Use multicasting for downloads (this will probably not be
  feasible until IPv6 is widespread (2006?) - correct me if I'm
  wrong - I know very well it's possible with IPv4, but is it
  practical? I think not)

  - Use an engine where all media is seamless. There are no zones,
  the playing area can be continuously expanded on the edges.

  - Require no data (or very limited amounts of data) for
  installation. (The application can be distributed on CDROM or DVD,
  that is just more convenient than downloading)

  - LOD schemes for all media, possibly with a "lowest acceptable
  level" of media file installation which must be present for the
  user to commence playing. Once the client is verified to have the
  necessary basic files installed, the rest can be left to
  background patching.

  - Any type of data can be patched this way - this applies to for
  example terrain, textures, models, animations, audio clips or
  binary excutables and whatever other data the application uses.

  - The client installation could maintain the data in separate
  files or in indexed composite files. This is not relevant to the
  construct, just a separate improvement.

  - A verification system must be in place on the client. The amount
  of checksums etc that must be transmitted to verify a client's
  data must be limited somehow - this is a bigger problem than it
  might at first seem, if one takes the unknown state of the client
  machine into account. (This is probably where the least acceptable
  client installation comes in.)

Notes:

  - The concept of an in-application P2P system (imagine Windows
  Update having a built-in Napster function to offload Microsoft's
  servers when propagating patches - Kazaa, a file sharing service
  like Napster, uses its own service to distribute its binary btw,
  I'm sure there are more examples) is certainly applicable in other
  contexts and the demands are quite similar. I merely choose this
  (online games) context because that was the application it was
  designed for, plus it's one of the best fits for the scheme that I
  can think of. There are security concerns, certainly. Such
  concerns is the reason we study computer security and crytography
  and so on - a problem requires a solution, not resignation.

  - The 2006 date is what I recall to be the deadline for when the
  world needs to have IPv6 in place, as well as the date for when it
  could reasonably be in place. Happy coincidence, that.  - As a
  reference to a block-comparing file synchronizing service, see the
  implementation of rsynch, a very nifty *nix utility/service. (I
  have not gotten to this particular point in the implementation
  yet, I was only told that it does things this way - it is relevant
  for block-wise synchronizing, not for P2P which it does not do).

  - The 3D patent mentioned - I don't know whose it was or when it
  was published. I know it was reported on Gamasutra among others, a
  search in their archives might be in place.

  - I am not unaware of the undeniable insecure nature of a client
  installation. Any data that is present on a client machine (in
  persistent or temporary memory) must be considered cracked and
  tampered with.

  - Run time properties of the scheme - the scheme requires a
  massive scenario to be worthwhile. It also becomes profitable only
  in cases where there are substantial downloads.

  - The mandatory question: where is my download so I can use this? 
  Answer: Nowhere. I have no working implementation of this,
  especially not in its entirety and in particular, nothing for
  free.

Perhaps some on this list can find the idea useful or interesting,
perhaps you can spot a fundamental flaw. I realize that it applies
very little to MUDs, but it certainly applies to MMO and therefore I
submit it here. If this topic has been discussed before on the
MUDdev list or elsewhere, I am not aware of it (yes, I have
searched).  Any additional data on bandwidth usage in existing
MMORPGs would be interesting to know as well. The bandwidth
requirements of the client is usually well known (as stated on the
box) but the actual usage and/or cost for the game operator would be
interesting to know. I recall a statement from Verant saying the
bandwidth cost was somewhere in the range of 35-50% of their cost of
operations - don't know where I saw it, sorry (I have tried to find
it again but failed).

Please let me know of any reactions. Apologies for the somewhat
pompous format - that's just my style I guess. I'm not trying to
stake claims for fame. Apologies also for the longish post, I hope
some of you found it readable.

- Olof

/em fully expects to be told this is a silly idea, still wants to try
_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list