brintos

brintos / linux-shallow public Read only

0
0
Text · 5.6 KiB · ab63d29 Raw
216 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3=================4Linux Kernel TIPC5=================6 7Introduction8============9 10TIPC (Transparent Inter Process Communication) is a protocol that is specially11designed for intra-cluster communication. It can be configured to transmit12messages either on UDP or directly across Ethernet. Message delivery is13sequence guaranteed, loss free and flow controlled. Latency times are shorter14than with any other known protocol, while maximal throughput is comparable to15that of TCP.16 17TIPC Features18-------------19 20- Cluster wide IPC service21 22  Have you ever wished you had the convenience of Unix Domain Sockets even when23  transmitting data between cluster nodes? Where you yourself determine the24  addresses you want to bind to and use? Where you don't have to perform DNS25  lookups and worry about IP addresses? Where you don't have to start timers26  to monitor the continuous existence of peer sockets? And yet without the27  downsides of that socket type, such as the risk of lingering inodes?28 29  Welcome to the Transparent Inter Process Communication service, TIPC in short,30  which gives you all of this, and a lot more.31 32- Service Addressing33 34  A fundamental concept in TIPC is that of Service Addressing which makes it35  possible for a programmer to chose his own address, bind it to a server36  socket and let client programs use only that address for sending messages.37 38- Service Tracking39 40  A client wanting to wait for the availability of a server, uses the Service41  Tracking mechanism to subscribe for binding and unbinding/close events for42  sockets with the associated service address.43 44  The service tracking mechanism can also be used for Cluster Topology Tracking,45  i.e., subscribing for availability/non-availability of cluster nodes.46 47  Likewise, the service tracking mechanism can be used for Cluster Connectivity48  Tracking, i.e., subscribing for up/down events for individual links between49  cluster nodes.50 51- Transmission Modes52 53  Using a service address, a client can send datagram messages to a server socket.54 55  Using the same address type, it can establish a connection towards an accepting56  server socket.57 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.60 61  Multicast with very good performance and scalability is available both in62  datagram mode and in communication group mode.63 64- Inter Node Links65 66  Communication between any two nodes in a cluster is maintained by one or two67  Inter Node Links, which both guarantee data traffic integrity and monitor68  the peer node's availability.69 70- Cluster Scalability71 72  By applying the Overlapping Ring Monitoring algorithm on the inter node links73  it is possible to scale TIPC clusters up to 1000 nodes with a maintained74  neighbor failure discovery time of 1-2 seconds. For smaller clusters this75  time can be made much shorter.76 77- Neighbor Discovery78 79  Neighbor Node Discovery in the cluster is done by Ethernet broadcast or UDP80  multicast, when any of those services are available. If not, configured peer81  IP addresses can be used.82 83- Configuration84 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 address87  (before Linux 4.17) and told which interface to attach to. The "tipc"88  configuration tool makes is possible to add and maintain many more89  configuration parameters.90 91- Performance92 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 than95  for TCP, while they are superior for intra-node and inter-container throughput96  on the same host.97 98- Language Support99 100  The TIPC user API has support for C, Python, Perl, Ruby, D and Go.101 102More Information103----------------104 105- How to set up TIPC:106 107  http://tipc.io/getting_started.html108 109- How to program with TIPC:110 111  http://tipc.io/programming.html112 113- How to contribute to TIPC:114 115- http://tipc.io/contacts.html116 117- More details about TIPC specification:118 119  http://tipc.io/protocol.html120 121 122Implementation123==============124 125TIPC is implemented as a kernel module in net/tipc/ directory.126 127TIPC Base Types128---------------129 130.. kernel-doc:: net/tipc/subscr.h131   :internal:132 133.. kernel-doc:: net/tipc/bearer.h134   :internal:135 136.. kernel-doc:: net/tipc/name_table.h137   :internal:138 139.. kernel-doc:: net/tipc/name_distr.h140   :internal:141 142.. kernel-doc:: net/tipc/bcast.c143   :internal:144 145TIPC Bearer Interfaces146----------------------147 148.. kernel-doc:: net/tipc/bearer.c149   :internal:150 151.. kernel-doc:: net/tipc/udp_media.c152   :internal:153 154TIPC Crypto Interfaces155----------------------156 157.. kernel-doc:: net/tipc/crypto.c158   :internal:159 160TIPC Discoverer Interfaces161--------------------------162 163.. kernel-doc:: net/tipc/discover.c164   :internal:165 166TIPC Link Interfaces167--------------------168 169.. kernel-doc:: net/tipc/link.c170   :internal:171 172TIPC msg Interfaces173-------------------174 175.. kernel-doc:: net/tipc/msg.c176   :internal:177 178TIPC Name Interfaces179--------------------180 181.. kernel-doc:: net/tipc/name_table.c182   :internal:183 184.. kernel-doc:: net/tipc/name_distr.c185   :internal:186 187TIPC Node Management Interfaces188-------------------------------189 190.. kernel-doc:: net/tipc/node.c191   :internal:192 193TIPC Socket Interfaces194----------------------195 196.. kernel-doc:: net/tipc/socket.c197   :internal:198 199TIPC Network Topology Interfaces200--------------------------------201 202.. kernel-doc:: net/tipc/subscr.c203   :internal:204 205TIPC Server Interfaces206----------------------207 208.. kernel-doc:: net/tipc/topsrv.c209   :internal:210 211TIPC Trace Interfaces212---------------------213 214.. kernel-doc:: net/tipc/trace.c215   :internal:216