【図解】リンクアグリゲーションの仕組み〜負荷分散、LACPとStaticの違いやメリットデメリット、条件等〜

リンクアグリゲーションとは、複数のEthernetポートを論理的に1つに見せる、スパニングツリーに替わるL2冗長化技術です。スパニングツリーより優れている点は、通常時において冗長化だけでなく負荷分散も可能であり、利用できる帯域が増えることです。最大8ポートまで同時に通信できるようになります。

元はciscoが独自に策定した"EtherChannel(イーサチャネル)"がベースで、IEEE委員会が規格化しました。ポートチャネルとも言われますが同じ機能です。

リンクアグリゲーションに関する誤解集

Q. 1つのパケットを2つのethernetに並列で出すの?

A. いいえ、パケット単位で経路の負荷分散をします。

Q. 規格はIEEE802.3adだよね?

A. いいえ、昔はそうでしたが今はIEEE802.1AX-2008です。

Q. 規格ってLACPを規定してるだけじゃないの?

A. いいえ、IEEE802.1AXではStatic Link Aggregation(ciscoで言う mode on)とDynamic Link AggregationLACP)の両方が規定されています

リンクアグリゲーションの条件

複数のポートでLAG(Link Aggregation Group)というグループを組みます。1つのLAGで動作するEthernetポートは8本までです。Static で使う場合は1つのLAGに8本まで設定できます。LACPを使う場合は16本まで設定できますが、8本がActiveで、残りはStandby(通信利用不可)になります。Activeの線が1本不通になった場合、Standbyのうち1本がActiveになります。

また、LAG内ではEthernet規格は揃っている必要があります。例えば{1000Base-Tと1000Base-LX}、{1000Base-Tと100Base-TX}といった組み合わせはできません。

リンクアグリゲーションの動作

送受信の動作は以下のようになります。

送信

Staticの場合はLAGのうちリンクアップしているポートの中から、Dynamic(LACP)の場合はLAGのうちLACPで疎通が取れているポートの中から送信します。

どのポートを使うかは送信側の負荷分散方式のみに従います受信側は関係ありません)。取り得る負荷分散方式の種類は以下の組み合わせパターン全てで、サポートされる種類、デフォルト値はメーカによって異なります。

{送信元MACアドレス , 宛先MACアドレス , 送信元IPアドレス , 宛先IPアドレス , 送信元ポート , 宛先ポート}

上記のうち1つだけ見る方式もありますし、2~6個の組み合わせを見る方式もあります。見るときはハッシュを計算し、そのハッシュ値に応じてどのEthernetポートを使うかを決めます。

受信

受信はどのポートに来ても同じように扱います相手の負荷分散方式にはこだわりません)。

論理的には1つのポートの扱いになりますので、リンクアグリゲーショングループ内の他のポートへのブロードキャストやフラッディングはされません。また、同じMACアドレスからのフレームを毎回違うポートから受信しても、MACアドレステーブルの更新は行われません。(1つの論理ポートで受信するため)

LACPを使うメリット

LACPを使うメリットは以下2つです。

  1. 9本以上で接続し、予備を持たせることができます。
  2. リンクダウンを伴わない障害を正しく検知し、適切なフレーム転送ができます。

2つ目については例えば、メディアコンバータを介してStatic Link Aggregationを組む場合、メディアコンバータの光ケーブル側だけ障害が起きた場合はスイッチとしてはリンクアップしたままで、利用できる経路と判断されるため、障害の経路にもフレームを投げ、そのフレームがメディアコンバータで破棄される、というケースが考えられます。

しかしLACPを遣えばそのようなケースでも経路上でLACPが通信できないことを把握し、障害と認識し、その経路を使わないようにすることができます

LACPを使うデメリット

具体的に予想しうるデメリットはありませんが、バグなどの予期せぬ動作によりNW不具合を引き起こす例はあります。実際、RedHatでは過去に何度かLACPによる不具合が発生しています。

※ Linux系では LinkAggregationではなくBonding(ボンディング)と呼びます。ちなみに、Windows系では Teaming(チーミング)と呼びます。

https://access.redhat.com/solutions/160283#

https://bugzilla.redhat.com/show_bug.cgi?id=619070

シェアする

  • このエントリーをはてなブックマークに追加

フォローする