Haven Technical Highlight: Peer-to-peer Data Downloads

Teodric Abstract: This document is part of the Haven project . It is a suggestion for use of peer-to-peer technology to limit network demands on servers in massively multiplayer scenarios with large download volumes. It is not an implementation or a design, just a draft for a construct.

Availability: Public

Contents

Note - Peer-to-peer Data Downloads : Terms , Concept Outline , Hurdles , Improving the Concept , Explanations - Further Discussion : Profitability Analysis , Security Issues , Client Cache , Improving the Design - Additional Notes - Additional Resources - Thanks - Copyright

First Disclaimer: P2P, Not!

Upon pondering the P2P aspects of the things below, I came to realize that the term peer-to-peer is misleading. This has nothing to do with distributed networks or self-governing or serverless operations. This is really about "client-to-client" services, since both "client" and "server" are definitely governed by a separate "server", a higher entity. That said, I'm not about to change the usage of the term at this time. I sort of like it as it is. (Ok, I'm lazy) One day I will revise it but don't hold your breath.

Note

This is a slightly updated version of a submission (by me) to the MUD dev mailing list . It will (hopefully) be updated with improvements and corrections, as well as added to to further explain and investigate the concept.

Peer-to-peer Data Downloads

I'm sure many readers 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.

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, media-control-wise speaking. 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

Concept Outline

The basic characteristics of the service outlined here, and how it works

Hurdles

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

Improving the Concept

To additionally improve the concept, one could

Explanations

Various loose ends:

Ok - so why am I posting this here? (i.e. on the MUDdev list) Well first because I think this is a nice forum. Second, there's the patent stuff... I came up with this design over a year ago, and at approximately the same time, an old colleague mailed me a link to a patent watch site, saying "hey, isn't this similar to what you and I did?" - and it was. (It wasn't the same, I don't need advice on previous implementation or anything - I'm not fighting a patent). Then there's this 3D patent - someone has a patent for limiting data sent to clients in order to improve graphics performance (silly, I know). Then there's my wish to create ... games. Online games, of course - that's why I'm reading this list and posting here.
As part of my own projects, I figured the scheme I outlined above would be very nice, and I realized it was probably patentable (a change in patent law in Sweden (where I live) also plays a role here) and that I might think it fun to try and patent it.
Life isn't always developing the way you'd want it to however, and I can no longer expect to be able to follow through on this idea. I now have neither the money, time or resources to do it. Therefore I'd rather see the idea in the public domain than patented by someone else. My idea of filing a patent of my own was more for fun and less for profit - the thought of a multinational filing the patent makes me uncomfortable. It is my hope that this post makes this particular patent easy to annul. It is also entirely possible that this whole construct is not patentable due to the P2P technologies already in use in various places or that someone already came up with this whole scheme.

So I choose to dump the idea out here instead - perhaps some of you 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).

For reference I submit this text to the MUDdev mailing list and at the same time put it up on my private (hobby) project site, located at http://www.abc.se/~m10383/Haven/Highlights_Technical/P2P.html . Please note that the project is not intended for widespread consumption, primarily because some pages may contain less than friendly views of actors, events and habits in the gaming industry - I'm in the process of cleaning this up. At present I only use this document collection to easily supply friends and colleagues with data when discussing.

In this Slashdot post , two similar implementations are mentioned. One is BitTorrent , an open implementation (apparently in Python) of a very similar scheme. BitTorrent seems not to bother with NAT bridging (I have not researched it enough to see what it does with firewalls). The other is FurthurNet , a Java application. Both are basically the same scheme as outlined in this paper. Both have history reaching back to before my posting of this paper but the slashdot post is the first mention of them that I have seen.

Further Discussion

This section provides some further discussion on the topic.

Profitability Analysis

The factors for determining profitability of implementing/using the scheme outlined above.
Gives inequality:
n * C * d <=> (n * C * s) + (I * H)

The pairing setup must have a backup system of ordinary server download. One of the reasons is that it cannot be taken for granted that there will be clients with server capabilities available at all times.
Modified inequality right side:
((n * C * s) + (I * H)) * (k * n) + ((n * C * d) + ((1 - k) * m))  * ((1 - k) * n)
or
(nCs + IH) * kn + (nCd + (m - km))(n - kn)

which means we are comparing

nCd <=> ( knCs) + (Cd n + (m - km))( n - k n ) + IH

(note: this looks boggled, must verify when less tired :-P)

Of these factors, all except number of clients (n) and success rate (k) are best seen as constants. To do: Create a spreadsheet or other visual representation of how the scheme performs cost-wise with varying k and n.

Relevant (but not directly affecting equation) data

Security Issues

A number of steps must be taken to ensure integrity of the client's system
A number of steps must be taken to reduce risk for compromised data

Client Cache

The construction of the client cache (the data section of the client installation, minus any mandatory files) should have certain characteristics

Improving the Design, Getting Inspiration

Initial feedback from the MUD dev list confirmed one of my fears, that the most serious-looking obstacles might prove to be security and network topology, namely the opening of a host:port that cannot be hidden from the other party in the communication, and the problems that arise from firewalls and NAT.
To seek a solution or improvement for this situation I consulted the real P2P world. Gnutella is a protocol used by many P2P file-sharing applications. It is completely server-less and works in many awkward topologies. It can still be blocked out of course, and cannot alter fundamental truths about open ports. Nevertheless, the Gnutella protocol is interesting reading. The Gnucleus site - http://www.gnucleus.com/ - has a lot of information regarding various aspects of Gnutella. Of course, so does the Gnutella site , http://www.gnutella.com/ .
Among the interesting solutions in the Gnutella protocol is the push, which enables servers behind firewalls to share files - instead of clients connecting to them,  clients request that the server connect to them and then transfer the payload. The solution does not work if both parties are behind firewalls. Gnutella and similar services apprently have no problem with NATs.

Refinement Discussion

Some points about how the system should be brought to use

Additional Notes

The MUD-dev mailing list can be found here (http://www.kanga.nu/lists/listinfo/mud-dev/) . The archives are here (http://www.kanga.nu/archives/MUD-Dev-L/) . The original post is here (http://www.kanga.nu/archives/MUD-Dev-L/2002Q1/msg00556.php) .

Additional Resources

Thanks

Thanks to friends and colleagues who helped with this concept.

Copyright

This text was written in its entirety by Olof Ekström. For more information about the author of this page, see Olof Ekström's personal information in the Project Profiles document.

Copyright © 2002 Olof Ekström/Extro System. All rights reserved.

Bälinge/Uppsala, Sweden, February-March 2002