15 |
.. Affect-PEGs: |
.. Affect-PEGs: |
16 |
|
|
17 |
The purpose of this PEG document is to give a short overview of existing |
The purpose of this PEG document is to give a short overview of existing |
18 |
overlays which have an implementation and try to choose an implementation |
overlays which have an open source implementation. |
|
that suits best to our needs. |
|
19 |
|
|
20 |
The reason for creating this PEG document is that, quite recently, we have |
The reason for creating this PEG document is that the current implementation |
21 |
noticed that the current implementation of GISP [5]_ seems to |
of GISP [5]_ seems to have (too) many obvious security exploits. For us this |
22 |
have (too) many obvious security exploits. This indiciates that GISP is in early |
indiciates that GISP is in early phase of development. Therefore we need to |
23 |
phase of development. Therefore, we need to examine other |
examine other available overlays which have an implementation in hope for |
24 |
available overlays which have an implementation in hope for finding a more |
finding a more mature tightly structured P2P platform. |
|
mature tightly structured P2P platform. |
|
25 |
|
|
26 |
The list of implemented overlays is of as of June 2003. |
The list of implemented overlays is as of July 2003. |
27 |
|
|
28 |
Issues |
Issues |
29 |
====== |
====== |
85 |
Who is developing a software. |
Who is developing a software. |
86 |
|
|
87 |
Language |
Language |
88 |
What programming language is used to program a software. |
What programming language is used to program a software + additional |
89 |
|
software packages which are required. |
90 |
|
|
91 |
License |
License |
92 |
Under what license a software is distributed. |
Under what license a software is distributed. |
97 |
Implemented overlays |
Implemented overlays |
98 |
==================== |
==================== |
99 |
|
|
100 |
.. a "reST" table is created when text editing finished for this section |
In this section we list the structured P2P overlays which have been implemented. |
101 |
|
Please notice that features described for each implementation are deliberately |
102 |
|
kept short. For more depth information about the *design* of the overlay see |
103 |
|
the original publications. |
104 |
|
|
105 |
Chord [1]_ |
Chord [1]_ |
106 |
---------- |
---------- |
117 |
Activity of development |
Activity of development |
118 |
Quite high. |
Quite high. |
119 |
|
|
120 |
Currently, no official release for Chord [1]_ is available. However, |
According to the Chord [1]_ website: |
121 |
nightly snapshots are available. |
|
122 |
|
At this point no official release for |
123 |
|
Chord is available, but you are welcome to check out the latest version |
124 |
|
from the CVS repository. This version is experimental, under active |
125 |
|
development, and may frequently be broken. |
126 |
|
|
127 |
Developer |
Developer |
128 |
MIT (research community) |
MIT (research community) |
142 |
No support for network locality- do not take network latencies into account. |
No support for network locality- do not take network latencies into account. |
143 |
|
|
144 |
Includes a Chord [1]_ simulator. |
Includes a Chord [1]_ simulator. |
145 |
|
|
|
According to the Chord [1]_ website: |
|
|
|
|
|
At this point no official release for |
|
|
Chord is available, but you are welcome to check out the latest version |
|
|
from the CVS repository. This version is experimental, under active |
|
|
development, and may frequently be broken. |
|
146 |
|
|
147 |
Tapestry [2]_ |
Tapestry [2]_ |
148 |
-------------- |
-------------- |
175 |
protocols to route messages around failures, providing successful |
protocols to route messages around failures, providing successful |
176 |
delivery with high probability if a path between the endpoints exists. |
delivery with high probability if a path between the endpoints exists. |
177 |
|
|
178 |
Replication, backup links |
|
|
|
|
179 |
Fault tolerance against hostile nodes |
Fault tolerance against hostile nodes |
180 |
* PKI is used while creating node identifiers |
* PKI is used while creating node identifiers |
181 |
* MACs are used to maintain integrity of overlay traffic |
* MACs are used to maintain integrity of overlay traffic |
182 |
* Monitoring system for maintaining neighbor links |
* Monitoring system for maintaining neighbor links |
183 |
|
|
184 |
Activity of development |
Activity of development |
185 |
Very active. |
Active. |
186 |
|
|
187 |
Tapestry 1.0 (April 2002) |
Tapestry 1.0 (April 2002) |
188 |
|
|
189 |
According to the Tapestry [2]_ website:: |
According to the Tapestry [2]_ website:: |
190 |
|
|
|
Tapestry 2.0 is coming soon, with support |
|
|
for massively parallel insertions, voluntary deletions, |
|
|
and a distributed test framework. |
|
|
|
|
191 |
Tapestry Version 1.0 contains the following functionality: |
Tapestry Version 1.0 contains the following functionality: |
192 |
|
|
193 |
* Basic Tapestry Java code running on the SEDA stage-driven event model |
* Basic Tapestry Java code running on the SEDA stage-driven event model |
239 |
release). |
release). |
240 |
|
|
241 |
Additional requirements |
Additional requirements |
242 |
* The Cryptix JCE library (included with the 1.0 release) |
* The Cryptix JCE library (included with the 2.0 release) |
243 |
* UNIX make program |
* UNIX make program |
244 |
* The Java interface libraries for the BerkeleyDB database |
* The Java interface libraries for the BerkeleyDB database |
245 |
(included with the 1.0 release) |
(included with the 2.0 release) |
246 |
|
|
247 |
License |
License |
248 |
BSD-like |
BSD-like |
249 |
|
|
250 |
Other notes |
Other notes |
251 |
Support for network locality. |
Support for network locality when building neighbor links. |
|
|
|
|
According to the Tapestry [2]_ website: |
|
|
|
|
|
"Tapestry is the networking substrate of |
|
|
OceanStore_, a storage system aiming to provide global-scale persistent and |
|
|
secure storage." |
|
252 |
|
|
253 |
Why Oceanstore_ uses Tapestry [2]_? |
Why Oceanstore_ uses Tapestry [2]_? |
254 |
See http://www.oceanstore.org/info/whytapestry.html |
See http://www.oceanstore.org/info/whytapestry.html |
260 |
DHT_ |
DHT_ |
261 |
|
|
262 |
Redundancy |
Redundancy |
263 |
No simulations or test performed. |
No simulation or test results published (not even in the original publication) |
264 |
In theory, however, the "free-choice" feature |
In *theory*, however, the "free-choice" feature |
265 |
gives peers freedom to adapt different conditions. |
gives peers freedom to adapt different conditions. However, the |
266 |
|
author of SharkyPy says: |
267 |
|
|
268 |
|
Kademlia has (in my taste, that's why I decided to drop it) a bad |
269 |
|
hole which makes it's use in remote querying for packets pretty useless: |
270 |
|
When you have key->value mappings, which have an equal key, in even in |
271 |
|
semi-large networks it gets very unprobable that you get all mappings, |
272 |
|
the more hosts there are, the less probable it is, and the more mappings |
273 |
|
there are, the less probable it is too. I've tried to remedy this in a |
274 |
|
later implementation, at the cost of lookup speed, but have never |
275 |
|
managed to get all entries when the network had over 100 nodes. (the |
276 |
|
later implementation is based on my own server-framework and uses no |
277 |
|
threads, btw.) This made it unusable for me, as basically I basically |
278 |
|
had to change the lookup-algorithm to query all nodes (back to gnutella, |
279 |
|
then...), to get all answers. And that's what is important in the |
280 |
|
network I designed it for. |
281 |
|
|
282 |
|
|
283 |
Fault tolerance against hostile nodes |
Fault tolerance against hostile nodes |
284 |
Nothing said, expect the "free-choice" feature. |
Nothing said, expect the "free-choice" feature. |
297 |
GPL (Java), "Free for non-commercial use" (C++) |
GPL (Java), "Free for non-commercial use" (C++) |
298 |
|
|
299 |
Other notes |
Other notes |
300 |
(none) |
The implementation of the Java version is discontinued. |
301 |
|
|
302 |
Pastry [4]_ |
Pastry [4]_ |
303 |
----------- |
----------- |
304 |
|
|
305 |
Abstraction |
Abstraction |
306 |
DHT_/DOLR_ |
DHT_ |
307 |
|
|
308 |
Redundancy |
Redundancy |
309 |
Backup links. |
Backup links. |
310 |
|
|
311 |
Fault tolerance against hostile nodes |
Fault tolerance against hostile nodes |
312 |
(undefined) |
Accordin to the release notes of 1.2, "Security support does not exist in |
313 |
|
this release. Therefore, the software should only be run in trusted |
314 |
|
environments. Future releases will include security." |
315 |
|
|
316 |
Activity of development |
Activity of development |
317 |
Current release is 1.2 (January 28, 2003) |
Active |
318 |
|
|
319 |
|
Current release is 1.3 (July 23, 2003) |
320 |
|
|
321 |
According to the Pastry [4]_ website: |
According to the Pastry [4]_ website: |
322 |
|
|
339 |
Support for network locality - Pastry [4]_ actively replicates the objects and |
Support for network locality - Pastry [4]_ actively replicates the objects and |
340 |
places them at random locations in the network. Result: When locating |
places them at random locations in the network. Result: When locating |
341 |
nearby object it might require the client to route to a distant replica of |
nearby object it might require the client to route to a distant replica of |
342 |
the object. |
the object. |
|
|
|
|
Accordin to the release notes of 1.2, "Security support does not exist in |
|
|
this release. Therefore, the software should only be run in trusted |
|
|
environments. Future releases will include security." |
|
343 |
|
|
344 |
GISP [5]_ |
GISP [5]_ |
345 |
--------- |
--------- |
381 |
Not-known |
Not-known |
382 |
|
|
383 |
Fault tolerance against hostile nodes |
Fault tolerance against hostile nodes |
384 |
Not-known |
According to Info-Anarchy Wiki: |
385 |
|
|
386 |
|
Problems are: The DHT implementation is |
387 |
|
vulnerable to denial of service attacks. |
388 |
|
|
389 |
Activity of development |
Activity of development |
390 |
Active, the current version is 0.35 (30 May 2003) |
Active, the current version is 0.35 (30 May 2003) |
399 |
GPL |
GPL |
400 |
|
|
401 |
Other notes |
Other notes |
402 |
Uses MD5 hashes. |
Uses MD5 hashes for generating IDs. |
403 |
|
|
|
According to Info-Anarchy Wiki: |
|
|
|
|
|
Problems are: The DHT implementation is |
|
|
vulnerable to denial of service attacks. |
|
404 |
|
|
405 |
Khashmir [7]_ |
Khashmir [7]_ |
406 |
------------- |
------------- |
578 |
LGPL |
LGPL |
579 |
|
|
580 |
Other notes |
Other notes |
581 |
(none) |
According to the author of SharkyPy: |
582 |
|
|
583 |
|
This implementation is heavily based on threads, which makes it |
584 |
|
pretty resource-intensive on the computer it is running on. I never |
585 |
|
intended it to serve more than 30-40 clients, so this didn't matter to |
586 |
|
me. When you use it as a P2P network backend, things will certainly look |
587 |
|
different. |
588 |
|
|
589 |
Changes |
Changes |
590 |
======= |
======= |
591 |
|
|
592 |
Based on this PEG document we recommend using Tapestry [2]_ with Storm. The |
Based on this PEG document we recommend using Tapestry's implementation with |
593 |
reasons are: |
Storm. The reasons are: |
594 |
|
|
595 |
- maturity of the implementation (the most important aspect) |
- the maturity of the implementation |
|
- activity of development |
|
596 |
- the license |
- the license |
597 |
|
- the activity of development |
598 |
|
|
599 |
|
For detailed changes and information about using Tapestry with Storm, please |
600 |
|
see `storm_with_tapestry--hemppah` PEG document. |
601 |
|
|
602 |
|
|
603 |
.. [1] http://www.pdos.lcs.mit.edu/chord/ |
.. [1] http://www.pdos.lcs.mit.edu/chord/ |