Gnutella2 Specifications
An anonymous reader writes "After lots of heated debate regarding Gnutella2, (first story and more recent story), the specifications have finally been released. There is a mirror here. Let the debates begin."
← Back to Stories (view on slashdot.org)
i'm surprised nobody mentions giFT anymore. the later cvs's work pretty well now, with less corruption.
For those of you who don't want to pop over to the site. Or if it get's slashdotted (which would be odd).
What is Gnutella2?
Gnutella2 is a modern and efficient peer-to-peer network standard and architecture designed to provide a solid foundation for distributed global services such as person to person communication, data location and transfer and other future services.
Why is it needed?
Peer to peer technologies have become mainstream over recent years, and there are already a significant number of P2P networks in various stages of development and operation.
How does yet another network help?
Gnutella2 is unique amongst the currently operating peer to peer networks in several important ways:
* Many of the most successful networks are "closed", owned by a single entity with restrictions or fees constituting a barrier to participation. This is not a viable model for an open, general purpose network. Gnutella2 is an open architecture where anyone is welcome to participate and contribute. The network has been designed to allow such diversity without the need for messy hacks or compromises in integrity.
* The majority of networks are devoted to a single purpose, often the sharing of files. This is certainly a popular application for peer to peer technology, but it is by no means the only application. Gnutella2 is designed as a general purpose network which can be used as a solid foundation for any number of different peer to peer applications - vanilla file sharing, communications tools or other ideas which are yet to be conceived.
* Some peer to peer networks have been developed with similar general purpose goals, however they have been unable to compete in the most popular application of the day, which is file sharing. For a general purpose network to succeed, it must be able to compete with purpose-specific networks in the most popular purpose. Gnutella2 is not only able to compete with the current popular file sharing specific networks, it outperforms them.
What About "Old Gnutella"?
The original "Gnutella" was created several years ago as a very simple, single vendor file-sharing specific network. Its simplicity made it a popular platform for file sharing application developers; however this simplicity also critically limited its effectiveness. As a result, competing file-sharing specific networks slowly but surely took over as the tools of choice as Gnutella users became frustrated with poor performance and turned elsewhere.
The original Gnutella[1] network was designed for a very limited purpose and, despite many changes over the years, remains limited today. Efforts to make it a better file sharing network continue with mixed success.
Gnutella2 shares the "Gnutella" name, striving to create the network that Gnutella should have been from the beginning. It shares the adopted ideals of openness and cooperation, but offers a fresh start that was sorely needed. The crippling limitations of the old network have been left behind and replaced with an entirely new network architecture ready to grow and develop through the creative efforts of many.
What is the Scope of Gnutella2?
The single name "Gnutella2" really refers to two separate components: Gnutella2 the Standard and Gnutella2 the Network.
The Gnutella2 Network is perhaps the most easily recognised component. It is a new high-performance peer to peer network architecture upon which a variety of distributed applications can be built, such as file sharing applications, communication tools, etc.
The Gnutella2 Standard is a set of requirements for building applications which operate on the Gnutella2 network in different capacities. It specifies the minimum compliance level required to be recognised as a Gnutella2-compatible application. Compliance with a Gnutella2 Standard ensures participating applications provide a minimum acceptable level of service to other network participants.
For current Gnutella2 users you can download the specs through the network here.
Common Gnutella2 Standard (All Applications)
All applications making use of Gnutella2 technology for any application class MUST IMPLEMENT the following core features:
* Bidirectional TCP stream connections
(stream compression OPTIONAL)
* Bidirectional reliable UDP protocol
(Gnutella2 reliability layer and stateless compression REQUIRED)
* HTTP-style link negotiation, exchanging at least the required headers
* Gnutella2 protocol support, graceful handling of unknown trees
* Localised, UTF-8 and UNICODE decode REQUIRED, encoding to each optional
* Operation in LEAF mode, additional node states OPTIONAL
* Basic link handshaking and maintenance functionality (PI/PO/LNI/KHL)
* Global node addressing scheme and routing maintenance, addressing children (TO)
* Reverse (PUSH) connection response (connecting out)
* HTTP/1.1 client and server for peer to peer transactions
Gnutella2 Standard for File Sharing
Applications making use of Gnutella2 technology for file sharing MUST IMPLEMENT the following features:
* All of the COMMON features listed in the previous section
* Operation in LEAF mode, additional node states OPTIONAL
* Some form of bandwidth management scheme to keep network and transfer bandwidth below 95% of the user's link capacity - be it manually configured or some automatic scheme (very important to avoid flooding local connection)
* SHA1 and TIGER ROOT URNs for all shared objects
* XML metadata using existing schemas where appropriate (manual entry and peer acquired at minimum, automatic local collection highly recommended, service lookup optional)
* Universal 1-bit query hash filter, at least 2^20 length, intelligent density management scheme (superset combination required if supporting hub mode)
* Gnutella2 object search mechanism, all client responsibilities and if supporting hub mode, server responsibilities too
* Local search processing including simple query language (Boolean operations, quoted search terms, numeric range searches, interest flagging (I), local rule-based metadata searching)
* Extensible hit format (URN/DN/MD/URL are REQUIRED, all other extensions OPTIONAL)
* HTTP/1.1 based upload system, URN based requesting, partial content requests, active queuing, partial file uploading, timestamp protected alternate source cache and exchange
* Tiger Tree volume calculation on shared files, caching on downloads, exchange via DIME. Local corruption detection OPTIONAL but recommended.
1. There is a rating system that can help but not prevent this.
2. No.
It is "Mike's Protocol", as mentioned at the interview linked to from the previous post.
With the integration of Overnet [overnet.com] support into EMule it now has the best of both worlds, ...
You sure about that? There is no mention of Overnet in the eMule changelog. You sure you aren't thinking of the eDonkey Hybrid?
This post contains benzene, nitrosamines, formaldehyde and hydrogen cyanide.
In case anyone wants to run eMule in Linux, you can get lMule (Linux port).
Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
Overnet is not currently integrated with eMule however the developers are working on it. The opcodes are in the source and it should be available in the next few versions somewhere (so I have read).
My blog [.net, rants, general IT]