1TEAMD.CONF(5)              Team daemon configuration             TEAMD.CONF(5)
2
3
4

NAME

6       teamd.conf — libteam daemon configuration file
7

DESCRIPTION

9       teamd uses JSON format configuration.
10

OPTIONS

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

ACTIVE-BACKUP RUNNER SPECIFIC OPTIONS

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

LOAD BALANCE RUNNER SPECIFIC OPTIONS

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

LACP RUNNER SPECIFIC OPTIONS

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

EXAMPLES

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

SEE ALSO

463       teamd(8), teamdctl(8), teamnl(8), bond2team(1)
464

AUTHOR

466       Jiri Pirko is the original author and current maintainer of libteam.
467
468
469
470libteam                           2013-07-09                     TEAMD.CONF(5)
Impressum