You are on page 1of 6

30.7.

Link Aggregation and Failover

1 of 6

https://www.freebsd.org/doc/handbook/network-aggregation.html

30.7. Link Aggregation and Failover
Chapter 30. Advanced Networking

Prev

Next

30.7. Link Aggregation and Failover
Written by Andrew Thompson.
FreeBSD provides the lagg(4) interface which can be used to aggregate multiple network
interfaces into one virtual interface in order to provide failover and link aggregation.
Failover allows traffic to continue to flow as long as at least one aggregated network
interface has an established link. Link aggregation works best on switches which support
LACP, as this protocol distributes traffic bi-directionally while responding to the failure
of individual links.
The aggregation protocols supported by the lagg interface determine which ports are used
for outgoing traffic and whether or not a specific port accepts incoming traffic. The
following protocols are supported by lagg(4):
failover
This mode sends and receives traffic only through the master port. If the master
port becomes unavailable, the next active port is used. The first interface added to
the virtual interface is the master port and all subsequently added interfaces are
used as failover devices. If failover to a non-master port occurs, the original port
becomes master once it becomes available again.
fec / loadbalance
Cisco® Fast EtherChannel® (FEC) is found on older Cisco® switches. It provides
a static setup and does not negotiate aggregation with the peer or exchange frames
to monitor the link. If the switch supports LACP, that should be used instead.
lacp
The IEEE® 802.3ad Link Aggregation Control Protocol (LACP) negotiates a set of
aggregable links with the peer into one or more Link Aggregated Groups (LAGs).
Each LAG is composed of ports of the same speed, set to full-duplex operation,
and traffic is balanced across the ports in the LAG with the greatest total speed.
Typically, there is only one LAG which contains all the ports. In the event of
changes in physical connectivity, LACP will quickly converge to a new
configuration.
LACP balances outgoing traffic across the active ports based on hashed protocol
header information and accepts incoming traffic from any active port. The hash
includes the Ethernet source and destination address and, if available, the VLAN
tag, and the IPv4 or IPv6 source and destination address.
roundrobin
This mode distributes outgoing traffic using a round-robin scheduler through all
active ports and accepts incoming traffic from any active port. Since this mode
violates Ethernet frame ordering, it should be used with caution.

09/10/2015 10:27

org/doc/handbook/network-aggregation.RUNNING. It then shows how to configure two Ethernet interfaces in failover mode as well as how to configure failover mode between an Ethernet and a wireless interface.BROADCAST. Frame ordering is mandatory on Ethernet links and any traffic between two stations always flows over the same physical link.3/24: # # # # ifconfig ifconfig ifconfig ifconfig fxp0 up fxp1 up lagg0 create lagg0 up laggproto lacp laggport fxp0 laggport fxp1 10.7. On the Cisco® switch. channel group number. create the lagg(4) interface using the physical interfaces fxp0 and fxp1 and bring the interfaces up with an IP address of 10. verify the status of the virtual interface: # ifconfig lagg0 lagg0: flags=8843<UP. add the FastEthernet0/1 and FastEthernet0/2 interfaces to channel group 1: interface FastEthernet0/1 channel-group 1 mode active channel-protocol lacp ! interface FastEthernet0/2 channel-group 1 mode active channel-protocol lacp On the FreeBSD system.MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 media: Ethernet autoselect status: active 09/10/2015 10:27 . Configuration Examples This section demonstrates how to configure a Cisco® switch and a FreeBSD system for LACP load balancing. Replace the names of the Cisco® ports.SIMPLEX.1.3/24 Next. limiting the maximum speed to that of one interface. The transmit algorithm attempts to use as much information as it can to distinguish different traffic flows and balance the flows across the available interfaces.html 30.0. Ethernet devices.0. and IP address shown in the example to match the local configuration.0. LACP Aggregation with a Cisco® Switch This example connects two fxp(4) Ethernet interfaces on a FreeBSD machine to the first two Ethernet ports on a Cisco® switch as a single load balanced and fault tolerant link. More interfaces can be added to increase throughput and fault tolerance.1. Example 30.30.freebsd.7.0. Link Aggregation and Failover 2 of 6 https://www.

In this example. To configure failover. To retain this configuration across reboots.freebsd.8db8 29s Oper Key 0x146 0x146 Port Number 0x3 0x4 Port State 0x3D 0x3D For more detail.Device is in Passive mode Channel group 1 neighbors Partner's information: Port Fa0/1 Fa0/2 Flags SA SA LACP port Priority Dev ID Age 32768 0005.org/doc/handbook/network-aggregation. add the following entries to /etc/rc. Traffic will be transmitted and received through these active ports.0.0.COLLECTING.3/24 Example 30.conf on the FreeBSD system: ifconfig_fxp0="up" ifconfig_fxp1="up" cloned_interfaces="lagg0" ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 10.COLLECTING. To see the port status on the Cisco® switch: switch# show lacp neighbor Flags: S .15/24: # # # # ifconfig ifconfig ifconfig ifconfig fxp0 up fxp1 up lagg0 create lagg0 up laggproto failover laggport fxp0 laggport fxp1 The virtual interface should look something like this: 09/10/2015 10:27 .7. fxp1 is the secondary interface.Device is requesting Slow LACPDUs F .0.5d71.DISTRIBUTING> laggport: fxp0 flags=1c<ACTIVE.Device is requesting Fast LACPDUs A . then create the lagg(4) interface. make sure that the underlying physical interfaces are up.5d71. type show lacp neighbor detail.DISTRIBUTING> Ports marked as ACTIVE are part of the LAG that has been negotiated with the remote switch.Device is in Active mode P . and the virtual interface is assigned an IP address of 10.html laggproto lacp laggport: fxp1 flags=1c<ACTIVE. fxp0 is the master interface.30. Add -v to the above command to view the LAG identifiers.8db8 29s 32768 0005. Failover Mode Failover mode can be used to switch over to a secondary interface if the link is lost on the master interface.2. Link Aggregation and Failover 3 of 6 https://www.0.

15 netmask 0xffffff00 broadcast 10. it is usually desirable to configure the wireless device as a secondary which is only used when the Ethernet connection is not available.SIMPLEX.ACTIVE> Traffic will be transmitted and received on fxp0. bge0.0.MULTICAST> metric 0 mtu 1500 options=19b<RXCSUM.AUTO_LINKLOCAL> media: Ethernet autoselect (1000baseT <full-duplex>) status: active Replace bge0 to match the system's Ethernet interface name.VLAN_MTU.RUNNING.MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 inet 10. To retain this configuration across reboots. Link Aggregation and Failover 4 of 6 https://www. If the link is restored on the master interface. The ether line 09/10/2015 10:27 . With lagg(4). determine the MAC address of the Ethernet interface: # ifconfig bge0 bge0: flags=8843<UP.7. which will be configured with the MAC address of the Ethernet interface. This is achieved by overriding the physical wireless interface's MAC address with that of the Ethernet interface.TSO4> ether 00:21:70:da:ae:37 inet6 fe80::221:70ff:feda:ae37%bge0 prefixlen 64 scopeid 0x2 nd6 options=29<PERFORMNUD. In this example. is the master and the wireless interface. it is possible to configure a failover which prefers the Ethernet connection for both performance and security reasons.RUNNING.html # ifconfig lagg0 lagg0: flags=8843<UP.255 media: Ethernet autoselect status: active laggproto failover laggport: fxp1 flags=0<> laggport: fxp0 flags=5<MASTER. Failover Mode Between Ethernet and Wireless Interfaces For laptop users. the Ethernet interface.0.conf: ifconfig_fxp0="up" ifconfig_fxp1="up" cloned_interfaces="lagg0" ifconfig_lagg0="laggproto failover laggport fxp0 laggport fxp1 10.0.0.3.BROADCAST.TXCSUM.IFDISABLED. is the failover. while maintaining the ability to transfer data over the wireless connection. The wlan0 device was created from iwn0 wireless interface. add the following entries to /etc/rc.freebsd.15/24 Example 30.0. If the link is lost on fxp0.VLAN_HWCSUM. wlan0.SIMPLEX.30.org/doc/handbook/network-aggregation. First.0. fxp1 will become the active link.BROADCAST.VLAN_HWTAGGING. it will once again become the active link.

RUNNING. Link Aggregation and Failover 5 of 6 https://www.MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:21:70:da:ae:37 media: Ethernet autoselect status: active laggproto failover laggport: wlan0 flags=0<> laggport: bge0 flags=5<MASTER.6.8. but do not set an IP address: # ifconfig wlan0 create wlandev iwn0 ssid my_router up Make sure the bge0 interface is up.html will contain the MAC address of the specified interface.conf: ifconfig_bge0="up" ifconfig_iwn0="ether 00:21:70:da:ae:37" wlans_iwn0="wlan0" ifconfig_wlan0="WPA" cloned_interfaces="lagg0" ifconfig_lagg0="laggproto failover laggport bge0 laggport wlan0 DHCP" Prev 30.SIMPLEX.freebsd.7.org/doc/handbook/network-aggregation.BROADCAST. Now.ACTIVE> Then.30. then create the lagg(4) interface with bge0 as master with failover to wlan0: # ifconfig bge0 up # ifconfig lagg0 create # ifconfig lagg0 up laggproto failover laggport bge0 laggport wlan0 The virtual interface should look something like this: # ifconfig lagg0 lagg0: flags=8843<UP. start the DHCP client to obtain an IP address: # dhclient lagg0 To retain this configuration across reboots. Diskless Operation with PXE 09/10/2015 10:27 . Bridging Up Home Next 30. change the MAC address of the underlying wireless interface: # ifconfig iwn0 ether 00:21:70:da:ae:37 Bring the wireless interface up. add the following entries to /etc/rc.

org>. Link Aggregation and Failover 6 of 6 https://www.html All FreeBSD documents are available for download at http://ftp. Send questions about this document to <freebsd-doc@FreeBSD.30.org/doc/handbook/network-aggregation.FreeBSD.org>. 09/10/2015 10:27 .org/pub/FreeBSD/doc/ Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.freebsd.7.