Cisco EtherChannel(LACP)設定手順|LACP/PAgP/Static の違いと現場のハマりどころ【実機検証】

Cisco EtherChannel LACP 構成図 - Catalyst 9300 2台間で2本のリンクをLACP activeで束ねた構成

「スイッチ間の帯域が足りない」「片方のリンクが落ちたら通信止まる」——そんなときに最初に検討するのがEtherChannel。物理リンクを束ねて1本の論理リンクとして扱う技術で、Cisco Catalyst系なら標準で使える。

ただ、いざ設定しようとすると「LACPとPAgPって何が違うの?」「mode activeとpassive、両側どっちにすればいい?」「片側Static、片側LACPで繋がらないんだけど…」みたいな疑問が次々出てくる。で、ここで詰まる人が多い。

この記事では、現場でCatalyst 9300とCatalyst 2960Xを束ねた経験ベースで、EtherChannelの3モードの違い、設定手順、トラブルシュート、そしてやらかしがちなハマりどころまで一通り書いていく。コピペで動く実機ベースのコマンド例付き。

EtherChannelとは何か?基本のキを30秒で

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 の違い完全比較

LACP / PAgP / Static の違い完全比較

3つの方式は同じ「リンクを束ねる」目的でも、ネゴシエーションの有無や対応ベンダーが違う。表で並べるとわかりやすい。

項目LACPPAgPStatic (mode on)
規格IEEE 802.3ad(業界標準)Cisco独自なし(強制束ね)
ネゴシエーションありありなし
設定モードactive / passivedesirable / autoon
推奨モード組合せactive ⇔ activedesirable ⇔ desirableon ⇔ on
異ベンダー接続○ 可能× Cisco同士のみ△ 設定一致なら可
推奨用途迷ったらコレレガシー環境非推奨(基本使わない)

図1: 3方式の運用しやすさ・安全性比較

LACP(推奨)

95%

PAgP

60%

Static (on)

30%

で、結論を先に言うと 迷ったらLACPのactive ⇔ active。理由はシンプルで、業界標準だしネゴシエーションで設定不一致を検知してくれるから。Staticは手動で全部合わせる必要があって、片側落とすと検知できずブラックホール化することもある。正直あまりおすすめしない。

⚠ よくあるミス

LACPを passive ⇔ passive で組むのは禁忌。両方とも「相手から声かけてくれ」状態で、永遠にネゴシエーションが始まらない。最低でも片側はactiveにする必要がある。同様にPAgPの auto ⇔ auto もNG。

EtherChannel設定の事前準備チェックリスト

EtherChannel設定の事前準備チェックリスト

EtherChannelは「束ねるポート同士の設定が完全一致」してないと、論理ポートに参加してくれない。事前にこれをチェック。

確認項目必要な状態確認コマンド
速度・Duplex束ねる全ポートで完全一致(例:1000/full)show interface status
スイッチポートモードaccessかtrunkかを統一show running-config interface
VLAN設定access vlan / allowed vlan が一致show interfaces switchport
Native VLANtrunk時は両端で同じVLAN IDshow interfaces trunk
STP設定portfast/bpduguardの有無を統一show spanning-tree interface
束ねる本数最大8本(Active)。9本目以降はHot-Standby

ぶっちゃけ、ここで一番ハマるのは「片側がaccessで、もう片側がtrunkになってた」パターン。設計書通りにやってるつもりでも、別の人が触った後だとよくある。show running-config interface で必ず両端を比較する癖をつけたほうがいい。

LACP設定手順(Catalyst 9300での実機例)

LACP設定手順(Catalyst 9300での実機例)

想定構成は、Catalyst 9300(SW1)のGi1/0/1とGi1/0/2を束ねて、Catalyst 9300(SW2)のGi1/0/1とGi1/0/2に接続。Trunkポートとして両側を組む。

Step 1: SW1側でPort-channelインターフェースを作る
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になるけど、レビュー時のわかりやすさのため明示するのが好み。

Step 2: SW2側で対向設定
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
Step 3: Port-channelインターフェースに追加設定(必要に応じて)
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等)の使い分けに最初は戸惑う。

動作確認コマンドと出力の読み方

動作確認コマンドと出力の読み方

show etherchannel summary(最初に見るやつ)
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
SDL2だけど全ポートDownケーブル/モジュールを確認
(I)Stand-alone。EtherChannelに参加できてない対向のmode設定を確認
(s)Suspended。設定不一致でブロックされてるshow interfaces で速度/VLAN差異を調査
(H)Hot-Standby。9本目以降の控え設計通りなら正常
show lacp neighbor(ネゴシエーション状況)
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)

1本(束ねず)

940Mbps

2本(LACP)

1.85Gbps

4本(LACP)

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が上がらないときのトラブルシュート

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

まとめ:迷ったら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 コマンドで切り替え。