Isis2 Cloud Computing Library
Isis2 is a new option for cloud computing that can enable reliable, secure replication of data even in the highly elastic first-tier of the cloud. Isis2
is a project of Ken Birman at Cornell University. The system helps you build applications that
will run on multiple computers, coordinating actions, sharing replicated data, moving files and other information at high speeds, cooperating to support key-value storage (DHT storage), etc. Isis2
aims at sophisticated developers with challenging
needs, and is designed to be highly secure, fault-tolerant, consistent and very scalable, even under "cloudy conditions."
Why do we call it Isis2?
is quite stable now and rather mature. In fact, work has start on its successor: a system we're creating that we expect to call DMC (Derecho Multicast). The original thinking was to code DMC in pure C++ and remove less commonly used Isis2
features. But it turns out that just as we came around to this plan, C++ itself evolved drastically (C++ 11), and as explained on the discussions tab, while it is definitely feasible to translate Isis2 into a DMC coded in pure C++ 11, doing so probably would
yield a platform-specific solution that might not be all that fast or easy to use, because C++ 11 is itself a rather strange beast.
So at this point our focus is shifting: DMC will be identical to Isis2, except that Isis will be replaced by DMC (e.g. rather than IsisSystem.Start, you would call DMCSystem.Start), and it will be focused on fully leveraging RDMA and in particular, RDMA multicast.
When we have this in shape for people to use, we'll begin to do open-source DMC releases of that version. But this is very much research in progress.
In the meanwhile (perhaps indefinitely), we intend to continue to maintain and improve the Isis2 version of the system, and we upload patches with some regularity. The most current is V2.2.2013. Please report any issues you encounter. If you do have issues,
try the prior release, V2.2.1962.
was created in 2010 as a new version of an older style of group communication system that the author first began to work with in 1985. Although the system started out as a data replication technology (groups of programs that can share updates),
in 2013 Isis2 became much more big-data oriented. In 2014 it evolved again, this time with a focus on leveraging cutting-edge remote DMA (RDMA) transfer capabilities such as Infiniband and Fast Ethernet interfaces with RDMA over Converged Ethernet (ROCE) capabilities.
To maximize the payoff for the user, the 2014 technology is also designed to assist you in moving big memory-mapped files around, since more and more applications manage their data in files and memory-map them for speed. In this mode Isis2
of a control mechanism, since the data is basically external (we use the term "out of band") relative to the system. The idea is that if our platform can help replicate and copy gigabyte objects without actually touching them directly, the dominant
cost will be the actual RDMA copying cost, which of course is a pure hardware speed. You end up with the benefits of Isis2
(strong consistency, fault-tolerance, automated self-management) and yet don't need to pay the high overheads of sending
big data objects "through" the platform, which is coded in C#.
Using the system
The system was created in C# and is easiest to use from that language. Our documentation and videos on learning to work with it are in C#. But this said, in theory, Isis2
can also be used from any
language supported by .NET
. For example, in Spring 2015 a Cornell student experimented successfully with IronRuby and F# (I've posted his instructions on how to do this on the downloads page).
Let us know if you experiment successfully with something not explicitly described here, and we'll add it to our list. Note that at the bottom of this web page they hint that Java can interoperate with .NET and for this, they reroute you to
, which claims to be a way to cross-compile Java on Linux so that it will link to and interoperate with Mono. That would then mean you could use Isis2 from Java. This would be quite useful -- if someone
could possibly try this and post their experience on the discussion web page, we would appreciate it.
Another way to use Isis2 from C++ or Java or other languages is via a form of RPC that runs through web interactions (technically, web services). Weijia Song is just finishing the documentation on a server that itself uses Isis2 and exports an API focused on
memory replication and locking. You can use this to access the Isis2 RDMA features from any kind of native Linux application and there is even a command-line way to talk to it. Read more on the documentation web page.
The system is open source and open development, and we actually have a very detailed set of project suggestions aimed at students learning to use the system (or even professionals!). Isis2
is solid enough for use in production settings, but obviously
we do have a lot of students who are using the system to get hands-on experience with cloud or distributed computing. Don't be shy about posting questions or comments! The
page has details.
We are currently at release level V2.2.2013. I've left the last few releases on the downloads page just in case some unexpected issue turns up. In fact the system as a whole has been pretty stable for almost two years now, so always go with the most current
release unless you have some kind of problem.
Target user community
So who might find our work useful? The premise behind this project is that the need for high assurance has never been greater: with the trends towards data centers of all sizes and shapes (ranging from small racks of just a dozen or two machines to massive
cloud computing data centers with hundreds of thousands of them), developers of modern computing systems need to target the Web, employ Web Services APIs, and yet somehow ensure that the solutions they build can scale out without loss of assurance properties
such as data security (who knows what the other users of the cloud might be doing… or what might be watching?), consistency and fault-tolerance. The Isis2
library was built to help you solve this problem in an easy way, closely matched to the style
of development used for standard object-oriented applications that use GUI builders.
One fairly recent push has focused on speed. Now, I should start by saying that despite the expectations one might have, C# is actually quite fast. But it isn't fast for dealing with large data objects like mapped files that could have gigabytes of content,
for example. Accordingly, during 2014 we decided to port Isis2
to a relatively modern API called "verbs" that was originally intended to be very broadly useful, but somehow got an early reputation of being specific to Infiniband (a very
high speed interconnect, but used mostly on HPC clusters). Our initial focus has been on porting Isis2
to simply use Verbs with Infiniband and to get the full speed feasible in that configuration, and this has been quite successful although some
work remains to be finished as of the date of this edit (April 2014). Then we plan to broaden the solution to work with Ethernet. At that point Isis2
itself will still be coded in C#, a relatively slow language, but will be integrated more and more
closely with "fabric-level" data transport solutions that can run at dramatically high data rates. For example, depending on your hardware, we're seeing data movement speeds of 4Gb/s to as much as 10 or 12 Gb/s over a 20Gb/s Infiniband network,
and we think this is just the start of a process that should benefit Isis2
users on every kind of network hardware. The only caveat is that obviously you need to work with the Isis2
programmer's API to derive this full benefit.
But that caveat may already be fading away. We expect to be able to integrate most of these features into the network file system, so that you'll be able to benefit from Isis2
without using it as a programmer. We'll explain just what this
entails as soon as the solutions are robust enough for general use.
- The project
Documentation page has all sorts of materials including video summaries, release descriptions, as and standard written documentation. There are also some self-test modules to evaluate your understanding of the videos, and suggestions for projects that you
could do using Isis2.
project suggestions page is constantly being expanded. It has many ideas for projects you could do with the system, at various levels of difficulty.
- What's new?
- Isis2 for people who don't know C#
- Java support
For compilation under Linux environment, please see the
page. With proper setup, Isis2 can run on Windows, Linux, Amazon EC2 or Eucalyptus-style virtualization platforms, Azure... you name it!