This project is read-only.

Isis2 Cloud Computing Library

NOTICE: In the wake of the Paris atrocities and other terrorism by the group often referred to as ISIS in the media, I decided to rename the entire system and move the project. Please download the system from I won't be maintaining this version of the system anymore, but I'll leave it here for now. As of December 2015, the two sites were identical; going forward, new features will appear in and will gradually go stale. -- Ken Birman.

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?

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.

But we may also just rename Isis2 itself to distance it from the terrorist group. A current proposal is to simply rename the whole system so that every use of "Isis" is replaced by "Vsync".

Meanwhile, DMC would be created as a ground-up redesign purely in C++, with less functionality than you see in Isis2 and more of a focus on exploiting RDMA and NVRAM. 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.2020. Please report any issues you encounter. If you do have issues, try the prior release, V2.2.2013 or the one before that, V2.2.1962.

Background Information
Isis2 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 is more 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 project suggestions 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.

Getting Started
  • 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.
  • The 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 Compile page. With proper setup, Isis2 can run on Windows, Linux, Amazon EC2 or Eucalyptus-style virtualization platforms, Azure... you name it!

Last edited Dec 5, 2015 at 2:53 PM by birman, version 68