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              random — Simple runner which directs the team device  to  trans‐
36              mits packets on a randomly selected port.
37
38              activebackup  — Watches for link changes and selects active port
39              to be used for data transfers.
40
41              loadbalance — To do passive load balancing, runner only sets  up
42              BPF hash function which will determine port for packet transmit.
43              To do active load balancing, runner moves hashes among available
44              ports trying to reach perfect balance.
45
46              lacp  —  Implements  802.3ad LACP protocol. Can use same Tx port
47              selection possibilities as loadbalance runner.
48
49              Default: roundrobin
50
51       notify_peers.count (int)
52              Number of bursts of unsolicited NAs and gratuitous  ARP  packets
53              sent after port is enabled or disabled.
54
55              Default: 0 (disabled)
56
57              Default for activebackup runner: 1
58
59       notify_peers.interval (int)
60              Value  is positive number in milliseconds. Specifies an interval
61              between bursts of notify-peer packets.
62
63              Default: 0
64
65       mcast_rejoin.count (int)
66              Number of bursts of multicast group rejoin requests  sent  after
67              port is enabled or disabled.
68
69              Default: 0 (disabled)
70
71              Default for activebackup runner: 1
72
73       mcast_rejoin.interval (int)
74              Value  is positive number in milliseconds. Specifies an interval
75              between bursts of multicast group rejoin requests.
76
77              Default: 0
78
79       link_watch.name | ports.PORTIFNAME.link_watch.name (string)
80              Name of link watcher to be used. The following link watchers are
81              available:
82
83              ethtool — Uses Libteam lib to get port ethtool state changes.
84
85              arp_ping — ARP requests are sent through a port. If an ARP reply
86              is received, the link is considered to be up.
87
88              nsna_ping — Similar to the previous, except that  it  uses  IPv6
89              Neighbor  Solicitation  / Neighbor Advertisement mechanism. This
90              is an alternative to arp_ping and becomes handy in pure-IPv6 en‐
91              vironments.
92
93       ports (object)
94              List of ports, network devices, to be used in a team device.
95
96              See examples for more information.
97
98       ports.PORTIFNAME.queue_id (int)
99              ID of queue which this port should be mapped to.
100
101              Default: None
102

ACTIVE-BACKUP RUNNER SPECIFIC OPTIONS

104       runner.hwaddr_policy (string)
105              This defines the policy of how hardware addresses of team device
106              and port devices should be set during  the  team  lifetime.  The
107              following are available:
108
109              same_all  — All ports will always have the same hardware address
110              as the associated team device.
111
112              by_active — Team device adopts the hardware address of the  cur‐
113              rently  active  port. This is useful when the port device is not
114              able to change its hardware address.
115
116              only_active — Only the active port adopts the  hardware  address
117              of the team device. The others have their own.
118
119              Default: same_all
120
121       ports.PORTIFNAME.prio (int)
122              Port priority. The higher number means higher priority.
123
124              Default: 0
125
126       ports.PORTIFNAME.sticky (bool)
127              Flag which indicates if the port is sticky. If set, it means the
128              port does not get unselected if another port with higher  prior‐
129              ity or better parameters becomes available.
130
131              Default: false
132

LOAD BALANCE RUNNER SPECIFIC OPTIONS

134       runner.tx_hash (array)
135              List of fragment types (strings) which should be used for packet
136              Tx hash computation. The following are available:
137
138              eth — Uses source and destination MAC addresses.
139
140              vlan — Uses VLAN id.
141
142              ipv4 — Uses source and destination IPv4 addresses.
143
144              ipv6 — Uses source and destination IPv6 addresses.
145
146              ip — Uses source and destination IPv4 and IPv6 addresses.
147
148              l3 — Uses source and destination IPv4 and IPv6 addresses.
149
150              tcp — Uses source and destination TCP ports.
151
152              udp — Uses source and destination UDP ports.
153
154              sctp — Uses source and destination SCTP ports.
155
156              l4 — Uses source and destination TCP and UDP and SCTP ports.
157
158              Default: ["eth", "ipv4", "ipv6"]
159
160       runner.tx_balancer.name (string)
161              Name of active Tx balancer. Active Tx balancing is  disabled  by
162              default. The only value available is basic.
163
164              Default: None
165
166       runner.tx_balancer.balancing_interval (int)
167              In tenths of a second. Periodic interval between rebalancing.
168
169              Default: 50
170

LACP RUNNER SPECIFIC OPTIONS

172       runner.active (bool)
173              If  active  is  true LACPDU frames are sent along the configured
174              links periodically. If not, it acts as "speak when spoken to".
175
176              Default: true
177
178       runner.fast_rate (bool)
179              Option specifies the rate at which our link partner is asked  to
180              transmit  LACPDU  packets.  If this is true then packets will be
181              sent once per second. Otherwise they will be sent every 30  sec‐
182              onds.
183
184              Default: false
185
186       runner.tx_hash (array)
187              Same as for load balance runner.
188
189       runner.tx_balancer.name (string)
190              Same as for load balance runner.
191
192       runner.tx_balancer.balancing_interval (int)
193              Same as for load balance runner.
194
195       runner.sys_prio (int)
196              System priority, value can be 0 – 65535.
197
198              Default: 65535
199
200       runner.min_ports (int)
201              Specifies the minimum number of ports that must be active before
202              asserting carrier in the master interface,  value  can  be  1  –
203              1024.
204
205              Default: 1
206
207       runner.agg_select_policy (string)
208              This selects the policy of how the aggregators will be selected.
209              The following are available:
210
211              lacp_prio — Aggregator with highest priority according  to  LACP
212              standard  will  be  selected. Aggregator priority is affected by
213              per-port option lacp_prio.
214
215              lacp_prio_stable — Same as previous one, except do  not  replace
216              selected aggregator if it is still usable.
217
218              bandwidth — Select aggregator with highest total bandwidth.
219
220              count — Select aggregator with highest number of ports.
221
222              port_config — Aggregator with highest priority according to per-
223              port options prio and sticky will be selected. This  means  that
224              the  aggregator  containing  the  port with the highest priority
225              will be selected unless at least one of the ports  in  the  cur‐
226              rently selected aggregator is sticky.
227
228              Default: lacp_prio
229
230       ports.PORTIFNAME.lacp_prio (int)
231              Port priority according to LACP standard. The lower number means
232              higher priority.
233
234              Default: 255
235
236       ports.PORTIFNAME.lacp_key (int)
237              Port key according to LACP standard. It is only possible to  ag‐
238              gregate ports with the same key.
239
240              Default: 0
241
243       link_watch.delay_up | ports.PORTIFNAME.link_watch.delay_up (int)
244              Value  is a positive number in milliseconds. It is the delay be‐
245              tween the link coming up and the runner being notified about it.
246
247              Default: 0
248
249       link_watch.delay_down | ports.PORTIFNAME.link_watch.delay_down (int)
250              Value is a positive number in milliseconds. It is the delay  be‐
251              tween  the  link  going down and the runner being notified about
252              it.
253
254              Default: 0
255
257       link_watch.interval | ports.PORTIFNAME.link_watch.interval (int)
258              Value is a positive number in milliseconds. It is  the  interval
259              between ARP requests being sent.
260
261              Default: 1000
262
263       link_watch.init_wait | ports.PORTIFNAME.link_watch.init_wait (int)
264              Value  is a positive number in milliseconds. It is the delay be‐
265              tween link watch initialization and the first ARP request  being
266              sent.
267
268              Default: 0
269
270       link_watch.missed_max | ports.PORTIFNAME.link_watch.missed_max (int)
271              Maximum  number  of  missed  ARP  replies. If this number is ex‐
272              ceeded, link is reported as down.
273
274              Default: 3
275
276       link_watch.source_host | ports.PORTIFNAME.link_watch.source_host (host‐
277       name)
278              Hostname to be converted to IP address which will be filled into
279              ARP request as source address.
280
281              Default: 0.0.0.0
282
283       link_watch.target_host | ports.PORTIFNAME.link_watch.target_host (host‐
284       name)
285              Hostname to be converted to IP address which will be filled into
286              ARP request as destination address.
287
288       link_watch.validate_active  |  ports.PORTIFNAME.link_watch.validate_ac‐
289       tive (bool)
290              Validate  received  ARP  packets on active ports. If this is not
291              set, all incoming ARP packets will be considered as a  good  re‐
292              ply.
293
294              Default: false
295
296       link_watch.validate_inactive | ports.PORTIFNAME.link_watch.validate_in‐
297       active (bool)
298              Validate received ARP packets on inactive ports. If this is  not
299              set,  all  incoming ARP packets will be considered as a good re‐
300              ply.
301
302              Default: false
303
304       link_watch.vlanid | ports.PORTIFNAME.link_watch.vlanid (int)
305              By default, ARP requests are sent without VLAN tags. This option
306              causes  outgoing ARP requests to be sent with the specified VLAN
307              ID number.
308
309              Default: None
310
311       link_watch.send_always | ports.PORTIFNAME.link_watch.send_always (bool)
312              By default, ARP requests are sent on active ports only. This op‐
313              tion allows sending even on inactive ports.
314
315              Default: false
316
318       link_watch.interval | ports.PORTIFNAME.link_watch.interval (int)
319              Value  is  a positive number in milliseconds. It is the interval
320              between sending NS packets.
321
322              Default: 1000
323
324       link_watch.init_wait | ports.PORTIFNAME.link_watch.init_wait (int)
325              Value is a positive number in milliseconds. It is the delay  be‐
326              tween  link  watch  initialization and the first NS packet being
327              sent.
328
329       link_watch.missed_max | ports.PORTIFNAME.link_watch.missed_max (int)
330              Maximum number of missed NA reply packets. If this number is ex‐
331              ceeded, link is reported as down.
332
333              Default: 3
334
335       link_watch.target_host | ports.PORTIFNAME.link_watch.target_host (host‐
336       name)
337              Hostname to be converted to IPv6 address which  will  be  filled
338              into NS packet as target address.
339
340       link_watch_policy (string)
341              Name  of  link-watchers evaluation policy. Available options are
342              following:
343
344              any — Link is up if any of the link-watchers  reports  the  link
345              up.
346
347              all  —  Link  is up if all of the link-watchers reports the link
348              up.
349
350              Default: any
351

EXAMPLES

353       {
354         "device": "team0",
355         "runner": {"name": "roundrobin"},
356         "ports": {"eth1": {}, "eth2": {}}
357       }
358
359       Very basic configuration.
360
361       {
362         "device": "team0",
363         "runner": {"name": "activebackup"},
364         "link_watch": {"name": "ethtool"},
365         "ports": {
366           "eth1": {
367             "prio": -10,
368             "sticky": true
369           },
370           "eth2": {
371             "prio": 100
372           }
373         }
374       }
375
376       This configuration uses active-backup runner with ethtool link watcher.
377       Port eth2 has higher priority, but the sticky flag ensures that if eth1
378       becomes active, it stays active while the link remains up.
379
380       {
381         "device": "team0",
382         "runner": {"name": "activebackup"},
383         "link_watch": {
384           "name": "ethtool",
385           "delay_up": 2500,
386           "delay_down": 1000
387         },
388         "ports": {
389           "eth1": {
390             "prio": -10,
391             "sticky": true
392           },
393           "eth2": {
394             "prio": 100
395           }
396         }
397       }
398
399       Similar to the previous one. Only difference is that link  changes  are
400       not propagated to the runner immediately, but delays are applied.
401
402       {
403         "device": "team0",
404         "runner": {"name": "activebackup"},
405         "link_watch":     {
406           "name": "arp_ping",
407           "interval": 100,
408           "missed_max": 30,
409           "target_host": "192.168.23.1"
410         },
411         "ports": {
412           "eth1": {
413             "prio": -10,
414             "sticky": true
415           },
416           "eth2": {
417             "prio": 100
418           }
419         }
420       }
421
422       This configuration uses ARP ping link watch.
423
424       {
425       "device": "team0",
426       "runner": {"name": "activebackup"},
427       "link_watch": [
428         {
429           "name": "arp_ping",
430           "interval": 100,
431           "missed_max": 30,
432           "target_host": "192.168.23.1"
433         },
434         {
435           "name": "arp_ping",
436           "interval": 50,
437           "missed_max": 20,
438           "target_host": "192.168.24.1"
439         }
440       ],
441       "ports": {
442         "eth1": {
443           "prio": -10,
444           "sticky": true
445         },
446         "eth2": {
447           "prio": 100
448           }
449         }
450       }
451
452       Similar  to the previous one, only this time two link watchers are used
453       at the same time.
454
455       {
456         "device": "team0",
457         "runner": {"name": "activebackup"},
458         "link_watch_policy": "all",
459         "link_watch": [
460           {
461           "name": "arp_ping",
462           "interval": 100,
463           "missed_max": 30,
464           "target_host": "192.168.23.1"
465           },
466           {
467           "name": "ethtool"
468           }
469         ],
470         "ports":  {
471           "eth1": {
472             "prio": -10,
473             "sticky": true
474           },
475           "eth2": {
476             "prio": 100
477           }
478         }
479       }
480
481       Two link-watchers are used at the same time. Link is  up  only  if  all
482       configured link-watchers report link is up.
483
484       {
485         "device": "team0",
486         "runner": {
487           "name": "loadbalance",
488           "tx_hash": ["eth", "ipv4", "ipv6"]
489         },
490         "ports": {"eth1": {}, "eth2": {}}
491       }
492
493       Configuration for hash-based passive Tx load balancing.
494
495       {
496         "device": "team0",
497         "runner": {
498           "name": "loadbalance",
499           "tx_hash": ["eth", "ipv4", "ipv6"],
500           "tx_balancer": {
501             "name": "basic"
502           }
503         },
504         "ports": {"eth1": {}, "eth2": {}}
505       }
506
507       Configuration for active Tx load balancing using basic load balancer.
508
509       {
510         "device": "team0",
511         "runner": {
512           "name": "lacp",
513           "active": true,
514           "fast_rate": true,
515           "tx_hash": ["eth", "ipv4", "ipv6"]
516         },
517         "link_watch": {"name": "ethtool"},
518         "ports": {"eth1": {}, "eth2": {}}
519       }
520
521       Configuration for connection to LACP capable counterpart.
522

SEE ALSO

524       teamd(8), teamdctl(8), teamnl(8), bond2team(1)
525

AUTHOR

527       Jiri Pirko is the original author and current maintainer of libteam.
528
529
530
531libteam                           2013-07-09                     TEAMD.CONF(5)
Impressum