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)
Great, just in time to start spreading ISO's of Mandrake 9.1!
Support FSF: Stop thinking with your wallet, and think with your imagination. (cc/non-commercial)
Now if only we can find a way to share more than bad pr0n and cheezy MP3s, this will be perfect.
How To Get Humans To Mars
i'm surprised nobody mentions giFT anymore. the later cvs's work pretty well now, with less corruption.
I can use this to share all my Linux warez with impunity!! Ha ha GPL take that! I'm sharing and there's nothing you can do about it!! NOTHING!
pr0n wants to be free.
Slashdot the specs so nobody can develop clients! That's absolute genius. I wonder how much Hilary Rosen is paying Taco for this? ;)
using namespace slashdot;
troll::post();
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.
I used to use gnutella all the time. But not enough people used it, so it was difficult to get the files I needed. Maybe Gnutella 2 will usher in a wave of new users. Then we can finally stop using Kazaa.
YOU SUCK BALLS!
as long as it has the same sweet chocolatey nutty goodness im not tooo fussed at which version it is
Two questions:
1. Can this version prevent abuse from folks that try to flood the system with bogus or damaged files?
2. Will this version enable people to download anonymously?
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.
continue. let the debates CONTINUE. anyway, i have one major wish for gnutella2: that it will be to rare files what kazaa (lite of course) is to popular ones. fasttrack gives us everything we need for the stuff that lots of people want. what we really need in the p2p world is a more efficient way of transmitting the rare stuff.
This, hopefully, will be the "re-birth" of Gnutella, or at least of a new open free P2P protocol. And the fact that this protocol looks to be, and pretty much is, the most technical, feature rich and advanced protocol currently out is fantastic. I can't wait until someone adds an "Anonymous layer".
/.'d, here is a URI (need Shareaza to download it).
U 3A FICBDU&dn=Gnutella2%20Specs%20Draft.htm
No word yet if any of the classic Gnutella clients (such as BearShare, Limewire etc.) will be adopting Gnutella2 at all (although Gnucleus has vowed to in the future). However, there are some that are open source/GPL'd, such as GTK for *NIX, Aquisition for OSX or Limewire in Java.
Incase the specs get
magnet:?xt=urn:bitprint:PMKP57E2TXFI2Z37M3A7CJ2
There is a lot in gnutella2 that wasn't in gnutella. I mean, the document is *huge*...it MUST be groundbreaking, since if it were small folks would actually find somethign to cut and paste and make fun of it to get +5 insightful. [/joking]
Slashdot: Where people pretend to be twice as smart as they really are by behaving like children.
Oh, I see. Like cheezy pr0n and bad MP3s. Okay. I understand now.
Sure does.
o c3 6413036
http://www.gnutella2.com/gnutella2_draft.htm#_T
Within Shareaza, you can fill out a "Type" attribute for video files through it's video schema. You can set the "Type" to "Adult". So if everyone who had pr0n on the network set the metadata to Type: Adult, then you could search using Shareaza for all files with that type. (And get all pr0n) Or, if you wanted to, you could perhaps filter them out somehow (though, that capability really isn't there yet, though you can set security rules in Shareaza to filter out all search results with "certain keywords").
1. There is a rating system that can help but not prevent this.
2. No.
Usually, specs aren't newsworther - but these particular specs *have* been subject to a hell of a lot of controversy, and concern a topic most people here are interested in filesharing (free porn/music/movies). The fact that it's taken so long to get these released has pissed off a number of people already.
It is "Mike's Protocol", as mentioned at the interview linked to from the previous post.
For instance pretend for a second that Linus did not have the copyright for the Linux name and a coder or better yet Michael Robertson registered the domain name Linux3.com and marketed a new kernel as an official version of the Linux kernel by Linus and pushed it as the latest and greatest version of Linux.
IPv6 addresses are longer and are not yet defined within the scope of Gnutella2, however applications should be aware that if the node address is not 6 bytes it is of a different address family
With the number of machines now sat behind NAT it seems like an odd omission. So many p2p applications have FAQ entries explaining carefully how to port forward, and that only enables one machine behind the NAT box to be fully part of the network.
Slashdot looked deep within my soul and assigned
me a number based on the order in which I joined
i mean, that's the whole point of peer-to-peer, right? to solve problems like Slashdotting. :)
Just raise the taxes on crack.
The first chocolate hazlenut P2P network....
GNUTELLA CONNECT/0.6
Listen-IP: 1.2.3.4:6346
Remote-IP: 6.7.8.9
User-Agent: Shareaza 1.8.2.0
Accept: application/x-gnutella2
X-Ultrapeer: False
The Remote-IP header contains the IP address from which the remote host is connecting. This allows a remote host operating through some kind of network address translation system to learn its effective external address.
The Local-IP header contains the IP address and port number that the local host is listening for inbound TCP connections on. It should be listening for UDP datagrams on the same port. The format of this header is "IP:PORT", eg "1.2.3.4:6346".
Can you say DDoS? Would be fun and easy to get an entire network of gnutella clients to respond to one ip.
Among the "must" features I read : "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)". I would have presumed that this functionality has nothing to do with Gnutella and is better left to iptables. I don't even understand how Gnutella is supposed to be aware of what other applications are doing with the link so that it can "keep network and transfer bandwidth below 95% of the user's link capacity". To me this should have been a "should", not a "must".
While refining the original protocol is all well and good, why not look towards intergration with other open networks now?
I've used em all, as they say, and while no one client is best for all applications I'd say the Emule development is damn close. Since it's Open Source and there are several main "production" versions from different groups plus individual modders putting out even more versions on the cutting edge of development. The best code gets quickly integrated all the way from the edge to the trunk, I've had my eye on their mod forums as well as the latest emule 27a thru 27c releases and things are really moving towards another great milestone release.
With the integration of Overnet support into EMule it now has the best of both worlds, with both public servers and client to client directories. Plus with weblink sites making it easy to find and add known good files to your queue, by batches if needed, it gives the end user the complete experiance of a mature tech.
At least Gnutella is open and may actually end up moving in this direction, I'm disappointed in hearing that the upcomming WinMX will still be closed, both their client and their network really have some good features but in the P2P world closed is death IMHO. As for me, I'll be waiting for the latest 27c EMule as modded by Sivka, my personal favorite at this time.
Jonah Hex
Horror & SciFi Erotic Nudes
I found the concept of BitTorrent pretty cool; as a normal user you only share what you're currently downloading! Clients download in "segments" from multiple other clients in a distributed fashion.
There are problems; The space for the file "must" be preallocated. If you end after getting 50% there's no guarantee that you've got anything like a usable file (you can't expect even streamable files to work), and the fact that there are fewer and fewer sources to get data from as you approach the end of the file, this because clients usually close down when they've completed the download, thereby never giving the others a chance to download from the complete file.
BitTorrent is good for files that are mostly interesting for a short period of time, like for instance recorded TV-shows.
The one thing that is needed is some way to punish nodes that close down as soon as they've completed their download.
Belief is the currency of delusion.
the later cvs's work pretty well now
Seventy plus percent of Slashdot readers use Microsoft Windows as their primary operating system. The giFT developers currently consider giFT not yet ready for even beta binary packages for Windows. Use eMule instead until giFT progresses further.
Will I retire or break 10K?
Hey, how close are we to having something like Gnutella2 host a massive database, where we can create tables and store data and make queries against it? The advantages of this should be obvious.
skkkoooonnnggggkkk ptui
There is a mirror over at http://www.kiwiuk.net/gnutella2_draft.htm (not mine).
"The lesson to be learned is not to take the comments on slashdot too literally." --Vinnie Falco, BearShare
He gets the best up skirt pics.
SuDZ
Sorry, I'm new to this Gnutella2/Gnutella battle.
If Mike really did use the Gnutella name without permission, why doesn't someone sue him? These "products" are far too similar to be called by such similar names. For example, I'd get my ass sued if I made a new operating system and called it 'Linux2'. Unholster the IANAL's and tell me why. Or even better, get a real lawyer to tell me why.
Otherwise, stop bitching about the fact he's using the name if you aren't going to do anything about it.
----- rL
"Gnutella" is mispelled in the specification draft, but not in the title of the Slashdot article. Is that a first?
The shareholder is always right.
To be more to the point -- this is NOT Gnutella. The Gnutella developers are not happy about the so-called "Gnutella" 2 since it goes against their wishes in many ways. Basically this one individual hijacked the name to push his own ideas.
...
From the last story it's pretty damned clear that "Gnutella" 2 is not going to be a particularly helpful or effective protocol. As someone who uses the real Gnutella (sometimes even for perfectly legit purposes) and thinks it works, I'll stick to the real Gnutella. It keeps getting better
simon
home page
1) Shareaza works reasonably well though the lack of a usefull anti leech
mechanism is a drawback. A leaf and hub architecture is a reasonable compromise,
it usually dosn't allow searching of the whole network.
A distributed hash table architecture would allow global search but DHT is
vulnerable to an attacker with modest resources flooding the search space with
junk.
2)I'm interested in the reliable communiaction over UDP part of the protocol.
Two peers, neither of whom accept incoming connections due to connection sharing
or firewalling can't exchange files with any current p2p software.
I'm a bit surprised that no p2p project has tried to do UDP connection splicing
to allow two peers, both behind internet connection sharing (NAT) to talk to
each other. It not be possible but I havn't come across anyone who has tried at all.
It dosn't have to work for everyone to be usfull. Just allowing 10% of
NATed hosts to communicate would be worth the effort.
NAT routers usually allow outgoing UDP connections, normally the remote
machine will be listening on a UDP prt (most common use is port 53 for domain
name lookups. The local computer sends out a packet with a unique local port
number (sequentially or randomly assigned) and a remote port of 53.
When a UDP reply arrives from the internet, it also has a remote port number
of 53 and the chosen local port number. The connection sharing machine
looks at the local port number and compares it to a table of known connections.
If it matches an entry it knows which of the computers behind the NAT
it is intended for and forwards it.
In theory, if two NATed hosts send out UDP packets at the same time, using
the same port numbers the connection will penetrate the NATs. It requires the
help of another machine but in a p2p system you have plenty of machines that
can pass on some small messages.
The only problem I can see is that a NAT may change the local port number.
I hope that cheap cable/dsl routers only change the local port if necessary,
or if they do will use predicatable numbers.
This technique will also be usfull for getting through statefull firewalls.
I need to research this more. Am I missing somthing?
I'm aware that shifting files over UDP requires TCP compatible flow control
so it dosn't hog all the bandwidth.
3)Due to the number of people behind transparent proxys that hijack all outgoing
connections to port 80 and the number of people who set their filesharing
clients to listen on 80, I think is is a pity Mike didn't take the opportunity
to add a faculity to encapsulate traffic with a fake HTTP GET header so it will
go through http-only proxys. Kazaa does somthing like this.
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).
> 1. Can this version prevent abuse from folks that try to flood the system with bogus or damaged files?
Here's how I do it, because I have a dial-up and can't waste my time downloading junk:
1. Use the result with the most hosts. Not only the most reliable download, but it's probably been verified by some of them.
2. If it's really big, I'll verify it with Bitzi (it's one click from shareaza), plus I can bookmark the page if I want to grab it later (since it has ed2k links).
3. If I see a "XXX IS BOGUS.txt" file, I grab it so I'm one more node sharing it and passing on the word. The file usually contains a hash.
Not going to be a perfect system, and not likely to stand up to organized attack (not even freenet can do that). Speaking of freenet, given the nature of the internet, freenet would be required to do such a thing as anonymous downloads. gnutella simply brokers peer connections, freenet is a virtual network itself, serving somewhat different needs. A freenet/gnutella gateway would certainly be nice, but probably in freenet's scope, not gnutella's.
I've finally had it: until slashdot gets article moderation, I am not coming back.
After lots of heated debate, let the debates begin.
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
I admit, it's a groaner...
"Can of worms? The can is open... the worms are everywhere."
I agree. This is a protocol that is going to die a quick death. Instead of creating a great new protocol, he just created yet another p2p protocol (there are hundreds of other ones), but he figured out that if he stuck the Gnutella name on it, he could get lots of free publicity from sites like Slashdot. This way it wouldn't have to be judged on it's merits. Hell, I just developed Gnutella 3 which outdates Gnutella 2, come look at my site. No one minds he wrote his own protocol, but he quite uncreatively comes out of nowhere and calls his new protocol Gnutella 2. Problem is, virtually every Gnutella developer, myself included, doesn't buy into it. And who the hell else is going to develop for it - this is dead in the water. You can barely get enough developers developing on good protocols like Gnutella and Freenet. Also, this guy thre a temper tantrum and said that he was keeping the protocols of Gnutella 2 "secret", but I guess he changed his mind. Hey everybody, come visit my website, Slashdot 2.
Don't be fooled! This is Slashdot, not CNN.
Actually, I agree!
Can we mod the mods?
"Can of worms? The can is open... the worms are everywhere."
Looks like somebody didn't read the entire G2 Specs. Miss the part about Search Security, have we? Just so you don't have to get your Anonymous ass up and look, here it is for you:
i took a quick look at the spec so i may be making some assumptions here. but from what i see, there is a lot of HTTP protocol style plain text being sent as apposed to binary blocks of data. ex:
GNUTELLA CONNECT/0.6
Listen-IP: 1.2.3.4:6346
Remote-IP: 6.7.8.9
User-Agent: Shareaza 1.8.2.0
Accept: application/x-gnutella2
X-Ultrapeer: False
the same amount of information could be sent with far less "fluff" for human readability. while this is probably more extensible (fields can be out of order, and you can ignore unknown ones). this is clearly not making as efficient use of bandwidth as it can.
i think they could have done better. this just "feels" like a cheep mod of http which to be honest wasnt originally designed for massive amounts of data transfer.
proxy
I'm going tangent, and potentially off-topic.
MP, "Gnutella2," has hi-jacked the Gnutella name. Normally, "Gnutella" would be a registered trademark, making this sort of nominal theft illegal. The intent of trademark law is to prevent this sort of action. We are so disgusted with IP laws that we won't use them, even [rare case] when they're the Right Thing.
I suppose a judge would laugh at a "copyright theft enabler" using IP laws in this way, despite the legitimacy of the claim.
I find it odd. The Trademark Law, and nominal protection of Copy Right Law, are the most agreeable parts of IP law. Even a bad tool can do the right thing. I suppose it's not in Gnutella's blood to use existing bad tools. [This article occurs next to an XFree86 re-organization pitch]
In 1984-ish fashion, I propose we push "Copy Right" in the place of "Copyright." [further off topic] Law and politics are full of perversions of language to control debate and discussion. By changing the emphasis in "Copyright," we move the focus of the concept back to the Right of Copying. The phrase "Copyright," is a conceptual black box to most people, or a fixed reality of some sort. People consider it inviolable, and it's difficult to discuss. By changing the phrase to "Copy Right," its very nature becomes open and questionable. The concept's nature, as a right, is clarified, and the scope of that right is brought under common suspicion.
I'm as mimsy as the next borogove but your mome raths are completely outgrabe.
Linus didn't call it Minix2, jackass.
autopr0n is like, down and stuff.
The people who created Gnutella abandoned the project. No one owns the name, and anyone can call anything 'Gnutella2'.
There can never be a 'legitimate' Gnutella2 because there is no 'legitimizer' to bestow legitimacy upon it.
People should allow their protocols to grow on their own, rather then trying to take advantage of a dead name.
autopr0n is like, down and stuff.
From what I can remember it was the author of Bearshare who threw the mother of all tantrums and said that he was going to come up with gnutella3 and make sure it was a closed proprietary protocol. So yea, Gnutella2 or Mike's Protocol or whatever you want to call it, is an open protocol (officially) now. No more reasons to complain now are there?
As far as I'm concerned Shareaza rocks! It works like advertised: no spyware or ad's, fast and free. If none of the other Gnutella developers (except for the Gnucleus author) want to implement the G2/MP protocol then that's their decision but for now I join the rest of a growing number of Shareaza users who have a wicked P2P application.
P2P networks must also be resilient to legal attacks. In response P2P must exploit legal loopholes.
Analytic & algebraic topology of locally Euclidean meterization of infinitely differentiable Riemmanian manifold
Multi-byte integers are serialized in the byte-order of the topmost packet. Little-endian is the default byte-order; however big-endian byte order can be selected for those who want it.
What so now I have to guess byte order? Why don't people just stick to network order?
Is there an OS out there that doesn't have a ntohl equivalent!
There certainly are a lot of so-called "Gnutella developers" roaming around Slashdot today. You would think one or two of them would actually be aware of the history of Gnutella 2.
You have exactly 314 seconds to come up with a less retarded plot.
#pragma pack(1)
typedef struct
{
CHAR szTag[3];
BYTE nFlags;
WORD nSequence;
BYTE nPart;
BYTE nCount;
} GND_HEADER;
This is not a C structure. #pragma is an implementation-defined directive according to ISO/IEC 1999:9899. Moreover, it fails to define CHAR, BYTE, or WORD.
You can't make such a gateway - you'd need to know the filenames and cryptographic hashes of every file on the gnutella network, and have to insert each one individually. And that's not a gateway.
> You can't make such a gateway - you'd need to know the filenames and cryptographic hashes of every file on the gnutella network, and have to insert each one individually.
No you don't. Any one gateway just needs to know the filenames and hashes of the files it intends to gateway from freenet, then issue queries as requests come in. In fact you could build this list up lazily, but I hate to think of the spurious chatter this would cause on freenet. Multiple gateway-enabled servents would distribute the task of enumerating the files on freenet.
I've finally had it: until slashdot gets article moderation, I am not coming back.
Shareaza is available only for the Microsoft Windows operating system on x86 hardware, and emulating x86 Windows is dog slow on a Macintosh or Sun computer.
Will I retire or break 10K?
You can have multiple machines behind NAT by forwarding different ports to different machines.
One-port-per-box NAT forwarding won't help if you have 2 million machines behind a single IP address, such as the situation America Online has or used to have.
Will I retire or break 10K?
I would have presumed that this functionality has nothing to do with Gnutella and is better left to iptables.
Where can I download the equivalent of iptables for Microsoft Windows 2000?
And is there a GUI based configuration program for iptables on Linux? Not everybody who wants to use P2P file sharing has experience with directly editing text files to configure a machine.
Will I retire or break 10K?
The eDonkey system implements multiple source downloading by splitting files into "parts" which are apparently 8 MB in size, which is fine for movies and software distributions but too large for music or individual software packages.
Will I retire or break 10K?
I don't think this is possible in freenet... does anyone know if this is the case?
1. Just search for something fake, and block the hosts that return a result. Most often, the viral node will be just echoing back what you typed, or returning the same file no matter your search, while the legit nodes may have the words in a different order, different case, extentions, and other information in the name that you didn't type in. After you've blocked about 5 hosts, that will get rid of 99.999% of all crap.
2. Nothing allows downloading or uploading anonymously. You could encrypt the traffic, but then you'd still have to trust all the nodes you allow uploading/downloading from/to. FreeNet claims anonymity, but it's a bold-faced lie. It may give you plausable deniability, but so too does Gnutella.
Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant