2004-06-29 01:43:09

by Jon Maloy

[permalink] [raw]
Subject: [ANNOUNCE] supporting cluster communication with TIPC



Hi all,
I would like to announce the availability of TIPC (Transparent Inter
Process Communication protocol). TIPC is a protocol specially designed
for high-performance, location transparent communication within
loosely connected clusters, and has been used successfully in various
Ericsson products over the last years.

In cooperation with colleagues from OSDL and Intel, I have ported TIPC
to Linux,and rewritten large parts of the code to fit the Linux kernel
environment and coding requirements. TIPC can be compiled either as a
part of the kernel or as a loadable module, and is now released as
open source code under a dual GPL/BSD license.


Overview
--------
TIPC provides a good support for designing scalable, distributed,
site independent, highly available, and high-performance applications.

It provides features such as:

o Reliable and unreliable connectionless communication modes:
SOCK_RDM and SOCK_DGRAM.
o Reliable connection oriented communication modes: SOCK_SEQPACKET
and SOCK_STREAM.
o Reliable and unreliable multicast covering the whole cluster.
o 35-80% better performance than TCP/IP for messages < 1.5 kbytes.
(The tipc-1.2 line).
o A functional addressing scheme that allows primary/secondary key
addressing and group addressing.
o Ability to adapt to and be carried over different media/protocols,
depending on the available network infrastructure and security needs:
raw Ethernet, RapidIO, ATM/AAL5, TCP, SCTP, UDP etc.(Only Ethernet
supported in the latest version).
o A topology service helping applications to keep track of available
functional and physical addresses in the clusters.


Implementation Status:
----------------------

There exists two main source code lines:


tipc-1.2.X: this is the most stable and tested release. It works well
on both Linux 2.4 and Linux 2.6. This code is not compliant
with Linux kernel code requirements regarding code style etc,
and now only has interest for comparative reasons. The
corresponding CVS modules are "source/stable_ericsson" and
"source/unstable_ericsson".
A downloadable example using the API of this version is found
under "tipc-test", the file "tipc-benchmark-0.93.tar.gz"

tipc-1.3.X: the most recent code, written for Linux 2.6, and compliant with
requirements on such code. It works well, but is still slightly
less stable than the 1.2 line. The corresponding CVS module is
"source/unstable", while we have not had the guts to check in
anything under "source/stable" yet. We have not been able to
verify that this code has the same performance as the 1.2 code,
but we have every reason to believe it will be comparable once
the proper optimization work is done.
A downloadable example using the API of this version is found
under "tipc-test", the file "tipc_test-1.5.tar.gz"


Links:
------
The TIPC page at SourceForge:
http://tipc.sourceforge.net

Downloading source code and documentation:
http://sourceforge.net/projects/tipc/

A draft protocol specification presented at IETF-59 in Seoul last March.
http://www.ietf.org/internet-drafts/draft-maloy-tipc-00.txt

An article written for the April issue of Linux World Magazine:
http://www.linux.ericsson.ca/papers/tipc_lwm/index.shtml

To be presented at OLS in Ottawa next month:
http://www.linux.ericsson.ca/papers/tipc_ols.pdf

We would appreciate your feedback and advice.

Thank you,
Jon Maloy