NAME¶
lagg —
link aggregation and link
failover interface
SYNOPSIS¶
To compile this driver into the kernel, place the following line in your kernel
configuration file:
device lagg
Alternatively, to load the driver as a module at boot time, place the following
line in
loader.conf(5):
DESCRIPTION¶
The
lagg interface allows aggregation of multiple network
interfaces as one virtual
lagg interface for the purpose of
providing fault-tolerance and high-speed links.
A
lagg interface can be created using the
ifconfig laggN
create command. It can use different link aggregation
protocols specified using the
laggproto
proto option. Child interfaces can be added using the
laggport child-iface option and
removed using the
-laggport
child-iface option.
The driver currently supports the aggregation protocols
failover (the default),
fec,
lacp,
loadbalance,
roundrobin, and
none. The protocols
determine which ports are used for outgoing traffic and whether a specific
port accepts incoming traffic. The interface link state is used to validate if
the port is active or not.
- failover
- Sends traffic only through the active port. If the master
port becomes unavailable, the next active port is used. The first
interface added is the master port; any interfaces added after that are
used as failover devices.
By default, received traffic is only accepted when they are received through
the active port. This constraint can be relaxed by setting the
net.link.lagg.failover_rx_all
sysctl(8) variable to a nonzero value, which is useful
for certain bridged network setups.
- fec
- Supports Cisco EtherChannel. This is a static setup and
does not negotiate aggregation with the peer or exchange frames to monitor
the link.
- lacp
- Supports the IEEE 802.3ad Link Aggregation Control Protocol
(LACP) and the Marker Protocol. LACP will negotiate a set of aggregable
links with the peer in to one or more Link Aggregated Groups. Each LAG is
composed of ports of the same speed, set to full-duplex operation. The
traffic will be balanced across the ports in the LAG with the greatest
total speed, in most cases there will only be one LAG which contains all
ports. In the event of changes in physical connectivity, Link Aggregation
will quickly converge to a new configuration.
- loadbalance
- Balances outgoing traffic across the active ports based on
hashed protocol header information and accepts incoming traffic from any
active port. This is a static setup and does not negotiate aggregation
with the peer or exchange frames to monitor the link. The hash includes
the Ethernet source and destination address, and, if available, the VLAN
tag, and the IP source and destination address.
- roundrobin
- Distributes outgoing traffic using a round-robin scheduler
through all active ports and accepts incoming traffic from any active
port.
- none
- This protocol is intended to do nothing: it disables any
traffic without disabling the lagg interface
itself.
Each
lagg interface is created at runtime using interface
cloning. This is most easily done with the
ifconfig(8)
create command or using the
cloned_interfaces variable in
rc.conf(5).
The MTU of the first interface to be added is used as the lagg MTU. All
additional interfaces are required to have exactly the same value.
EXAMPLES¶
Create a 802.3ad link aggregation using LACP with two
bge(4)
Gigabit Ethernet interfaces:
# ifconfig bge0 up
# ifconfig bge1 up
# ifconfig lagg0 laggproto lacp laggport bge0 laggport bge1 \
192.168.1.1 netmask 255.255.255.0
The following example uses an active failover interface to set up roaming
between wired and wireless networks using two network devices. Whenever the
wired master interface is unplugged, the wireless failover device will be
used:
# ifconfig em0 up
# ifconfig ath0 ether 00:11:22:33:44:55
# ifconfig create wlan0 wlandev ath0 ssid my_net up
# ifconfig lagg0 laggproto failover laggport em0 laggport wlan0 \
192.168.1.1 netmask 255.255.255.0
(Note the mac address of the wireless device is forced to match the wired device
as a workaround.)
SEE ALSO¶
ng_fec(4),
ng_one2many(4),
sysctl(8),
ifconfig(8)
HISTORY¶
The
lagg device first appeared in
FreeBSD
6.3.
AUTHORS¶
The
lagg driver was written under the name
trunk by
Reyk Floeter
⟨reyk@openbsd.org⟩. The LACP implementation was written by
YAMAMOTO Takashi for
NetBSD.
BUGS¶
There is no way to configure LACP administrative variables, including system and
port priorities. The current implementation always performs active-mode LACP
and uses 0x8000 as system and port priorities.