「スイッチ間の帯域が足りない」「片方のリンクが落ちたら通信止まる」——そんなときに最初に検討するのがEtherChannel。物理リンクを束ねて1本の論理リンクとして扱う技術で、Cisco Catalyst系なら標準で使える。
ただ、いざ設定しようとすると「LACPとPAgPって何が違うの?」「mode activeとpassive、両側どっちにすればいい?」「片側Static、片側LACPで繋がらないんだけど…」みたいな疑問が次々出てくる。で、ここで詰まる人が多い。
この記事では、現場でCatalyst 9300とCatalyst 2960Xを束ねた経験ベースで、EtherChannelの3モードの違い、設定手順、トラブルシュート、そしてやらかしがちなハマりどころまで一通り書いていく。コピペで動く実機ベースのコマンド例付き。
EtherChannelとは何か?基本のキを30秒で
EtherChannelは、複数の物理ポート(最大8本)を束ねて1本の論理ポート(Port-channel)として扱うCisco独自の技術。Link Aggregationと呼ばれることもあるけど、業界標準(IEEE 802.3ad)に準拠したのがLACP、Cisco独自プロトコルがPAgP、ネゴシエーションなしで強制束ねるのがStaticという整理。
束ねる目的は主に2つ。帯域拡張(1Gbps × 4本=4Gbps相当)と、冗長化(1本切れても通信継続)。STPから見ると束ねた論理ポートは1本扱いなので、ループも発生しない。
以前、コアスイッチとアクセススイッチの間を1Gbps×1本で繋いでた拠点で、Web会議が増えて帯域が逼迫。慌ててEtherChannelで2本束ねたら、トラフィックが綺麗に分散して即解決。設定はトータル10分くらいだったけど、客先のNWエンジニアに「これで来期の機器更改まで持つわ」と感謝された。地味だけど効く技術。
LACPの規格はIEEE 802.3ad(後に802.1AXに統合)。Cisco以外のメーカー(Juniper、Arista、HPE Aruba、FortiGate等)でも互換性があるため、異ベンダー間の接続では基本LACPを使う。社内全部Ciscoならどれでも動くけど、迷ったらLACPでOK。
LACP / PAgP / Static の違い完全比較
3つの方式は同じ「リンクを束ねる」目的でも、ネゴシエーションの有無や対応ベンダーが違う。表で並べるとわかりやすい。
| 項目 | LACP | PAgP | Static (mode on) |
|---|---|---|---|
| 規格 | IEEE 802.3ad(業界標準) | Cisco独自 | なし(強制束ね) |
| ネゴシエーション | あり | あり | なし |
| 設定モード | active / passive | desirable / auto | on |
| 推奨モード組合せ | active ⇔ active | desirable ⇔ desirable | on ⇔ on |
| 異ベンダー接続 | ○ 可能 | × Cisco同士のみ | △ 設定一致なら可 |
| 推奨用途 | 迷ったらコレ | レガシー環境 | 非推奨(基本使わない) |
図1: 3方式の運用しやすさ・安全性比較
95%
60%
30%
で、結論を先に言うと 迷ったらLACPのactive ⇔ active。理由はシンプルで、業界標準だしネゴシエーションで設定不一致を検知してくれるから。Staticは手動で全部合わせる必要があって、片側落とすと検知できずブラックホール化することもある。正直あまりおすすめしない。
LACPを passive ⇔ passive で組むのは禁忌。両方とも「相手から声かけてくれ」状態で、永遠にネゴシエーションが始まらない。最低でも片側はactiveにする必要がある。同様にPAgPの auto ⇔ auto もNG。
EtherChannel設定の事前準備チェックリスト
EtherChannelは「束ねるポート同士の設定が完全一致」してないと、論理ポートに参加してくれない。事前にこれをチェック。
| 確認項目 | 必要な状態 | 確認コマンド |
|---|---|---|
| 速度・Duplex | 束ねる全ポートで完全一致(例:1000/full) | show interface status |
| スイッチポートモード | accessかtrunkかを統一 | show running-config interface |
| VLAN設定 | access vlan / allowed vlan が一致 | show interfaces switchport |
| Native VLAN | trunk時は両端で同じVLAN ID | show interfaces trunk |
| STP設定 | portfast/bpduguardの有無を統一 | show spanning-tree interface |
| 束ねる本数 | 最大8本(Active)。9本目以降はHot-Standby | — |
ぶっちゃけ、ここで一番ハマるのは「片側がaccessで、もう片側がtrunkになってた」パターン。設計書通りにやってるつもりでも、別の人が触った後だとよくある。show running-config interface で必ず両端を比較する癖をつけたほうがいい。
LACP設定手順(Catalyst 9300での実機例)
想定構成は、Catalyst 9300(SW1)のGi1/0/1とGi1/0/2を束ねて、Catalyst 9300(SW2)のGi1/0/1とGi1/0/2に接続。Trunkポートとして両側を組む。
SW1# configure terminal SW1(config)# interface range GigabitEthernet1/0/1 - 2 SW1(config-if-range)# switchport mode trunk SW1(config-if-range)# switchport trunk allowed vlan 10,20,30 SW1(config-if-range)# channel-protocol lacp SW1(config-if-range)# channel-group 1 mode active Creating a port-channel interface Port-channel 1 SW1(config-if-range)# end
channel-group 1 mode active とすると、Port-channel 1 インターフェースが自動的に作成される。事前に interface Port-channel 1 を作る必要はない。channel-protocol lacp は明示しなくても mode active なら自動的にLACPになるけど、レビュー時のわかりやすさのため明示するのが好み。
SW2# configure terminal SW2(config)# interface range GigabitEthernet1/0/1 - 2 SW2(config-if-range)# switchport mode trunk SW2(config-if-range)# switchport trunk allowed vlan 10,20,30 SW2(config-if-range)# channel-protocol lacp SW2(config-if-range)# channel-group 1 mode active SW2(config-if-range)# end
SW1(config)# interface Port-channel 1 SW1(config-if)# description ===Trunk to SW2 (LACP)=== SW1(config-if)# spanning-tree guard root SW1(config-if)# end SW1# write memory
物理インターフェース側に description や VLAN 設定を入れても、 channel-group コマンドで紐付けると一部の設定は Port-channel 側に統一される。物理側に入れるべき設定(speed/duplex等)と、論理側に入れるべき設定(VLAN/STP等)の使い分けに最初は戸惑う。
動作確認コマンドと出力の読み方
SW1# show etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use f - failed to allocate aggregator
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi1/0/1(P) Gi1/0/2(P)
この出力で見るべきは Po1(SU) と各ポート横の (P)。
| フラグ | 意味 | 対処 |
|---|---|---|
| SU / (P) | 正常。L2でin-use、ポートはbundled状態 | 何もしなくてOK |
| SD | L2だけど全ポートDown | ケーブル/モジュールを確認 |
| (I) | Stand-alone。EtherChannelに参加できてない | 対向のmode設定を確認 |
| (s) | Suspended。設定不一致でブロックされてる | show interfaces で速度/VLAN差異を調査 |
| (H) | Hot-Standby。9本目以降の控え | 設計通りなら正常 |
SW1# show lacp neighbor
Flags: S - Device is requesting Slow LACPDUs
F - Device is requesting Fast LACPDUs
A - Device is in Active mode P - Device is in Passive mode
Channel group 1 neighbors
Partner's information:
LACP port Admin Oper Port Port
Port Flags Priority Dev ID Age key Key Number State
Gi1/0/1 SA 32768 a8b1.0fcc.dd00 18s 0x0 0x1 0x102 0x3D
Gi1/0/2 SA 32768 a8b1.0fcc.dd00 18s 0x0 0x1 0x103 0x3D
Flagsの「SA」は Slow LACPDU + Active mode の意味。Port Stateの 0x3D は2進数で 0011 1101、つまり distributing/collecting 両方ONで通信できてる状態。これも見方覚えるとトラシューが早くなる。
図2: 実測した束ね本数別スループット(iperf3、1Gbps × N本、TCP)
940Mbps
1.85Gbps
3.7Gbps
理論値の93〜95%くらい出る。ただし、これは複数の送信元・宛先が混在してるトラフィックでの値。単一フロー(同じ送信元IPから同じ宛先IPへの1セッション)だと、ロードバランスのアルゴリズム次第で1本のリンクに集中することがあるので注意。
ロードバランスアルゴリズムを忘れずに調整
EtherChannelは束ねただけだとデフォルトのロードバランス方式(src-mac等)で動いてしまう。単一サーバが大量送信するような環境だと偏る。
SW1# show etherchannel load-balance
EtherChannel Load-Balancing Configuration:
src-mac
SW1# configure terminal
SW1(config)# port-channel load-balance src-dst-ip
SW1(config)# end
SW1# show etherchannel load-balance
EtherChannel Load-Balancing Configuration:
src-dst-ip
機種にもよるけど、Catalyst 9300なら src-dst-ip か src-dst-mixed-ip-port が無難。L4ポート番号まで考慮するハッシュ(src-dst-mixed-ip-port)にすると、同じサーバ間の複数TCPセッションがリンクに分散される。これ知らずに「束ねたのに帯域出ねえ」って相談を受けたことが過去5回くらいある。
EtherChannelが上がらないときのトラブルシュート
9割は設定不一致が原因。残り1割はファームウェアやハードウェアの相性。エラーパターンと対処を表でまとめる。
| 症状 | よくある原因 | 対処 |
|---|---|---|
| フラグが「(I)」のまま | 対向がmode on(Static)になってる | 両側ともactiveに揃える |
| フラグが「(s)」になる | 速度/Duplex/VLAN設定不一致 | show interfaces で両端比較 |
| passive ⇔ passiveでネゴ始まらない | どちら側もLACPDU送信しない | 片側をactiveに変更 |
| 片側Static、片側LACPで上がらず | プロトコル不一致 | どちらかに統一(基本LACP) |
| 束ねたのに帯域出ない | ロードバランスアルゴリズム偏り | port-channel load-balance変更 |
| 片リンク断でPort-channelごと落ちる | min-linksが束数と同じ | port-channel min-links 1 に |
深夜のメンテで4本のEtherChannelを組んだとき、なぜか1本だけ(s)で上がらず。3時間ハマった末に判明したのは、その1ポートだけ昔の作業で speed 100 nonegotiate が残ってたこと。show running-config interface を端から端まで diff 取れって、これ以来の教訓。configダンプして diff 取れば30秒で見つかった話。
まとめ:迷ったらLACPのactive ⇔ active
EtherChannelは「LACPでactive ⇔ active」が現代のスタンダード。設定の前に両端のスピード・Duplex・VLAN・モード一致を確認する。show etherchannel summary でフラグが SU + 全ポート(P)になってればOK。帯域が想定通り出ないときはロードバランスアルゴリズムを src-dst-mixed-ip-port に変えてみる。トラブル時は両端のconfigを diff 取って差を潰すのが最速ルート。
よくある質問(FAQ)
Q. LACPのactiveとpassiveで何が違うの?
activeは自分から積極的にLACPDUを送ってネゴシエーションを始める。passiveは相手からのLACPDUを待つだけで自分からは送らない。両方passiveだと永遠にネゴが始まらないので、最低片側はactiveに。基本は両側activeで揃えるのがおすすめ。
Q. 何本まで束ねられる?
最大16本(うちactiveは8本まで、9本目以降はHot-Standby)。ただ実際は、4本超えると配線も複雑になるので、コアスイッチ間でも2〜4本が現実的。サーバ接続なら2本で十分なケースが多い。
Q. 異なるラインカード(モジュール)のポートを混ぜていい?
基本OKだし、むしろ推奨。同じカードのポートだけで束ねるとカード障害で全滅する。Cross-Stack EtherChannelやCross-Module EtherChannelとして冗長性を上げられる。Catalyst 9300のスタック構成だと、別スイッチのポートとも束ねられるのが強み。
Q. Port-channel削除するときの注意点は?
no interface Port-channel 1 で論理ポートを消すと、束ねてた物理ポートからchannel-group設定が外れる。でもその他の設定(switchport mode trunk等)は物理側に残るので、運用上問題なければそのまま。配線も組み替えるなら、物理ポートを default interface で初期化してからやり直すのが安全。
Q. LACPのfastとslowはどう使い分ける?
デフォルトはslow(30秒間隔のLACPDU)。fast(1秒間隔)にするとリンク障害検知が3秒以内に短縮されるが、CPU負荷とトラフィックが増える。仮想化基盤のような高速切替が必要なら検討、それ以外は基本slowで問題ない。lacp rate fast コマンドで切り替え。


