← Documents Documentation/networking/tipc.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

Linux Kernel TIPC

Cluster 내부 service addressing·tracking·messaging과 Linux net/tipc 구현 색인입니다.

Source pathDocumentation/networking/tipc.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

tipc.rst:1-215

TIPC는 cluster 안에서 DNS와 IP address를 직접 다루지 않고 application-defined service address로 datagram, connection, multicast와 brokerless group을 제공하는 kernel messaging protocol입니다.

Service·node·link event subscription과 최대 1,000 node 규모의 failure monitoring을 제공하며, 구현은 `net/tipc/`의 bearer·link·name·socket·topology·crypto·trace module로 나뉩니다.

TIPC service lifecycle
Server service address bindService tracking notificationClient datagram/connection/groupInter-node linkUDP/Ethernet bearer
Node/link changeTopology subscriptionClient state update

Service 공개부터 peer 통신과 topology 관찰을 연결합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =================
4 Linux Kernel TIPC
5 =================
6
7 Introduction
8 ============
9
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
15 that of TCP.
16
17 TIPC Features
18 -------------
19
20 - Cluster wide IPC service
21
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?
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 Addressing
33
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.
37
38 - Service Tracking
39
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.
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 Connectivity
48 Tracking, i.e., subscribing for up/down events for individual links between
49 cluster nodes.
50
51 - Transmission Modes
52
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 accepting
56 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 in
62 datagram mode and in communication group mode.
63
64 - Inter Node Links
65
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.
69
70 - Cluster Scalability
71
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.
76
77 - Neighbor Discovery
78
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.
82
83 - Configuration
84
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.
90
91 - Performance
92
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
96 on the same host.
97
98 - Language Support
99
100 The TIPC user API has support for C, Python, Perl, Ruby, D and Go.
101
102 More Information
103 ----------------
104
105 - How to set up TIPC:
106
107 http://tipc.io/getting_started.html
108
109 - How to program with TIPC:
110
111 http://tipc.io/programming.html
112
113 - How to contribute to TIPC:
114
115 http://tipc.io/contacts.html
116
117 - More details about TIPC specification:
118
119 http://tipc.io/protocol.html
120
121
122 Implementation
123 ==============
124
125 TIPC is implemented as a kernel module in net/tipc/ directory.
126
127 TIPC Base Types
128 ---------------
129
130 .. kernel-doc:: net/tipc/subscr.h
131 :internal:
132
133 .. kernel-doc:: net/tipc/bearer.h
134 :internal:
135
136 .. kernel-doc:: net/tipc/name_table.h
137 :internal:
138
139 .. kernel-doc:: net/tipc/name_distr.h
140 :internal:
141
142 .. kernel-doc:: net/tipc/bcast.c
143 :internal:
144
145 TIPC Bearer Interfaces
146 ----------------------
147
148 .. kernel-doc:: net/tipc/bearer.c
149 :internal:
150
151 .. kernel-doc:: net/tipc/udp_media.c
152 :internal:
153
154 TIPC Crypto Interfaces
155 ----------------------
156
157 .. kernel-doc:: net/tipc/crypto.c
158 :internal:
159
160 TIPC Discoverer Interfaces
161 --------------------------
162
163 .. kernel-doc:: net/tipc/discover.c
164 :internal:
165
166 TIPC Link Interfaces
167 --------------------
168
169 .. kernel-doc:: net/tipc/link.c
170 :internal:
171
172 TIPC msg Interfaces
173 -------------------
174
175 .. kernel-doc:: net/tipc/msg.c
176 :internal:
177
178 TIPC Name Interfaces
179 --------------------
180
181 .. kernel-doc:: net/tipc/name_table.c
182 :internal:
183
184 .. kernel-doc:: net/tipc/name_distr.c
185 :internal:
186
187 TIPC Node Management Interfaces
188 -------------------------------
189
190 .. kernel-doc:: net/tipc/node.c
191 :internal:
192
193 TIPC Socket Interfaces
194 ----------------------
195
196 .. kernel-doc:: net/tipc/socket.c
197 :internal:
198
199 TIPC Network Topology Interfaces
200 --------------------------------
201
202 .. kernel-doc:: net/tipc/subscr.c
203 :internal:
204
205 TIPC Server Interfaces
206 ----------------------
207
208 .. kernel-doc:: net/tipc/topsrv.c
209 :internal:
210
211 TIPC Trace Interfaces
212 ---------------------
213
214 .. kernel-doc:: net/tipc/trace.c
215 :internal:
216

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Cluster 내부 통신 protocol

1-16

이 문서는 GPL-2.0 라이선스를 따르며 Linux kernel TIPC를 소개합니다.

TIPC(Transparent Inter Process Communication)는 cluster 내부 통신을 위해 특별히 설계된 protocol입니다. Message를 UDP 위로 전송하거나 Ethernet을 통해 직접 전송하도록 설정할 수 있습니다.

Message delivery는 순서를 보장하고 손실이 없으며 flow control을 적용합니다. Latency는 알려진 다른 protocol보다 짧고 최대 throughput은 TCP와 비슷합니다.

TIPC transport
TIPC applicationTIPC messagingUDP 또는 Ethernet bearerCluster peerOrdered/loss-free/flow-controlled delivery

Application message가 선택한 bearer를 통해 cluster peer로 전달됩니다.

.. SPDX-License-Identifier: GPL-2.0

=================
Linux Kernel TIPC
=================

Introduction
============

TIPC (Transparent Inter Process Communication) is a protocol that is specially
designed for intra-cluster communication. It can be configured to transmit
messages either on UDP or directly across Ethernet. Message delivery is
sequence guaranteed, loss free and flow controlled. Latency times are shorter
than with any other known protocol, while maximal throughput is comparable to
that of TCP.

Cluster IPC, service addressing과 tracking

17-50

TIPC는 cluster 전체 IPC service를 제공합니다. Cluster node 사이에서도 Unix Domain Socket처럼 application이 bind할 address를 직접 정하고 DNS lookup이나 IP address 관리 없이 사용할 수 있습니다. Peer socket의 지속 존재를 확인하는 timer가 필요 없고 lingering inode 위험도 없습니다.

Service Addressing은 programmer가 address를 선택해 server socket에 bind하고 client가 그 address만으로 message를 보내게 하는 TIPC의 기본 개념입니다.

Server가 준비되기를 기다리는 client는 Service Tracking으로 해당 service address의 socket bind와 unbind/close event를 subscribe합니다.

같은 tracking mechanism은 cluster node의 availability/non-availability를 구독하는 Cluster Topology Tracking과 node 사이 개별 link의 up/down event를 구독하는 Cluster Connectivity Tracking에도 사용됩니다.

TIPC tracking 대상
대상Event
Service socketbind, unbind/close
Cluster nodeavailable, unavailable
Inter-node linkup, down

하나의 subscription 개념으로 service와 topology 변화를 관찰합니다.

TIPC Features
-------------

- 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

  A client wanting to wait for the availability of a server, uses the Service
  Tracking mechanism to subscribe for binding and unbinding/close events for
  sockets with the associated service address.

  The service tracking mechanism can also be used for Cluster Topology Tracking,
  i.e., subscribing for availability/non-availability of cluster nodes.

  Likewise, the service tracking mechanism can be used for Cluster Connectivity
  Tracking, i.e., subscribing for up/down events for individual links between
  cluster nodes.

전송 mode와 communication group

51-63

Client는 service address로 server socket에 datagram message를 보낼 수 있습니다. 같은 address type으로 accepting server socket에 connection을 수립할 수도 있습니다.

Service address로 Communication Group을 만들고 가입할 수도 있습니다. 이는 broker가 없는 message bus를 TIPC로 구현한 것입니다.

성능과 확장성이 좋은 multicast를 datagram mode와 communication group mode 모두에서 사용할 수 있습니다.

TIPC transmission mode
Mode동작
DatagramService address로 message 전송
ConnectionAccepting server에 연결
Communication GroupBrokerless message bus
MulticastDatagram/group 양쪽에서 지원

같은 service address가 여러 통신 pattern을 지원합니다.

- 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.

Link, 확장성, discovery와 운영 특성

64-101

Cluster의 두 node 사이 통신은 하나 또는 두 개의 Inter Node Link가 유지합니다. Link는 data traffic integrity를 보장하고 peer node availability를 감시합니다.

Inter-node link에 Overlapping Ring Monitoring algorithm을 적용하면 neighbor failure 발견 시간을 1~2초로 유지하면서 TIPC cluster를 최대 1,000 node까지 확장할 수 있습니다. 작은 cluster에서는 더 짧게 만들 수 있습니다.

Neighbor node discovery는 가능한 경우 Ethernet broadcast 또는 UDP multicast를 사용합니다. 둘 다 사용할 수 없으면 설정된 peer IP address를 사용합니다.

Single-node mode는 어떤 설정도 필요 없습니다. Cluster mode는 최소한 node address(Linux 4.17 이전)와 붙일 interface를 지정해야 합니다. `tipc` configuration tool로 더 많은 parameter를 추가하고 유지할 수 있습니다.

TIPC message transfer latency는 알려진 다른 protocol보다 좋습니다. Inter-node connection의 최대 byte throughput은 아직 TCP보다 조금 낮지만 같은 host의 intra-node와 inter-container throughput은 더 우수합니다.

TIPC user API는 C, Python, Perl, Ruby, D, Go를 지원합니다.

TIPC cluster 운영
항목내용
LinkNode pair당 1~2개, integrity와 peer 감시
Scale최대 1,000 node, failure discovery 1~2초
DiscoveryEthernet broadcast, UDP multicast, configured peer IP
Single node설정 불필요
ClusterNode address(구버전)와 interface, tipc tool

Discovery·규모·구성 기준입니다.

- 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 configuration 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 inter-node connections is still somewhat lower than
  for TCP, while they are superior for intra-node and inter-container throughput
  on the same host.

- Language Support

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

설정·programming·기여 자료

102-121

TIPC 설정 방법은 `http://tipc.io/getting_started.html`, programming 방법은 `http://tipc.io/programming.html`, 기여 방법은 `http://tipc.io/contacts.html`, protocol specification 상세는 `http://tipc.io/protocol.html`에서 확인할 수 있습니다. 원문 URL을 그대로 보존합니다.

More Information
----------------

- How to set up TIPC:

  http://tipc.io/getting_started.html

- How to program with TIPC:

  http://tipc.io/programming.html

- How to contribute to TIPC:

  http://tipc.io/contacts.html

- More details about TIPC specification:

  http://tipc.io/protocol.html

net/tipc kernel module과 interface 색인

122-215

TIPC는 `net/tipc/` directory의 kernel module로 구현됩니다.

Base type kernel-doc는 subscription의 `net/tipc/subscr.h`, bearer의 `net/tipc/bearer.h`, name table/distribution의 `net/tipc/name_table.h`와 `net/tipc/name_distr.h`, broadcast의 `net/tipc/bcast.c`를 대상으로 합니다.

Bearer interface는 `net/tipc/bearer.c`와 `net/tipc/udp_media.c`, crypto는 `net/tipc/crypto.c`, discoverer는 `net/tipc/discover.c`, link는 `net/tipc/link.c`, message는 `net/tipc/msg.c`에서 문서화됩니다.

Name interface는 `net/tipc/name_table.c`와 `net/tipc/name_distr.c`, node management는 `net/tipc/node.c`, socket은 `net/tipc/socket.c`, network topology subscription은 `net/tipc/subscr.c`에서 문서화됩니다.

Server interface는 `net/tipc/topsrv.c`, trace interface는 `net/tipc/trace.c`의 internal kernel-doc를 사용합니다. 원문의 모든 `kernel-doc` directive와 source path를 보존합니다.

TIPC implementation map
기능Source
Base/name/broadcastsubscr.h, bearer.h, name_table.h, name_distr.h, bcast.c
Bearerbearer.c, udp_media.c
Crypto/discovery/link/messagecrypto.c, discover.c, link.c, msg.c
Name/node/socketname_table.c, name_distr.c, node.c, socket.c
Topology/server/tracesubscr.c, topsrv.c, trace.c

기능별 주요 source path입니다.

Implementation
==============

TIPC is implemented as a kernel module in net/tipc/ directory.

TIPC Base Types
---------------

.. kernel-doc:: net/tipc/subscr.h
   :internal:

.. kernel-doc:: net/tipc/bearer.h
   :internal:

.. kernel-doc:: net/tipc/name_table.h
   :internal:

.. kernel-doc:: net/tipc/name_distr.h
   :internal:

.. kernel-doc:: net/tipc/bcast.c
   :internal:

TIPC Bearer Interfaces
----------------------

.. kernel-doc:: net/tipc/bearer.c
   :internal:

.. kernel-doc:: net/tipc/udp_media.c
   :internal:

TIPC Crypto Interfaces
----------------------

.. kernel-doc:: net/tipc/crypto.c
   :internal:

TIPC Discoverer Interfaces
--------------------------

.. kernel-doc:: net/tipc/discover.c
   :internal:

TIPC Link Interfaces
--------------------

.. kernel-doc:: net/tipc/link.c
   :internal:

TIPC msg Interfaces
-------------------

.. kernel-doc:: net/tipc/msg.c
   :internal:

TIPC Name Interfaces
--------------------

.. kernel-doc:: net/tipc/name_table.c
   :internal:

.. kernel-doc:: net/tipc/name_distr.c
   :internal:

TIPC Node Management Interfaces
-------------------------------

.. kernel-doc:: net/tipc/node.c
   :internal:

TIPC Socket Interfaces
----------------------

.. kernel-doc:: net/tipc/socket.c
   :internal:

TIPC Network Topology Interfaces
--------------------------------

.. kernel-doc:: net/tipc/subscr.c
   :internal:

TIPC Server Interfaces
----------------------

.. kernel-doc:: net/tipc/topsrv.c
   :internal:

TIPC Trace Interfaces
---------------------

.. kernel-doc:: net/tipc/trace.c
   :internal: