|
CVS Snapshots
If you're going to use Bamboo, we prefer that you download the latest CVS
snapshot below. Bamboo is under active development, and (usually) the latest
snapshot includes our best code. None of these snapshots are "supported" in
any kind of a contractual sense (see the license),
but we do answer questions about them on the
mailing list (but please
read the FAQ first).
| Date |
Description |
| 2006 March 3 |
This snapshot fixes a pretty big bug in bamboo.db.StorageManager
that was causing it to report incorrect storage totals for clients. You can
register for it to call you every time a client's storage total changes. It
was correctly adding the sizes of new stores into those totals, but every time
a put expired, it was only subtracting out the key size, not the key size plus
the data size as it should have been. That's fixed now.
|
| 2005 December 16 |
This snapshot has the code we used in our latest WORLDS
paper. Gets are now really fast on PlanetLab, especially if you
issue each one to multiple gateways in parallel. Here are some timings in
milliseconds from 155,218 random gets peformed on 15 December 2005, for
example:
| #GW | Avg | 50th | 95th | 99th |
| 1 | 188 | 68 | 311 | 4453 |
| 2 | 85 | 48 | 155 | 461 |
| 3 | 62 | 41 | 131 | 244 |
|
| 2005 July 1 |
The unauthenticated removes of the last release are no longer supported.
Instead, we have a much nicer authenticated remove now. Currently, it's only
available in the Sun RPC interface, but I will add an XML RPC interface for it
soon.
To use the new removes, take a look at
bamboo/src/bamboo/dht/gateway_prot.x. Note that there is now a version 3
interface. To make a put removable, use the version 3 put, and include the
SHA-1 hash of a random secret with your key and value. (Be sure to use a
different secret for each put; java.security.SecureRandom may help here.) To
remove the put later, send a version 3 remove with the same key, the SHA-1
hash of the value, and the secret itself. See our latest paper, "OpenDHT: A Public DHT Service and Its Uses", Section
3.1.1, for a detailed discussion of why we like this remove. There's sample
Java code for puts, gets, and removes in bamboo.dht.(Put|Get|Remove).
Also, the new version 3 get call returns not only the values under a key,
but also the secret hashes included with their puts, and the number of seconds
remaining in their TTLs. This is pretty useful if you want to refresh someone
else's puts for them.
Finally, there are a lot of bug fixes in this release. The simulator
(bamboo.sim.Simulator) seems to be working again, at least if you're using the
Router, and I've incorporated all of the bug fixes sent to the mailing list
since the April snapshot.
|
| 2005 April 5 |
By popular demand, Bamboo now optionally supports unauthenticated removes.
These are, in my opinion, a bad idea. I would much rather your
application instead put a dummy value to indicate that a previously put value
should no longer be used. This way, it's easy to see what the sequence of
puts and (dummy) removes has been after the fact, using only gets. However,
some people have begged for "real" removes anyway. In applications that do
lots of removes on values with long TTLs, this makes sense performance-wise,
though it's still not secure. Long-term, Bamboo will support authenticated
puts and removes (using public-key cryptography). As I compromise in the
meantime, or for deployments where all clients are trusted, I've made
unauthenticated removes optional.
To enable them, set the config file parameter "allow_unauth_rm" to "true" in
bamboo.dht.Gateway stage. Otherwise, they'll be rejected.
(This option is turned off in OpenDHT, the
public deployment of Bamboo.) Also, note that remove--like put--takes a TTL.
You should set this to be at least as large as the TTL for the corresponding
put; to make things easier at some cost in storage, just set it to
Integer.MAX_VALUE.
Sample code in both Python and Java for puts, gets, and removes can now
also be found in bamboo/src/bamboo/dht, under the file names
Put.java, Get.java, Remove.java,
put.py, get.py, and remove.py.
|
| 2005 February 18 |
This snapshot is mostly bug fixes from the previous one, including a rather
serious bug in the DataManager stage that could lead to performance
degredation over time. Also, the beginnings of a tutorial on
bamboo.lss.ASyncCore can now be found in bamboo/doc/async-tutorial. It's
heavily modelled after the libasync tutorial from MIT, but translated into
Java.
|
| 2004 November 24 |
There was a silly bug in the last snapshot that would cause Bamboo to print
"unknown protocol 0xffffffff" a lot if mac_key_file wasn't set in
the Network stage's config file. That's fixed in this snapshot.
Also, this snapshot is the first to use Java 1.5. If it's not available for
your platform, you can still use Java 1.4, though. See this email for
details.
|
| 2004 November 3 |
Note: this snapshot is buggy. Please download the November
24th one, above, instead.
This snapshot contains a pretty stable version of the put/get layer; for the
first time I can recommend using it without any major qualifications. As of 4
November 2004, we've gone eight weeks without losing a value on our PlanetLab deployment, and we've gone three weeks
without any get RPCs timing out (i.e., the values were still there, but
temporarily unavailable). Also, we're no longer using the Java version of
Berkeley DB, so if you run on some platform that I don't run on, you may need
to compile the Berkeley DB shared library files yourself.
|
| 2004 August 5 |
We've been working on the stability of the put/get layer; it's not 100% yet,
but this snapshot is a lot more stable that any of the earlier ones. We're
also using Berkeley DB
Java Edition now, so it's possible to run the system as 100% pure Java.
|
| 2004 March 5 |
This snapshot contains a new event-driven client-side interface to the
OpenHash gateway in bamboo.dht.GatewayClient, along with an
event-driven version of bamboo.dht.GatewayTest in
bamboo.dht.GatewayClientTest. It also contains an implementation
of the ReDiR algorithm (see our IPTPS paper).
Finally, it also contains an implemenation of the Vivaldi
network coordinates algorithm in bamboo/src/bamboo/vivaldi.
|
| 2004 February 23 |
This snapshot contains a bug fix for the bamboo.db.StorageManager
class, which was leaking Berkeley DB cursors, and it contains Berkeley DB
libraries for Mac OS X.
|
| 2004 February 13 |
The same as the 2004-02-09 snapshot below, but with lots of bug fixes.
|
| 2004 February 9 |
The XDR interface now has placemarks in get responses, and
gateway_test.c includes a simple demonstration of the
functionality.
|
| 2004 February 4 |
The same as the 2004-01-24 snapshot below, but with lots of bug fixes.
|
| 2004 January 24 |
This snapshot has a better API to the put/get layer (including a
gateway.x file in bamboo/src/bamboo/dht), and a
preliminary version of a Bamboo simulator based on the Simple OceanStore
Simulator (SOSS).
|
Releases
The following release is the code we used to write the Bamboo USENIX paper.
It's really old, and we don't recommend it over the CVS snapshots above, but
if you're looking to reproduce our results, it's a good start.
| Release |
Description |
| Bamboo 1.0.1 |
This is the codebase used to produce the numbers in the December
2003 Bamboo technical report. |
Required Libraries
Bamboo makes use of the Java packages listed below. Jars for these packages
are already included in the Bamboo distribution, so you don't need to
install them yourself in order to run Bamboo. However, if you're looking
at the Bamboo code and want the source for one of these packages to help you
understand it, you can find their source using the links below.
Last modified 2006/03/03 14:46:13.
|