2026年9月20日

2026年9月20日

Spanning Tree と Link Aggregation の使い分け:ループ防止と帯域・冗長化の考え方

Spanning Tree(STP)と Link Aggregation(LAG/LACP)は、どちらも「スイッチ間を複数の線でつなぐ」ときに使う技術ですが、目的が違います。STP はループを防ぐために余分な経路を止める仕組み、Link Aggregation は複数の物理リンクを1本の論理リンクとして束ねて使う仕組みです。この記事では、両者の違いと組み合わせ方、サーバー側(Linux の bonding)での設定例と確認方法を整理します。

2つの技術が解決する問題の違い

Spanning Tree:ループを止めるための仕組み

L2 スイッチを冗長化のために輪の形でつなぐと、ブロードキャストフレームが延々と回り続ける「ブロードキャストストーム」が起きます。MAC アドレステーブルも不安定になり、ネットワーク全体が止まることもあります。STP はスイッチ同士が BPDU という制御フレームを交換してルートブリッジを決め、ループになる経路の一部のポートを「ブロッキング」にして論理的に1本の木構造にします。

ポイントは、STP では止められたリンクは通常時には通信に使われないことです。障害時にだけ切り替わる予備線であり、帯域は増えません。

規格としては、元の STP(IEEE 802.1D)、収束を速くした RSTP(802.1w、のちに 802.1D に統合)、VLAN ごとに木を分けられる MSTP(802.1s、のちに 802.1Q に統合)があります。現在の機器では RSTP か MSTP を使うのが一般的です。従来の STP は切り替えに数十秒かかることがありますが、RSTP は条件がそろえば数秒以内に収束します。

Link Aggregation:束ねて帯域と冗長性を得る仕組み

Link Aggregation は、同じ2台の機器の間にある複数のリンクを1つの論理インターフェースとして扱います。ネゴシエーションには LACP(IEEE 802.3ad として策定され、現在は 802.1AX)が使われます。メンバーのリンクが1本切れても、残りのリンクで通信が続きます。

注意したいのは、帯域の増え方です。通常はフロー(送信元・宛先の組み合わせ)ごとにハッシュでリンクを選ぶため、1本の TCP 接続はメンバー1本分の速度を超えません。1Gbps×2 の束でも、単一の大きなファイル転送が 2Gbps になるわけではありません。多数のクライアントが同時にアクセスする Web サーバーのような用途で効果が出ます。

使い分けの基本方針

両者は対立する選択肢ではなく、担当範囲が違います。

  • 同じ2台の機器の間を太く・冗長にしたい → Link Aggregation
  • 3台以上のスイッチを冗長な経路でつなぎ、ループを防ぎたい → Spanning Tree
  • 両方必要な構成 → スイッチ間を LAG で束ね、その LAG を STP からは1本のポートとして扱わせる

STP は LAG 全体を1つのポートとして計算するため、LAG のメンバーリンク同士がループとみなされてブロックされることはありません。逆に、LAG を組まずに同じスイッチ間へ2本つなぐと、STP は片方をブロックします。「2本つないだのに速度が変わらない」という相談の多くはこのパターンです。

2台のスイッチにまたがって束ねたい場合

サーバーを2台の別スイッチにつなぎ、スイッチ1台の故障にも耐えたい場合、通常の LAG は「同じ2台の機器の間」でしか組めません。この用途には、スタック構成やベンダー独自の MLAG(マルチシャーシ LAG)機能を使います。名称や対応状況は機器メーカーごとに異なるため、導入前に機器のドキュメントで対応モデルと設定手順を確認してください(2026年10月現在、実際の製品ではベンダー独自方式が主流で、異なるメーカーの機器同士で組むことは基本的にできません)。

サーバー側での設定:Linux bonding の例

サーバーから見た Link Aggregation は、Linux では bonding(または teaming)で設定します。よく使うモードは次の2つです。

  • 802.3ad(mode 4):LACP でスイッチと束ねる。スイッチ側にも LACP の設定が必要
  • active-backup(mode 1):1本だけ使い、切れたらもう1本に切り替える。スイッチ側の設定は不要

スイッチの設定を変えられない環境や、2台の別スイッチに単純につなぐだけなら active-backup が安全です。帯域も欲しい場合は、スイッチ側と合わせて 802.3ad を使います。

Ubuntu の netplan で 802.3ad を設定する例です(インターフェース名とアドレスは環境に合わせて変更してください)。

network:
  version: 2
  ethernets:
    eno1: {}
    eno2: {}
  bonds:
    bond0:
      interfaces: [eno1, eno2]
      addresses: [192.0.2.10/24]
      routes:
        - to: default
          via: 192.0.2.1
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100
        transmit-hash-policy: layer3+4

リモートから作業している場合、設定を誤るとそのまま接続が切れます。sudo netplan try を使うと、確認しなければ一定時間後に元の設定へ戻るため、遠隔作業ではこちらを先に試してください。データセンターのコンソールや IPMI など、ネットワーク以外の入り口を用意してから作業するのが基本です。

transmit-hash-policy: layer3+4 は IP アドレスとポート番号でリンクを分散させるため、Web サーバーでは偏りが減りやすい設定です。ただし、カーネルのドキュメントでは 802.3ad の厳密な要件を満たさない場合があるとされているので、スイッチ側の分散方式と合わせて検討してください。

状態の確認方法

# bonding の状態(LACP のパートナー情報、各メンバーの状態)
cat /proc/net/bonding/bond0

# リンクの詳細とカウンタ
ip -d link show bond0
ip -s link show eno1

/proc/net/bonding/bond0 で、各メンバーの「MII Status」が up になっているか、LACP のパートナー(スイッチ側)の情報が入っているかを見ます。パートナーの MAC が 00:00:00:00:00:00 のままなら、スイッチ側で LACP が有効になっていない可能性が高いです。

よくあるつまずきと確認ポイント

LAG のメンバー条件がそろっていない

速度・デュプレックス・VLAN 設定(アクセス VLAN、トランクの許可 VLAN)がメンバー間で違うと、そのリンクは束ねられません。スイッチ側で LAG の状態を表示し、どのメンバーが外れているかを確認します。

静的 LAG と LACP の混在

片側が LACP、もう片側が静的(LACP なし)の LAG だと、配線ミスに気づけずループや通信断の原因になります。可能な限り両側とも LACP にそろえると、相手が束ねられない状態のリンクを使わずに済みます。

サーバーポートで STP の待ち時間が発生する

サーバーやPCをつなぐポートで STP が通常動作していると、リンクアップ後しばらく通信できず、起動直後の DHCP やネットワークブートが失敗することがあります。エッジポート(ベンダーによって PortFast などの名称)を設定すると待ち時間を省けます。その場合は、誤ってスイッチがつながれたときに備えて BPDU ガードを併用するのが一般的です。

Linux ブリッジとの組み合わせ

仮想化ホストで bond の上に Linux ブリッジを作る構成では、ブリッジの STP は既定で無効です。ホスト内でループが生じる構成でなければ無効のままで問題ありませんが、複数の物理 NIC をブリッジに直接入れる場合は、LAG にまとめてからブリッジに入れるとループの心配がなくなります。状態は bridge link で確認できます。

クラウドや VPS では設定できない

AWS や一般的な VPS では、物理スイッチや NIC の冗長化は事業者側の管理範囲で、利用者が LACP や STP を設定することはありません。WordPress をクラウドで運用している場合、この記事の内容はオンプレミスやコロケーション、社内ネットワークで使う知識だと考えてください。

作業前の注意

スイッチの STP 設定変更は、ルートブリッジの選出が変わるとネットワーク全体の経路が切り替わり、短時間の通信断が起きることがあります。変更前に現在の設定を保存し、利用の少ない時間帯に作業し、元に戻す手順を用意してください。新しい構成は、可能であれば検証用のスイッチで試してから本番に入れます。

まとめ

  • Spanning Tree は冗長経路のループを防ぐ仕組みで、止めたリンクは通常時には使われない
  • Link Aggregation は同じ2台の間のリンクを束ね、帯域(フロー単位)と冗長性を得る仕組み
  • 両者は併用でき、STP は LAG を1本のポートとして扱う
  • 2台のスイッチにまたがる冗長化はスタックや MLAG など機器依存の機能で実現する
  • サーバー側は bonding の 802.3ad か active-backup を選び、/proc/net/bonding/ で状態を確認する
  • 設定変更はバックアップと切り戻し手順を用意し、遠隔作業ではコンソール経路を確保する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲