All of this experience could really pay off in ten or fifteen years. Consider these examples:
- One of the weakest points of the Internet right now is the domain name system, which is run by a loose confederation of name servers. Running DNS on top of a peer-to-peer system instead could dramatically improve its reliability.
- Today, if your business runs a small Web server and the site suddenly gets very popular, the server can crash from all of the extra traffic. But if all of the computers on the Internet were part of a global peer-to-peer Web cache, then small companies and individuals could publish their material to the multitudes. A good system would even prevent malicious modification of the Web page contents when they were served off other machines.
- In the event of a terrorist attack on the Internet’s infrastructure, a peer-to-peer system would be far more likely to recover than a system that depended on top-down control.
Closely associated with the idea of peer-to-peer is the concept of an “overlay network.” These are networks of computers that operate above the Internet, with direct links between computers that might be geographically distant on the Internet itself. Gnutella, Kasaa, and Morpheus are all overlay networks, as is the global network of Web servers operated by Akamai.
To understand why overlay networks are an interesting idea, you first need to understand how the Internet works without them. Normally, if a computer in Washington, DC, wants to open a connection to a computer in Tokyo, it simply sends the data packets into the vast soup that is the Internet. Eventually the packets end up on the other end.
Now, according to the original design of the Internet, the packets between the computer in Washington and the one in Tokyo would automatically travel along the fastest, most efficient path. Unfortunately, today’s Internet doesn’t work that way. Your Internet service provider in Washington might have a sweetheart deal with an ISP in England to exchange packets over the Atlantic Ocean. The English ISP might, in turn, have a deal with an ISP in Germany. And the German ISP might have a special line that goes to Japan, but that line might be oversubscribed and slow. It could turn out that the fastest way to get packets from Washington to Tokyo is by sending them to San Francisco and then to Japan-a path that might exist but be discouraged by policy. This isn’t a hypothetical example: such byzantine routing is common on today’s Internet.
Overlay networks force the Internet to route packets differently by moving them between specific computers. For example, you might have an overlay network that consists of a computer in Washington, another in San Francisco, and another in Tokyo. By sending the packets from one of your computers to the next, you could defy your ISP’s routing policy, and force your packets to go along a path of your choosing.
If you have access to computers at more than one location, you might have experienced the wonders of overlay networks yourself. For example, I have a computer in Belmont, MA, another in Cambridge, and another in Boston. Each machine is served by a different ISP. Sometimes I can’t open a connection between the computer in Belmont and the one in Boston. During these times, I can hop from Belmont to Cambridge, then from Cambridge to Boston. Essentially, I’ve created my own overlay network.