Here, we look at three P2P software programs, Freenet, Gnutella and Opencola. While Freenet is a large-scale P2P network implemented purely across PCs around the world, Opencola is more of a unified search-engine interface for various sources on the Internet. It can search for information from the Internet; news feeds from news servers, and global institutional
databases and even in hard discs of other users. It’s a collaborative P2P application
Freenet
The original intent of Freenet was to create an application that would enable all Net users to share sensitive information like political discussions amongst them- selves without any fear of government reprimand. Thus, the emphasis was on anonymity and freedom from any type of control. For this, Freenet’s architecture is completely decentralized and distributed. There are no central servers, and all peers on the network have equal authority. Clients that connect afresh to the network connect to any host randomly and thus give the network an unorganized scattered topology.
Notice the Address line in the browser. The part after the localhost address is called a key, which is the root of anonymity and security of Freenet |
On Freenet, before any peer on the network can retrieve data, the same must be inserted into the network by another host. This ‘insertion’ process is one of the requirements that distinguishes Freenet from other apps. To insert anything into the network, the host with the original data first calculates a key (hash) using SHA-1, and then starts uploading the data to the network. Which machine gets the data is decided on the basis of the key. Usually, data with similar keys resides close to each other. When a peer wants to download some data off the network, it uses the hash to look for it, and requests that it be sent. This sent is propagated through the network using the ‘key nearness’ concept. Then the data is sent back from the host hosting the data and is cached by all machines through which it passes. Thus, more machines automatically host data that is requested more. If machine A communicates with machine B, there is no way for B to know if the query being sent by A originated at A, or at some other peer connected to A, thus giving the network its anonymity features.
Freenet is a Java-based application. When you run the installer, it goes out to the Web and retrieves a couple of .jar files needed for the installation. During the course, it also asks you to specify your node data store size and path (this is the data store accessible to other Freenet users from your machine). You also need to mention your type of connection and hence the node availability to the Internet (24/7 nodes are better and ones not behind a NAT or Firewall, though they are also supported).
Once installed, a little rabbit icon in your system tray becomes your interface to the Freenet network. You run a ‘node’, which talks to other nodes in the network. A point to note here is regarding the ‘Build’ number of your software version. Take care to frequently upgrade your build (from the Update Snapshot option in the Program group of Freenet) otherwise nodes with newer builds will not talk to you and you would die out.
How it works
Right-click on the icon and click on ‘Open Gateway’ to start browsing. When you request certain data from the network, your node asks neighboring nodes for it. If they don’t have it, they ask other nodes. This is how the file travels through the network. Frequently requested files are stored as local copies on nodes and this improves the performance of the network. There is a very simple explanation for the anonymity aspect of Freenet. It is impossible to tell the source for any request. This is because one node might just be handling the request and passing it on for another node that originally requested the data.
Thus you have complete freedom of speech!
Also, no one can remove/censor any data unless they get on to destroying all nodes in the network, because cached local copies of the data will exist on other nodes apart from the original. Further, popular content would propagate through the network (because of frequent requests and hence multiplication) and non-popular content would die out.
While browsing, you may observe some time lag before a content page is displayed. This is normal because the content is hosted on standard PCs like your own and also because it might be traveling across nodes to reach your browser. To start publishing Freenet sites, you need a couple of tools that are freely available on Freenet. ‘Nubile Edition 10’ is a good place to start with the basics of publishing content on Freenet. The Freedom Engine is a good FreeSite that regularly catalogues other FreeSites on the network.
Gnutella
Nullsoft of WinAmp fame, now a subsidiary of America Online, released Gnutella in March 2000. Gnutella did not require central servers at all, and couldn’t be stopped by any authority. In April 2000, AOL declared it a rogue app and terminated it. However, several thousand people had already downloaded it, and the protocol was quickly reverse-engineered and other applications were developed that could use the network.
Byte | Description | Value |
0-15 | GUID (global identifier) |
Random 16 bytes |
16 | Function | 0x80 (hex), 128 (dec) |
17 | TTL | 7 |
18 | Hops | 0 |
19-22 | Payload | >2 and <256 |
23-24 | Minimum Speed |
Min. speed of client |
25+ | Query | Keyword being searched for |
Total size = 23 bytes + payload |
Flow: Broadcasted |
Overall, Gnutella’s architecture is very similar to Freenet’s–in that it has a random unstructured topology–but works in quite a different fashion. There is no concept of keys, and data is downloaded straight off the peer that is hosting it. To connect to the network, one must know of at least one computer that is already a member of the network and connect to it. Then it sends a ping request to the other peer announcing its presence on the network. The ping request also includes a TTL (time to live) count, which states how many times the request can be forwarded to other computers. The default TTL value for most Gnutella peers is 7. An example of a typical Gnutella data packet is given above (this one is for file searching).
Opencola
The Beta for the software has been launched recently and is downloadable from www.opencola.com. You are also assigned a username and password. The installation is simple and upon running the application, you are prompted to log onto the
Opencola network with your username. Once connected, the various fields and options are straightforward and
self-explanatory.
How it works
To search, you can either use the options from the Search drop-down box or use a custom search. The custom search allows you to modify the news servers and Internet search engines to be looked at.
Opencola uses a contextual associative search mechanism. This analyzes the context of information to determine relevant associations in content among other searched documents. Depending upon this, a search score is allocated to a result. This search score can be manipulated to refine the returned results. This model goes a step ahead of a simple keyword search (provided by Internet search engines) by analyzing the complete document content. Your searches are stored within the application and it also repeats the search depending on a predefined interval of time to check for changes.
When we tested this software, there were still some bugs in the application and the connection to the Opencola cluster managers broke frequently. But all in all, the concept is surely a success considering the vast amount of information available in the public and private domains, searching through which would otherwise take ages.
Ashish Sharma and Anuj Jain