Features/TeamDriver

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
(How To Test)
(Scope)
Line 30: Line 30:
 
== Scope ==
 
== Scope ==
 
<!-- What work do the developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 
<!-- What work do the developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 +
 +
This is very isolated. It should not affect anything else. It does not touch any existing things.
  
 
== How To Test ==
 
== How To Test ==

Revision as of 15:15, 18 July 2012

= Network Team driver

Contents

Summary

Network Team driver allows multiple NICs to be teamed together and act like a single one.

Owner

Current status

  • Targeted release: Fedora 18
  • Last updated: 2012-07-18
  • Percentage of completion: 90%


Detailed Description

The purpose of the Team driver is to provide a mechanism to team multiple NICs (ports) into one logical one (teamdev) at L2 layer. The process is called "channel bonding", "Ethernet bonding", "channel teaming", "link aggregation", etc. This is already implemented in the Linux kernel by the bonding driver. The main thing to realize is that the Team driver project is not trying to replicate or mimic the bonding driver. What it does is it resolve the same problem using a different approach. Therefore, for example, the way Team is configured differs dramatically from the way bonding is. Team has many advantages over Bonding. It's modular, userspace driven, fast.

Benefit to Fedora

This will bring possibility to run userspace driven NIC teaming. There are some features not supported by bonding are supported by Team driver, for example:

  • load balancing for LACP
  • separate per-port link monitoring setup
  • port priorities and stickiness
  • IPv6 Neighbor Solicitation/Neighbor Advertisement link monitoring

Scope

This is very isolated. It should not affect anything else. It does not touch any existing things.

How To Test

Install "teamd" package first. You need two network interfaces for this basic test. In case their names are not "eth1" and "eth2", please adjust the config file.

test2:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:1a:db:bb brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 52:54:00:99:bb:27 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 52:54:00:b7:cc:fb brd ff:ff:ff:ff:ff:ff
test2:~# cat /usr/share/doc/
Display all 194 possibilities? (y or n)
test2:~# cat /usr/share/doc/teamd-0.1/example_configs/activebackup_ethtool_1.conf 
{
        "device":       "team0",
        "runner":       {"name": "activebackup"},
        "link_watch":   {"name": "ethtool"},
        "ports":        {
                "eth1": {
                        "prio": -10,
                        "sticky": true
                },
                "eth2": {
                        "prio": 100
                }
        }
}
test2:~# teamd -f /usr/share/doc/teamd-0.1/example_configs/activebackup_ethtool_1.conf -d
test2:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:1a:db:bb brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP mode DEFAULT qlen 1000
    link/ether ea:8e:85:d3:95:5d brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:b7:cc:fb brd ff:ff:ff:ff:ff:ff
5: team0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT 
    link/ether ea:8e:85:d3:95:5d brd ff:ff:ff:ff:ff:ff
test2:~# ip addr add 192.168.23.2/24 dev team0
test2:~# ip link set team0 up
test2:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:1a:db:bb brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP mode DEFAULT qlen 1000
    link/ether ea:8e:85:d3:95:5d brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:b7:cc:fb brd ff:ff:ff:ff:ff:ff
5: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 
    link/ether ea:8e:85:d3:95:5d brd ff:ff:ff:ff:ff:ff
test2:~# teamd -f /usr/share/doc/teamd-0.1/example_configs/activebackup_ethtool_1.conf -k
test2:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:1a:db:bb brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 52:54:00:99:bb:27 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 52:54:00:b7:cc:fb brd ff:ff:ff:ff:ff:ff

User Experience

Dependencies

Contingency Plan

Documentation

Release Notes

Comments and Discussion