Hypernets -- Good (G)news for Gnutella
Red Roo writes: "This online article addresses the recent
criticism of Gnutella network scalability by pointing out that it is a Cayley tree. As a viable candidate for massively scalable P2P bandwidth, all trees are dead! But by going to higher dimensional virtual networks (aka "hypernets") e.g., hypercubes or hypertori, near linear scalability can be achieved for P2P populations on the order of several million peers each with only 20 open connections. This concept seems to have been entirely overlooked by critics and developers alike."
For more information on the structure try Relation Nets and Hypernets in pdf form.
anyone who has taken basic algebra knows this article is a complete farce...let me count the ways:
- a hypertorus has d^2 orthogonal dimensions, not d, as the "article" states
- his explanation of network diameter is a complete fantasy. the latency between points on a network has absolutely nothing to do with the chordal length, as he would well know if he'd get out of his ivory tower and do actual internet studies, as I have
- equating the path length with the peer horizon is utter speculation, and Ritter himself has denounced this type of mathematical voodoo
- "Little's Law," as he calls it, has been discredited at least a half dozen times by researches at Harvard, Stanford, and elsewhere
- anyone with a grounding in mathematical principles knows that there is no such thing as a binary hypercube, any more than there is such a thing as a square circle
I can't believe Slashdot just posts this psuedomathematical nonsense without doing even elementary fact-checking
The author, Neil Gunther is semi-famous
in the Unix community for giving very
good talks and courses on performance.
Check out his open source performance analysis
softwar PDQ (Pretty Damn Quick)
http://www.perfdynamics.com/Tools/PDQ.html
Cayley Tree - A network where the nodes are connected together without any central server.
Hypernet - A network where smaller nodes connect to high-capacity supernodes, which are in turn connected to other supernodes, each with their own sub-network, i.e. the same thing as FastTrack, but without the central encryption servers (at least, that's how I understand it).
In short, this is good technology, but, once you scrape the marketing bullshit off, hardly new.
(Do not sign anything.) -- Fell, Planescape: Torment
I guess they must have messed up the 4th dimension - time if it can cause a collision before you sent them. Wow !!
:(
As much as I would like the open source stuff. Gnutella is not ready for big time for average users who have stuff to share. The windoze version chocked my old 486 at times by doing nothing. Compared to Morpheus, it was like visual basic slopware that uses all lots of resources. There were no contents on the net. Anything remotely interesting were behind firewall and was unreachable at all or has zero bandwidth. There were too much traffic even when not transfering files - about 1/4 of my uplink on a DSL line.
Morpheus on the otherhand was quite usable on the old 486 windoze 95 box. (see below) I run atguard so I didn't even there were popups ads. It takes up only 20% of the CPU time during transfers and is idling most of the time. There are rarely traffic when idle - a few blips every ten's of minutes. It would seem their supernode architecture is the right aproach.
As to contents, there are over 600,000+ users sharing ~650 terabytes of files. It is not perfect, but it is quite simple to use even for the average users who pulled in all kinds of contents all over the world.
Note:
I use 95 because it has the smallest memory & HD foot print - disk space are for shared files. The quietest 486 box generate the least amount of heat and survived 3 extended (2-3 days before I knew) fan failures over the hottest days in the summer without crashing. This is my morpheus (only) machine that runs 24/7 and I reboot it may be every other months. I would not trust my mainbox that have the takeoff noise and hot exhaust of a Harriar to left unattented or overnight.
Dont know what a hypercube is? click here
A form of this organizational structure is already being implemented by Lime wire. Here is an excerpt from thier FAQ:
we've created a new Gnutella hierarchy, whereby high performance machines become 'Ultrapeers'. These machines accept connections from many LimeWire clients while also connecting to the rest of the Gnutella network. Moreover, the Ultrapeer shields these 'regular' LimeWire clients from the CPU and bandwidth requirements associated with Gnutella, directing traffic to clients in an efficient manner. The reason you see only one connection in your connections tab is because you are a LimeWire client connected to an Ultrapeer. Unfortunately, not all Ultrapeers are as good as others. If you find that you aren't getting many search results with the Ultrapeer you are connected to, simply disconnect and connect. You'll probably connect to a different Ultrapeer, which is more 'connected'. Also, as time goes on and the network grows, you'll receive more results. Moreover, we are currently working hard to ensure that any Ultrapeer you connect to will be well connected - stay tuned to future versions of LimeWire.
My success with the new structure is mixed. Downloads and searches seem to work almost as well as before, but I'm getting considerably fewer uploads, which must mean that, someone, somewhere, is getting screwed. Limewire itself is not a bad little product, it's main claim to fame, of course, is that it runs well on both Mac OS X and Linux.
A Cayley tree is a tree (network with no cycles, a cycle being a set of connections a path you can take in a circle to get back to the same node) in which every node, except those right at the edges, has the same number of connections. As a tree, if you cut any connection, you're seperating the network into two unconnected networks (or isolating one node). Noting that it's a Cayley tree is pointing out that as it grows, nodes at the edges have more and more connections between them (all clients connecting to one server would be a tree, too, but the number of connections to the server would keep on growing, which means it wouldn't be a Cayley tree).
A hypernet is like a grid: imagine the nodes like the places where the lines cross on graph paper, so each node (except at the edges) is connected to 4 others, in a regular, predictable pattern with lots of cycles. Now imagine a 3d grid, like a lot of stacked sheets of graph paper with each node connected not only North, East, South, and West, but also up and down. Each connected to 6 others, in a regular, predictable pattern with lots of cycles. That's as far as you can go with physical models, but in a freely-connecting network like the internet, you can keep going to 8 connections per node (a 4-dimensional hypercube network), 10 connections (5 dimensions), and so on.
That explanation was for a hypercube, a hypertorus would be like going from a bunch of connections around a circle, to a regular set of connections over the surface of a donut, and so forth.
Either way, it's one huge mass of cycles, lots of redundancy, lots of routing choices. If you cut a connection it doesn't matter much; naturally if one user bogs a connection (or chain of connections) down with a heavy load, it's practically like it's been cut. Hypernetworks give you the freedom to route around traffic jams, and the regular structure (cube or torus) simplifies the routing over an unstructured network of random connections.
...to say the least. Besides the obvious algorithmic problems of establishing and/or maintaining such a topology in an environment where nodes enter and leave at such a high rate, there's a serious overhead issue. Any serious discussion of ad-hoc routing protocols (which is what this is) nowadays needs to include an analysis of the number of packets needed by the routing protocol itself, in addition to the efficiency with which "user" packets are routed. A network that always delivers user packets over an optimal path isn't really all that useful if 90% of the network's capacity is consumed by route updates. I was very disappointed to see that this particular paper attempts no such analysis of routing overhead; without it, the paper's conclusions must be regarded as highly suspect.
Slashdot - News for Herds. Stuff that Splatters.
The Internet has a structure with physical limitations!
What good does it do if your many multiply redundant connections allow transmission of messages with a fewer number of virtual hops, when every connection going out of your college dorm goes over the same physical wire. The number of connections over which a search request must travel is a liability, not an asset, when many of those connections happen to use the same physical wire. The author of this "paper" has conveniently ignored this fact, and his conclusion (that adding virtual links to your network allows you to manufacture bandwidth out of thin air) follows directly.
On a separate topic, the assertion that the virtual connectivity of Gnutella is anything like a Cayley tree is absurd, because it implies no closed paths. Consider: In order to discover and connect to a new a host on the Gnutella network, you need to catch a search request originating from that host. The fact that you were able to recieve that search request in the first place means that there was already a path between you and the remote host--therefore you have created at least one closed cycle by forming the new connection.
I have a positive modifier on Troll. When I mod someone Troll their karma should go UP!