Header Header

The Ibis Portability Layer (IPL)

The Ibis Portability layer (IPL) is a communication library specifically designed for usage in a grid environment. It has a number of properties which help to achieve its goal of providing programmers with an easy to use, reliable grid communication infrastructure

Run anywhere
Ibis, is programmed in Java. Because of this it is possible to use Ibis programs anywhere a Java Virtual machine is available.
In addition to the standard network types available in Java, Ibis is able to use fast local networks such as Myrinet where these are available. If multiple network types are present on a single system, Ibis will automatically select the best type available.
By offering multiple communication models, not ony unicast communication, it is possible to express virtually any communication pattern easily and efficiently using Ibis.
Availability of resources in grid system changes constantly as network and hardware fail and new resources get added to a grid. Ibis offers support for keeping track of machines in a computation to address these problems.
The design of the IPL is deliberately kept simple. This makes adding support for new network types easy, and allowes for easy adaptation of Ibis as an communication framework.

System Overview

ibis design

Ibis was designed to be used in a multi layer system. On top of the system are the applications. These applications can use any of the programming models present in the Ibis project. The Ibis Portability Layer (IPL) acts as a common interface for the different programming models to the bottom implementation layer. Multiple implementations are available. Some, such as TcpIbis using 100% Java code to ensure portability, and some, such as the MPI based Ibis implementation taking advantage of local high speed networks using native code.

For more in depth information see the following resources:


The IPL communication library includes a number of implementations.


The TCP based implementation Tcp is written in 100% pure Java, using the sockets available in the standard Java library. As such it is possible to use this Ibis implementation on any system which has a Java Virtual Machine Available.


Like the TCP version, the Ibis based on Smartsockets is written in 100% pure Java. However, since it uses the Smartsockets library of the Ibis project it also has very good support for dealing with network difficulties such as firewalls and NATs. Currently, this is the default IPL implementation used.


One of the most used ways of using a high speed network in clusters today is MPI. For this reason practically every high speed network in use today has the possibility to communicate using a implementation of MPI. For this reason we are currently in the process of builing an Ibis implementation which uses MPI as the underlying communication layer. Early results are very promising, but more work is needed to complete this implementation fully.


An implementation we are currently looking at is an Ibis which sends message over a peer-to-peer network. This would have the advantage that it would be very resilant agains network problems such as failing connections, and firewalls.


An interesting addition to the available Ibisses would be an Ibis implemented on top of UDP. This is currently in progress.