Introduction


Cluster wide IPC service

Have you ever wished you had the convenience of Unix Domain Sockets even when transmitting data between cluster nodes? Where you yourself determine the addresses you want to bind to and use? Where you don't have to perform DNS lookups and worry about IP addresses? Where you don't have to start timers to monitor the continuous existence of peer sockets? And yet without the downsides of that socket type, such as the risk of lingering inodes?

Welcome to the Transparent Inter Process Communication service, TIPC in short, which gives you all of this, and a lot more.

Service Addressing

A fundamental concept in TIPC is that of Service Addressing which makes it possible for a programmer to chose his own address, bind it to a server socket and let client programs use only that address for sending messages.

Service Tracking

Transmission Modes

  • Using a service address, a client can send datagram messages to a server socket.
  • Using the same address type, it can establish a connection towards an accepting server socket.
  • It can also use a service address to create and join a Communication Group, which is the TIPC manifestation of a brokerless message bus.
  • Multicast with very good performance and scalability is available both in datagram mode and in communication group mode.
  • Inter Node Links

    Communication between any two nodes in a cluster is maintained by one or two Inter Node Links, which both guarantee data traffic integrity and monitor the peer node's availability.

    Cluster Scalability

    By applying the Overlapping Ring Monitoring algorithm on the inter node links it is possible to scale TIPC clusters up to 1000 nodes with a maintained neighbor failure discovery time of 1-2 seconds. For smaller clusters this time can be made much shorter.

    Neighbor Discovery

    Neighbor Node Discovery in the cluster is done by Ethernet broadcast or UDP multicast, when any of those services are available. If not, configured peer IP addresses can be used.

    Configuration

    When running TIPC in single node mode no configuraton whatsoever is needed. When running in cluster mode TIPC must as a minimum be given a node address (before Linux 4.17) and told which interface to attach to. The "tipc" configuration tool makes is possible to add and maintain many more configuration parameters.

    Performance

    TIPC message transfer latency times are better than in any other known protocol. Maximal byte throughput for connections is still somewhat lower than for TCP.

    Language Support

    The TIPC user API has support for C, Python, Perl, Ruby, D and Go.