[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#695850: ITP: libteam -- library for controlling team network device



Hi Guus,

You did a fantastic work on "ifenslave" (interface to bonding capabilities in 
kernel) -- thank you.
This new and experimental software has only potential to become an alternative 
to "ifenslave" one day.

> >             URL: https://libteam.org
> 
> That URL does not work, use either http://libteam.org/ or
> https://fedorahosted.org/libteam/.

Thanks for correction. (It's a bit strange as I was copy-pasting from my 
browser' address field...)


> Dramatically different? Many advantages? That tells me nothing. Instead
> please just give a list of *user visible* advantages that libteam has over
> bonding.

Why focus only on user visible changes? Upstream is trying to make 
bonding/teaming safer, easier and more maintainable by moving it to user 
space.

Perhaps the following links will answer your question better than me:

	http://www.pirko.cz/teamdev.pp.pdf
	https://fedorahosted.org/libteam/wiki/CompareToBonding

To provide summary here I quote from above documents:

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

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

-- 
Regards,
Dmitry.

P.S. I hope that answers your questions. Please let me know if you think 
teaming do not worth time spent on it.


Reply to: