AGR(4) | Device Drivers Manual | AGR(4)

# NAME

`agr` —
link aggregation pseudo network interface driver

# SYNOPSIS

`pseudo-device agr`

# DESCRIPTION

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

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.

# EXAMPLES

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

# SEE ALSO

ifconfig(8)

# STANDARDS

IEEE 802.3ad Aggregation of Multiple Link Segments

# HISTORY

The `agr` driver first appeared in NetBSD 4.0.

# AUTHORS

The `agr` driver was written by YAMAMOTO Takashi.

# BUGS

There is no way to configure LACP administrative variables, including system and port priorities. 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.

February 23, 2010 | NetBSD 9.5