リンクアグリゲーション

**リンクアグリゲーション** (Link Aggregation, リンク集約)・**LAG** (Link Aggregation Group) は、 主にイーサネット接続における物理ポートを並列接続して1つの結合リンクとして集約する機能。通常の物理ポート接続よりも通信容量を増やすことができ、物理リンクに障害が発生しても接続が切れずに冗長化できる。

この機能のプロトコルは **IEEE 802.1AX**により **LACP** (Link Aggregation Control Protocol) として標準化されている。なお、標準化以前からベンダ独自で実装されたものがあり、主にシスコシステムズの**イーサチャネル** (EtherChannel) が広く使われる。

## 概要

LAGでは、複数の物理リンクをグループ化して1つの論理リンクを作成でき、スイッチ・ルータ・サーバ間にフォルトトレラント(耐障害性)で広帯域なイーサネット接続が実現できる。主にバックボーン接続で使うが、エンドユーザの機器接続にも使える。既存配線をそのまま利用できるため拡張性が高い。

LAGの主な実装例として、以下の構成のものが使われる。
* 最大8個のアクティブポート
* さらに追加で最大8個のスタンバイポート
100M・1G・10Gbps通信に対応したアクティブポートを8個使うと、ポート速度によって最大で合計800M・8G・80Gbpsの帯域幅が可能になる。また、スタンバイポートはアクティブポートの障害発生時にアクティブになる。

LAGを構成する物理ポートはツイストペアケーブル・光ファイバ接続のいずれも混在できる。また、各ポートはすべて同じMACアドレスを持つ。これによりアプリケーション層やユーザなどの上位層からは透過的に扱われ、1つの論理リンクにしか見えないため個々の接続について何も意識せずに済む。

接続に障害が発生した場合、LAGは残りの物理リンクに通信を自動的に再配分(フェイルオーバー)する。この自動復旧は一般的に1秒未満であり、やはり上位層からは透過的に扱うことができる。スパニングツリープロトコル(STP)も併用でき、BPDUはLAG内のいずれか1ポートからのみ送信される。LAGのないSTPは機器間の1リンクがダウンしない限り残りの冗長接続を全て遮断してしまうのに対し、LAGの利用によって機器間の全ての接続を使えるようになるため、これは大きなメリットとなる。

LAGはVLANトランクとして設定することもできる。LAG内のいずれか1ポートがトランクポートとして設定されている場合は一般にLAG全体がVLANトランクとして動作する。

## 規格

**LACP** (Link Aggregation Control Protocol)は、リンクアグリゲーションの動作規格仕様。IEEE 802.1AXおよびその前身のIEEE 802.3adで規定された。

### 歴史
2024年現在、LACP規格には以下の版がある。
* IEEE 802.3ad-2000: "Aggregation of Multiple Link Segments" の名称でIEEE 802.3の追加機能として策定。
* IEEE 802.1AX-2008: "Link Aggregation" の名称でIEEE 802.1に移管。
** 802.1AXbk-2012: "Amendment 1: Protocol Addressing"
* IEEE 802.1AX-2014: (上記 AXbk およびタスクグループ P802.1AXbq の反映)
** 802.1AX-2014/Cor1-2017: 微修正
* IEEE 802.1AX-2020

規格策定以前の1990年代中盤時点で、すでに多くのネットワーク機器メーカがアグリゲーション機能を独自実装しており接続互換性の問題があった。IEEE 802.3標準化委員会では、1997年11月の会議で規格策定のためのスタディグループを立ち上げ、この中で冗長化対応を見込んで自動設定機能を入れ込むことに合意した。この仕様は2000年3月の**IEEE 802.3ad**で初めてLACPとしてClause 43に追加された。以降まもなく各メーカは独自規格ではなくこのLACPを採用している。

2006年11月に802.3の保守チームの報告では、802.3の副層として扱われていたLACPの下に、上位層にあたるIEEE 802.1X認証などが配置されており、プロトコルスタックの不整合が起きている点を指摘している。この解消のために2008年11月に**IEEE 802.1AX**としてLACPが移管され、IEEE 802.3からは削除された。当初は集約ポートの仕様が同一速度の全二重通信に限定されていたが、その後の2014年改版で異なる任意の速度のポート集約も可能となっている。

### 動作
機器同士の接続時にLACPフレーム (LACPDU; Link Aggregation Control Protocol Data Units) を送り合って情報交換し、これにより両機がその間の複数接続を検出して1つの論理リンクとして自動的にLAGを構成する。このときLACPには以下の2つのモードがある。
* アクティブモード: LACPフレームを毎秒送信する。
* パッシブモード: 相手側からLACPフレームを受け取って初めてこちらからLACPフレームを送る。

接続機器のいずれか一方はアクティブモードにする必要がある。アクティブモードの機器は、LACP有効となっている全ポートからLACPフレームを送信する。パッシブモードの相手は、これを受け取ったときに自身の情報をLACPフレームで送り返す。

LACPフレームのデータはイーサネットフレームの書式を踏襲しており、その内容は以下の通り。
* 宛先アドレス (6バイト): `01-80-C2-00-00-02` (スロープロトコル)
* 送信元アドレス (6バイト): LAGのMACアドレス(全ポートで共通)
* EtherType (2バイト): `0x8809` (スロープロトコル)
* サブタイプ (1バイト): `0x01` (LACP)
* LACPバージョン(1バイト): `0x02`
* Actor情報 (22バイト): TLV書式で `0x01 0x14 ...`
* Partner情報 (22バイト): TLV書式で `0x02 0x14 ...`
* Collector情報 (18バイト): TLV書式で `0x03 0x10 ...`
* データ末尾 (2バイト): TLV書式で `0x00 0x00`

LACPでは自機側と対向側のLACP処理部をそれぞれActor・Partner、主通信の分散送付部と収集受領部をそれぞれDistributor・Collectorと呼ぶ。LACPフレームではこれらの状態を互いに送り合っており、LAG確立後もキープアライブとして定期的に両者間で情報交換されている (デフォルト: 低速モードで30秒おき、高速モードで1秒おき)

## イーサチャネル

**イーサチャネル** (EtherChannel) は、シスコシステムズの製品でのリンクアグリゲーション機能を指す。1994年にシスコシステムズに買収されたKalpana社が1990年代初頭に開発したものに基づく。LACP対応機器にも一部転用されている機能がある。

### 対応機器
Catalystシリーズの全スイッチ製品と一部ルータ製品がEtherChannelをサポートしており、設定はCisco IOSを使う。1つの機器で複数チャネル(LAG)を構成でき、Catalyst 6500・6000では最大64個のLAGをサポートする。

サーバとの接続にはOSのドライバが対応している必要があり、例えばFreeBSDはLACP経由でEtherChannel接続ができる。

### 構成方法
大きく2つの設定方法がある。
* スタティック: 指定したポートを用いてLAGを構成するもの。コマンドで両対向ポートに対して手動設定する必要がある。
* ダイナミック: 設定パケットの送受によって自動検出してLAGを構成するもの。設定パケットとしてシスコ独自規格の**PAgP** (Port Aggregation Protocol)があるが、前述のLACPフレームも利用できる。

PAgPパケットではイーサネットフレームのSNAP書式を用いており、宛先MACに特殊マルチキャストアドレス`01-00-0C-CC-CC-CC` (シスコ固有アドレス)、プロトコルIDに`0x0104`を用いる。また、LACPではアクティブポートとスタンバイポートを設定できるが、PAgPではアクティブポートしか設定できない。

### 負荷分散
EtherChannelでは、通信中の送信ポート選択に独自のハッシュアルゴリズムを使って負荷分散(ロードバランス)している。このアルゴリズムに用いる値として、送信元・宛先のMACアドレス・IPアドレスや、TCP・UDPのポート番号が設定でき、これに基づいて算出される0～7の値によって送信ポートの配分が変化する。

## 脚注

### 出典