November 5, 2007 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.

### 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)

  `

              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 NetBSD4.0.

### AUTHORS

The agr driver was written by YAMAMOTO Takashi
.

### BUGS

The current implementation of the agr driver always attempts automatic configuration via LACP. There is no way to configure statically or use non IEEE 802.3 devices.

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.