Published on (
 See this if you're having trouble printing code examples

P2P Profiles

XDegrees tackles name service and file caching


Related Articles:

Porivo: Load Testing with P2P

Consilient: Workflow Among Peers

P2P Smuggled In Under Cover of Darkness

How Ray Ozzie Got His Groove Back

Peer to Peer was Here

Peer-to-Peer Makes the Internet Interesting Again

More from the

One of the major problems in peer-to-peer systems is helping peers find other peers. Most systems solve this in quite a crude manner: AOL Instant Messenger and Napster, for instance, offer flat namespaces and do all the name resolution on a central server. XDegrees offers a more robust and scalable solution worthy of the sophisticated peer-to-peer systems many organizations are trying to develop nowadays.

The essence of XDegrees consists of a naming system and a distributed database that allows peers to resolve resource names. XDegrees manages these services for customers on its own hosts, and sells its software to enterprises so they can define and run their own namespaces on in-house servers. You can search for a particular person (whatever device the person is currently using), for a particular device, for a file, or even for a web service. The software that resolves resource names is called XRNS (the eXtensible Resource Name System).

Files can be cached on multiple systems randomly scattered around the Internet, as with Napster or Freenet. In fact, the caching in XDegrees is more sophisticated than it is on those systems: users with high bandwidth connections can download portions, or "stripes," of a file from several cached locations simultaneously. The XDegrees software then reassembles these stripes into the whole file and uses digital signatures to verify that the downloaded file is the same as the original. A key component of this digital signature is a digest of the file, which is stored as an HTTP header for the file.

To find a resource, a naming system is needed that associates a unique identifier to each resource. That's the biggest contribution of XDegrees to peer-to-peer, and in theory their naming system could be adopted by other systems in order to become a standard.

Unlike a traditional URL (which consists of a host name or IP address followed by a filename on the host) XDegrees URLs let users assign names in a flexible manner. There is no fixed relation between the XDegrees name and the physical location of a file. This allows storage to be flexible and to change in response to interest among users.

In order to build on the Web's widespread adoption, XDegrees has made its URLs completely compatible with Web (DNS) URLs. Users can access XDegrees resources simply with a browser. For example, a user named Sally at Acme Corporation might share a press release from her PC with the URL In at least one way, the XDegrees system is superior to Jabber's naming system. Jabber associates a resource to a single location (one-to-one) whereas XDegrees can have one-to-many mappings. That means that if you're looking for a file and the closest system with it is down, you can hop to your second choice automatically.

XDegrees also offers caching servers, so that if mobile users go offline (for instance, if a laptop user takes her laptop home), the files that they have shared are cached on a server and are thus still available. The XDegrees technology indicates that the user's machine is offline but that the file is still available on the cache server.

Files have an associated digest (stored in the digital signature and transmitted within the HTTP header for the file) that allows the system to tell whether somebody has tampered with a file. Digests also permit versioning, so people can release new versions of executables and data.

The resource resolution system supports sophisticated searches. Here's where XDegrees starts getting nifty.

There's a "relevance engine" that can sort the results of a search by the speed of the connection, by the cost of the connection, latency, etc. It supports both striping, as already mentioned (so you can retrieve multiple parts of a file quickly from multiple locations) and time-shifting (so you can announce the availability of files and have friends download them in the background when connections are otherwise idle).

When someone retrieves a file, it could be cached and served up to other users. Configuration options allow or disallow caching. XDegrees recognizes the concept of user groups, so that for the sake of security you can allow files to be cached on other systems owned by your group and not by outsiders.

Files can be encrypted during transmission and when stored. Authentication is supported. For instance, an enterprise can associate resources with Access Control Lists. This allows enterprises to control who can see what critical files and folders within the organization, as well as define what permissions (e.g., read, write, execute) each user has for a given resource. Finally, permissions and authentication databases can be linked to existing enterprise directories using standards like LDAP.

One of the sophisticated uses of caching and the relevance engine is in reducing the load on ISPs that require peering (the old type of peering!). If one AOL user wants a file stored on the system of another AOL user, AOL can specify that the first attempt to retrieve the file stays within AOL. Only if no AOL user with the file is available will the retrieval go outside AOL.

The resource resolution system works a little like DNS. Just as a browser uses DNS to resolve the hostname in a URL and then lets the remote host resolve the rest, a browser can use the XDegrees resource resolution system find a resource and then go directly to the host (as with Napster) to get the resource.

Scaling is the main question that comes to mind when somebody describes a new naming and searching system. CEO Michael Tanne claims to have figured out mathematically that the system can scale up to millions of users and billions of resources. Scaling is facilitated by the careful location of servers (XDegrees will colocate servers at key routing points, as Akamai does), and by directing clients to the nearest server as their default "home" server. Enterprise customers can use own servers to manage in-house applications.

Like all sorts of new companies that are using the Web as their vehicle, XDegrees requires users to download and install a small component dedicated to XDegrees services. But the single Client Component they provide can potentially allow users to access all services offered by all applications, if these applications use the XDegrees services.

Once the Client Component is installed, a server can order a program to run on the client. Any CGI script, Java servlet, ASP component, etc. could be run on the client. This is like breaking the Web server into two parts. Originally, Web servers just understood HTTP and sent pages. Then the field started demanding more from the Web and the servers got loaded down with CGI and mod_perl and active pages and stuff. So now the Web server can choose to go back to simple serving and (where the application is appropriate) let the client do the other razzamatazz. This is superior to JavaScript in one important detail: the program doesn't have to reload when a new page is loaded, as JavaScript functions do.

And because XDegrees uses Web-compatible technology, users can access XDegrees resources without installing any software, simply by using their browser.

The XDegrees business model is to sell its core XRNS servers as both licensed software for installation within organizations, and on a hosted basis. Enterprises and technology partners will be able to license this infrastructure to build their own applications. In addition, XDegrees will build and sell a few select enterprise applications using XRNS.

Tanne's goal is to provide more and more of the infrastructure, permitting application developers to focus on applications (the common cry of many software vendors). Examples of typical applications could be:

Some of the infrastructure services XDegrees is working on include subscriptions, digital rights, and modules to facilitate the development of applications. They are open to the idea of somebody interoperating with them, as so many companies have done with AOL Instant Messenger. Because their model involves running their own servers, they can compete on the basis of the quality of their implementation.


Return to


Copyright © 2009 O'Reilly Media, Inc.