AGR(4) BSD Kernel Interfaces Manual AGR(4)
agr -- link aggregation pseudo network interface driver
The agr driver provides link aggregation functionality (a.k.a. L2 trunking or bonding).
It supports the IEEE 802.3ad Link Aggregation Control Protocol (LACP) and the Marker Proto-
The agr driver supports the following link specific flags for ifconfig(8):
link0 Use the round-robin distribution algorithm. Don't use it unless you're really sure,
because it violates the frame ordering rule.
-link0 Use the default distribution algorithm, which is based on the hash of DA/SA, TCI,
and, if available, some upper layer protocol information like ip(4) DA/SA.
link1 Disable LACP. Prevents any LACP or Marker messaging which leaves the ports in the
default static configuration. Set this prior to adding ports.
Create an agr interface, agr0, and attach re0 and re1 to it. In other words, aggregate re0
and re1 so that they can be used as a single interface, agr0. The physical interfaces which
are attached to the agr interface must not have any IP addresses, neither IPv4 nor IPv6.
ifconfig re0 inet xxx.xxx.xxx.xxx delete
ifconfig re0 inet6 fe80::xxxx:xxxx:xxxx:xxxx delete
ifconfig re1 inet xxx.xxx.xxx.xxx delete
ifconfig re1 inet6 fe80::xxxx:xxxx:xxxx:xxxx delete
ifconfig agr0 create
ifconfig agr0 agrport re0
ifconfig agr0 agrport re1
Destroy an interface created in the above example.
ifconfig agr0 -agrport re0
ifconfig agr0 -agrport re1
ifconfig agr0 destroy
IEEE 802.3ad Aggregation of Multiple Link Segments
The agr driver first appeared in NetBSD 4.0.
The agr driver was written by YAMAMOTO Takashi.
There is no way to configure LACP administrative variables, including system and port prior-
ities. The current implementation of the agr driver always performs active-mode LACP and
uses 0x8000 as system and port priorities.
The agr driver uses the MAC address of the first-added physical interface as the MAC address
of the agr interface itself. Thus, removing the physical interface and using it for another
purpose can result in non-unique MAC addresses.
The current implementation of the agr driver doesn't prevent unsafe operations like some
ioctls against underlying physical interfaces. Such operations can result in unexpected
behaviors, and are strongly discouraged.
There is no way to configure agr interfaces without attaching physical interfaces.
Physical interfaces being added to the agr interface shouldn't have any addresses except for
link level address. Otherwise, the attempt will fail with EBUSY. Note that it includes an
automatically assigned IPv6 link-local address.
BSD February 23, 2010 BSD