1TEAMD.CONF(5) Team daemon configuration TEAMD.CONF(5)
2
3
4
6 teamd.conf — libteam daemon configuration file
7
9 teamd uses JSON format configuration.
10
12 device (string)
13 Desired name of new team device.
14
15 debug_level (int)
16 Level of debug messages. The higher it is the more debug mes‐
17 sages will be printed. It is the same as adding "-g" command
18 line options.
19
20 Default: 0 (disabled)
21
22 hwaddr (string)
23 Desired hardware address of new team device. Usual MAC address
24 format is accepted.
25
26 runner.name (string)
27 Name of team device. The following runners are available:
28
29 broadcast — Simple runner which directs the team device to
30 transmit packets via all ports.
31
32 roundrobin — Simple runner which directs the team device to
33 transmits packets in a round-robin fashion.
34
35 activebackup — Watches for link changes and selects active port
36 to be used for data transfers.
37
38 loadbalance — To do passive load balancing, runner only sets up
39 BPF hash function which will determine port for packet transmit.
40 To do active load balancing, runner moves hashes among available
41 ports trying to reach perfect balance.
42
43 lacp — Implements 802.3ad LACP protocol. Can use same Tx port
44 selection possibilities as loadbalance runner.
45
46 notify_peers.count (int)
47 Number of bursts of unsolicited NAs and gratuitous ARP packets
48 sent after port is enabled or disabled.
49
50 Default: 0 (disabled)
51
52 Default for activebackup runner: 1
53
54 notify_peers.interval (int)
55 Value is positive number in milliseconds. Specifies an interval
56 between bursts of notify-peer packets.
57
58 Default: 0
59
60 mcast_rejoin.count (int)
61 Number of bursts of multicast group rejoin requests sent after
62 port is enabled or disabled.
63
64 Default: 0 (disabled)
65
66 Default for activebackup runner: 1
67
68 mcast_rejoin.interval (int)
69 Value is positive number in milliseconds. Specifies an interval
70 between bursts of multicast group rejoin requests.
71
72 Default: 0
73
74 link_watch.name | ports.PORTIFNAME.link_watch.name (string)
75 Name of link watcher to be used. The following link watchers are
76 available:
77
78 ethtool — Uses Libteam lib to get port ethtool state changes.
79
80 arp_ping — ARP requests are sent through a port. If an ARP reply
81 is received, the link is considered to be up.
82
83 nsna_ping — Similar to the previous, except that it uses IPv6
84 Neighbor Solicitation / Neighbor Advertisement mechanism. This
85 is an alternative to arp_ping and becomes handy in pure-IPv6
86 environments.
87
88 ports (object)
89 List of ports, network devices, to be used in a team device.
90
91 See examples for more information.
92
93 ports.PORTIFNAME.queue_id (int)
94 ID of queue which this port should be mapped to.
95
96 Default: None
97
99 runner.hwaddr_policy (string)
100 This defines the policy of how hardware addresses of team device
101 and port devices should be set during the team lifetime. The
102 following are available:
103
104 same_all — All ports will always have the same hardware address
105 as the associated team device.
106
107 by_active — Team device adopts the hardware address of the cur‐
108 rently active port. This is useful when the port device is not
109 able to change its hardware address.
110
111 only_active — Only the active port adopts the hardware address
112 of the team device. The others have their own.
113
114 Default: same_all
115
116 ports.PORTIFNAME.prio (int)
117 Port priority. The higher number means higher priority.
118
119 Default: 0
120
121 ports.PORTIFNAME.sticky (bool)
122 Flag which indicates if the port is sticky. If set, it means the
123 port does not get unselected if another port with higher prior‐
124 ity or better parameters becomes available.
125
126 Default: false
127
129 runner.tx_hash (array)
130 List of fragment types (strings) which should be used for packet
131 Tx hash computation. The following are available:
132
133 eth — Uses source and destination MAC addresses.
134
135 vlan — Uses VLAN id.
136
137 ipv4 — Uses source and destination IPv4 addresses.
138
139 ipv6 — Uses source and destination IPv6 addresses.
140
141 ip — Uses source and destination IPv4 and IPv6 addresses.
142
143 l3 — Uses source and destination IPv4 and IPv6 addresses.
144
145 tcp — Uses source and destination TCP ports.
146
147 udp — Uses source and destination UDP ports.
148
149 sctp — Uses source and destination SCTP ports.
150
151 l4 — Uses source and destination TCP and UDP and SCTP ports.
152
153 runner.tx_balancer.name (string)
154 Name of active Tx balancer. Active Tx balancing is disabled by
155 default. The only value available is basic.
156
157 Default: None
158
159 runner.tx_balancer.balancing_interval (int)
160 In tenths of a second. Periodic interval between rebalancing.
161
162 Default: 50
163
165 runner.active (bool)
166 If active is true LACPDU frames are sent along the configured
167 links periodically. If not, it acts as "speak when spoken to".
168
169 Default: true
170
171 runner.fast_rate (bool)
172 Option specifies the rate at which our link partner is asked to
173 transmit LACPDU packets. If this is true then packets will be
174 sent once per second. Otherwise they will be sent every 30 sec‐
175 onds.
176
177 runner.tx_hash (array)
178 Same as for load balance runner.
179
180 runner.tx_balancer.name (string)
181 Same as for load balance runner.
182
183 runner.tx_balancer.balancing_interval (int)
184 Same as for load balance runner.
185
186 runner.sys_prio (int)
187 System priority, value can be 0 – 65535.
188
189 Default: 65535
190
191 runner.min_ports (int)
192 Specifies the minimum number of ports that must be active before
193 asserting carrier in the master interface, value can be 1 – 255.
194
195 Default: 0
196
197 runner.agg_select_policy (string)
198 This selects the policy of how the aggregators will be selected.
199 The following are available:
200
201 lacp_prio — Aggregator with highest priority according to LACP
202 standard will be selected. Aggregator priority is affected by
203 per-port option lacp_prio.
204
205 lacp_prio_stable — Same as previous one, except do not replace
206 selected aggregator if it is still usable.
207
208 bandwidth — Select aggregator with highest total bandwidth.
209
210 count — Select aggregator with highest number of ports.
211
212 port_config — Aggregator with highest priority according to per-
213 port options prio and sticky will be selected. This means that
214 the aggregator containing the port with the highest priority
215 will be selected unless at least one of the ports in the cur‐
216 rently selected aggregator is sticky.
217
218 Default: lacp_prio
219
220 ports.PORTIFNAME.lacp_prio (int)
221 Port priority according to LACP standard. The lower number means
222 higher priority.
223
224 Default: 255
225
226 ports.PORTIFNAME.lacp_key (int)
227 Port key according to LACP standard. It is only possible to
228 aggregate ports with the same key.
229
230 Default: 0
231
233 link_watch.delay_up | ports.PORTIFNAME.link_watch.delay_up (int)
234 Value is a positive number in milliseconds. It is the delay
235 between the link coming up and the runner being notified about
236 it.
237
238 Default: 0
239
240 link_watch.delay_down | ports.PORTIFNAME.link_watch.delay_down (int)
241 Value is a positive number in milliseconds. It is the delay
242 between the link going down and the runner being notified about
243 it.
244
245 Default: 0
246
248 link_watch.interval | ports.PORTIFNAME.link_watch.interval (int)
249 Value is a positive number in milliseconds. It is the interval
250 between ARP requests being sent.
251
252 link_watch.init_wait | ports.PORTIFNAME.link_watch.init_wait (int)
253 Value is a positive number in milliseconds. It is the delay
254 between link watch initialization and the first ARP request
255 being sent.
256
257 Default: 0
258
259 link_watch.missed_max | ports.PORTIFNAME.link_watch.missed_max (int)
260 Maximum number of missed ARP replies. If this number is
261 exceeded, link is reported as down.
262
263 Default: 3
264
265 link_watch.source_host | ports.PORTIFNAME.link_watch.source_host (host‐
266 name)
267 Hostname to be converted to IP address which will be filled into
268 ARP request as source address.
269
270 Default: 0.0.0.0
271
272 link_watch.target_host | ports.PORTIFNAME.link_watch.target_host (host‐
273 name)
274 Hostname to be converted to IP address which will be filled into
275 ARP request as destination address.
276
277 link_watch.validate_active | ports.PORTIFNAME.link_watch.vali‐
278 date_active (bool)
279 Validate received ARP packets on active ports. If this is not
280 set, all incoming ARP packets will be considered as a good
281 reply.
282
283 Default: false
284
285 link_watch.validate_inactive | ports.PORTIFNAME.link_watch.vali‐
286 date_inactive (bool)
287 Validate received ARP packets on inactive ports. If this is not
288 set, all incoming ARP packets will be considered as a good
289 reply.
290
291 Default: false
292
293 link_watch.send_always | ports.PORTIFNAME.link_watch.send_always (bool)
294 By default, ARP requests are sent on active ports only. This
295 option allows sending even on inactive ports.
296
297 Default: false
298
300 link_watch.interval | ports.PORTIFNAME.link_watch.interval (int)
301 Value is a positive number in milliseconds. It is the interval
302 between sending NS packets.
303
304 link_watch.init_wait | ports.PORTIFNAME.link_watch.init_wait (int)
305 Value is a positive number in milliseconds. It is the delay
306 between link watch initialization and the first NS packet being
307 sent.
308
309 link_watch.missed_max | ports.PORTIFNAME.link_watch.missed_max (int)
310 Maximum number of missed NA reply packets. If this number is
311 exceeded, link is reported as down.
312
313 Default: 3
314
315 link_watch.target_host | ports.PORTIFNAME.link_watch.target_host (host‐
316 name)
317 Hostname to be converted to IPv6 address which will be filled
318 into NS packet as target address.
319
321 {
322 "device": "team0",
323 "runner": {"name": "roundrobin"},
324 "ports": {"eth1": {}, "eth2": {}}
325 }
326
327 Very basic configuration.
328
329 {
330 "device": "team0",
331 "runner": {"name": "activebackup"},
332 "link_watch": {"name": "ethtool"},
333 "ports": {
334 "eth1": {
335 "prio": -10,
336 "sticky": true
337 },
338 "eth2": {
339 "prio": 100
340 }
341 }
342 }
343
344 This configuration uses active-backup runner with ethtool link watcher.
345 Port eth2 has higher priority, but the sticky flag ensures that if eth1
346 becomes active, it stays active while the link remains up.
347
348 {
349 "device": "team0",
350 "runner": {"name": "activebackup"},
351 "link_watch": {
352 "name": "ethtool",
353 "delay_up": 2500,
354 "delay_down": 1000
355 },
356 "ports": {
357 "eth1": {
358 "prio": -10,
359 "sticky": true
360 },
361 "eth2": {
362 "prio": 100
363 }
364 }
365 }
366
367 Similar to the previous one. Only difference is that link changes are
368 not propagated to the runner immediately, but delays are applied.
369
370 {
371 "device": "team0",
372 "runner": {"name": "activebackup"},
373 "link_watch": {
374 "name": "arp_ping",
375 "interval": 100,
376 "missed_max": 30,
377 "target_host": "192.168.23.1"
378 },
379 "ports": {
380 "eth1": {
381 "prio": -10,
382 "sticky": true
383 },
384 "eth2": {
385 "prio": 100
386 }
387 }
388 }
389
390 This configuration uses ARP ping link watch.
391
392 {
393 "device": "team0",
394 "runner": {"name": "activebackup"},
395 "link_watch": [
396 {
397 "name": "arp_ping",
398 "interval": 100,
399 "missed_max": 30,
400 "target_host": "192.168.23.1"
401 },
402 {
403 "name": "arp_ping",
404 "interval": 50,
405 "missed_max": 20,
406 "target_host": "192.168.24.1"
407 }
408 ],
409 "ports": {
410 "eth1": {
411 "prio": -10,
412 "sticky": true
413 },
414 "eth2": {
415 "prio": 100
416 }
417 }
418 }
419
420 Similar to the previous one, only this time two link watchers are used
421 at the same time.
422
423 {
424 "device": "team0",
425 "runner": {
426 "name": "loadbalance",
427 "tx_hash": ["eth", "ipv4", "ipv6"]
428 },
429 "ports": {"eth1": {}, "eth2": {}}
430 }
431
432 Configuration for hash-based passive Tx load balancing.
433
434 {
435 "device": "team0",
436 "runner": {
437 "name": "loadbalance",
438 "tx_hash": ["eth", "ipv4", "ipv6"],
439 "tx_balancer": {
440 "name": "basic"
441 }
442 },
443 "ports": {"eth1": {}, "eth2": {}}
444 }
445
446 Configuration for active Tx load balancing using basic load balancer.
447
448 {
449 "device": "team0",
450 "runner": {
451 "name": "lacp",
452 "active": true,
453 "fast_rate": true,
454 "tx_hash": ["eth", "ipv4", "ipv6"]
455 },
456 "link_watch": {"name": "ethtool"},
457 "ports": {"eth1": {}, "eth2": {}}
458 }
459
460 Configuration for connection to LACP capable counterpart.
461
463 teamd(8), teamdctl(8), teamnl(8), bond2team(1)
464
466 Jiri Pirko is the original author and current maintainer of libteam.
467
468
469
470libteam 2013-07-09 TEAMD.CONF(5)