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. Click here to learn more about why we use the name Isis for the system

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#.

Starting in December 2014, Ken began work on a native C++ version of the library. We expect to have this finished sometime in 2015 and it should interoperate with the current C# version. Please share your desires/comments/advice on this topic -- there is a new thread on the discussion tab. Nobody ever seems to post anything on this site, but in fact I would love to see some feedback!

In theory, Isis2 can also be used from any language supported by .NET. 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.1810. 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.

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.
  • 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 Feb 13 at 5:54 PM by birman, version 46