File: README.Debian

package info (click to toggle)
libteam 1.31-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 1,344 kB
  • sloc: ansic: 17,494; sh: 1,242; python: 613; makefile: 102
file content (73 lines) | stat: -rw-r--r-- 2,439 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 Following table compares Bonding vs. Team features:
    https://fedorahosted.org/libteam/wiki/CompareToBonding

[Feature]							[Bonding]	[Team]
 broadcast TX policy						 Yes		 Yes
 round-robin TX policy						 Yes		 Yes
 active-backup TX policy					 Yes 		 Yes
 LACP (802.3ad) support						 Yes 		 Yes
 Hash-based TX policy						 Yes 		 Yes
 User can set hash function					 No 		 Yes
 TX load-balancing support (TLB)				 Yes 		 Yes
 RX load-balancing support (ALB)				 Yes 		 Yes (Wip)
 LACP hash port select						 Yes 		 Yes
 load-balancing for LACP support				 No 		 Yes
 Ethtool link monitoring					 Yes 		 Yes
 ARP link monitoring						 Yes 		 Yes
 NS/NA (IPV6) link monitoring					 No 		 Yes
 ports up/down delays						 Yes 		 Yes
 port priorities and stickiness ("primary" option enhancement)	 No		 Yes
 separate per-port link monitoring setup			 No		 Yes
 multiple link monitoring setup					 Limited	 Yes
 lockless TX/RX path						 No (rwlock)	 Yes (RCU)
 VLAN support							 Yes		 Yes
 user-space runtime control					 Limited	 Full
 Logic in user-space						 No		 Yes
 Extensibility							 Hard		 Easy
 Modular design							 No		 Yes
 Performance overhead						 Low		 Very Low
 D-Bus interface						 No		 Yes

---

## Bonding driver

 *  Introduced in 2000
 *  Huge and messy, therefore buggy
 *  All logic is in kernel (monolith)
 *  Does what it should not do (ARP link validation, 802.3ad, ...)
 *  Too many config interfaces
 *  12200 lines
 *  Not fixable due to backward compatibility concerns

---

## Team device overview

 *  Team is coming with modular approach
 *  User-space based controlling
 *  Minimum of the code is in kernel
    * "Puppet"
 *  Control logic is implemented in user-space daemon
    * "Puppeteer"
 *  Enslaved network interfaces are called "ports"

 *  Only necessary fast-path code. (1400 lines)
 *  Netlink communication (generic Netlink). (600 lines)
 *  Team "modes"
    * One mode, one kernel module
    * Determine basic low-level behaviour
    * Well defined API between team core and mode code
    * round-robin, active-backup, ... easy to add more

### Advantages comparing to bonding

 *  Extensibility. Anyone can easily add features/change behaviour
 *  Better system stability (daemon crash is always better than
    kernel panic/memory corruption etc.)
 *  Better debugging possibilities.

The goal of team device is to supersede bonding functionality
and then kill it eventually.