1 .. SPDX-License-Identifier: GPL-2.0
10 TIPC (Transparent Inter Process Communication) is a protocol that is specially
11 designed for intra-cluster communication. It can be configured to transmit
12 messages either on UDP or directly across Ethernet. Message delivery is
13 sequence guaranteed, loss free and flow controlled. Latency times are shorter
14 than with any other known protocol, while maximal throughput is comparable to
20 - Cluster wide IPC service
22 Have you ever wished you had the convenience of Unix Domain Sockets even when
23 transmitting data between cluster nodes? Where you yourself determine the
24 addresses you want to bind to and use? Where you don't have to perform DNS
25 lookups and worry about IP addresses? Where you don't have to start timers
26 to monitor the continuous existence of peer sockets? And yet without the
27 downsides of that socket type, such as the risk of lingering inodes?
29 Welcome to the Transparent Inter Process Communication service, TIPC in short,
30 which gives you all of this, and a lot more.
34 A fundamental concept in TIPC is that of Service Addressing which makes it
35 possible for a programmer to chose his own address, bind it to a server
36 socket and let client programs use only that address for sending messages.
40 A client wanting to wait for the availability of a server, uses the Service
41 Tracking mechanism to subscribe for binding and unbinding/close events for
42 sockets with the associated service address.
44 The service tracking mechanism can also be used for Cluster Topology Tracking,
45 i.e., subscribing for availability/non-availability of cluster nodes.
47 Likewise, the service tracking mechanism can be used for Cluster Connectivity
48 Tracking, i.e., subscribing for up/down events for individual links between
53 Using a service address, a client can send datagram messages to a server socket.
55 Using the same address type, it can establish a connection towards an accepting
58 It can also use a service address to create and join a Communication Group,
59 which is the TIPC manifestation of a brokerless message bus.
61 Multicast with very good performance and scalability is available both in
62 datagram mode and in communication group mode.
66 Communication between any two nodes in a cluster is maintained by one or two
67 Inter Node Links, which both guarantee data traffic integrity and monitor
68 the peer node's availability.
72 By applying the Overlapping Ring Monitoring algorithm on the inter node links
73 it is possible to scale TIPC clusters up to 1000 nodes with a maintained
74 neighbor failure discovery time of 1-2 seconds. For smaller clusters this
75 time can be made much shorter.
79 Neighbor Node Discovery in the cluster is done by Ethernet broadcast or UDP
80 multicast, when any of those services are available. If not, configured peer
81 IP addresses can be used.
85 When running TIPC in single node mode no configuration whatsoever is needed.
86 When running in cluster mode TIPC must as a minimum be given a node address
87 (before Linux 4.17) and told which interface to attach to. The "tipc"
88 configuration tool makes is possible to add and maintain many more
89 configuration parameters.
93 TIPC message transfer latency times are better than in any other known protocol.
94 Maximal byte throughput for inter-node connections is still somewhat lower than
95 for TCP, while they are superior for intra-node and inter-container throughput
100 The TIPC user API has support for C, Python, Perl, Ruby, D and Go.
105 - How to set up TIPC:
107 http://tipc.io/getting_started.html
109 - How to program with TIPC:
111 http://tipc.io/programming.html
113 - How to contribute to TIPC:
115 - http://tipc.io/contacts.html
117 - More details about TIPC specification:
119 http://tipc.io/protocol.html
125 TIPC is implemented as a kernel module in net/tipc/ directory.
130 .. kernel-doc:: net/tipc/subscr.h
133 .. kernel-doc:: net/tipc/bearer.h
136 .. kernel-doc:: net/tipc/name_table.h
139 .. kernel-doc:: net/tipc/name_distr.h
142 .. kernel-doc:: net/tipc/bcast.c
145 TIPC Bearer Interfaces
146 ----------------------
148 .. kernel-doc:: net/tipc/bearer.c
151 .. kernel-doc:: net/tipc/udp_media.c
154 TIPC Crypto Interfaces
155 ----------------------
157 .. kernel-doc:: net/tipc/crypto.c
160 TIPC Discoverer Interfaces
161 --------------------------
163 .. kernel-doc:: net/tipc/discover.c
169 .. kernel-doc:: net/tipc/link.c
175 .. kernel-doc:: net/tipc/msg.c
181 .. kernel-doc:: net/tipc/name_table.c
184 .. kernel-doc:: net/tipc/name_distr.c
187 TIPC Node Management Interfaces
188 -------------------------------
190 .. kernel-doc:: net/tipc/node.c
193 TIPC Socket Interfaces
194 ----------------------
196 .. kernel-doc:: net/tipc/socket.c
199 TIPC Network Topology Interfaces
200 --------------------------------
202 .. kernel-doc:: net/tipc/subscr.c
205 TIPC Server Interfaces
206 ----------------------
208 .. kernel-doc:: net/tipc/topsrv.c
211 TIPC Trace Interfaces
212 ---------------------
214 .. kernel-doc:: net/tipc/trace.c