EtherChannel が STP でブロックされる原因|Misconfig Guard の対処

  • URLをコピーしました!
目次

はじめに

EtherChannel(ポートチャネル)を構成した直後、あるいは既存のチャネルで、ポートが突然 err-disable になり通信できなくなることがあります。このとき、ログには次のような channel-misconfig のメッセージが出力されます。

%PM-4-ERR_DISABLE: channel-misconfig error detected on Gi1/0/1, putting Gi1/0/1 in err-disable state

本記事は、EtherChannel が STP の保護機能でブロックや err-disable になる原因と対処を解説します。主因は対向との EtherChannel 設定不一致で、EtherChannel Misconfiguration Guard が、片側だけがチャネル化しているといった不整合を STP の BPDU で検知し、ループ防止のためにポートを落とします。STP 全体の位置づけは、関連記事『スパニングツリー(STP)とは|仕組みと RSTP・MSTP の違い』も参照してください。

この記事でわかること
  • EtherChannel と STP がどう関係し、なぜ err-disable になるのか
  • Misconfig Guard による err-disable と、メンバー不一致による suspended の違い
  • 原因を切り分ける確認コマンド
  • 両端のチャネル設定を揃える対処と復旧の手順

要点を先に示すと、EtherChannel の err-disable は、多くが対向とのチャネル設定不一致に起因します。正しく組まれた EtherChannel は STP から 1 つの論理ポートとして扱われますが、片側だけがチャネル化していると STP の整合がとれず、Misconfig Guard がポートを遮断します。対処は両端のチャネル設定(モード・メンバー・VLAN)を揃えることです。

EtherChannel と STP の関係

正しく構成された EtherChannel は、STP からは 1 本の論理ポートとして扱われます。このため、複数の物理リンクを束ねていても、STP の BPDU はチャネル全体で 1 つだけ送受信されます。

ところが、片側だけがチャネルとして束ねられ、対向が個別ポートのままだと、対向は各物理リンクから別々に BPDU を送ります。束ねた側は、1 本の論理ポートのはずの場所で複数の BPDU を受信することになり、これを設定不整合と判断します。

EtherChannel Misconfiguration Guard は、この「束ねたリンクで複数の BPDU を受信する」状態を検知し、ループを防ぐためにポートを err-disable にする機能です。PVST+/Rapid-PVST+/MSTP で利用でき、多くの Catalyst では既定で有効です。動作状況は show spanning-tree summaryEtherChannel misconfig guard is enabled で確認できます(参照: Cisco — Recover Errdisable Port State on Cisco IOS Platforms — https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/69980-errdisable-recovery.html

主な原因

EtherChannel に関連するブロックや遮断は、原因によって挙動が異なります。大きく 3 つに整理できます。

対向との EtherChannel 不整合(Misconfig Guard)

片側だけがチャネル化している、束ねるメンバーの対応関係が左右で食い違っている、といった対向との不整合です。STP 由来の保護で、channel-misconfig のログとともにポートが err-disable になります。本記事の中心となる原因です。

メンバーがバンドルされない設定不一致

これは対向ではなく、自スイッチ内のメンバー間で設定が一致しないために、メンバーがチャネルに参加できず suspended(保留)になるケースです。速度・デュプレックス・トランクのカプセル化・許可 VLAN・ネイティブ VLAN などが対象です。

%EC-5-CANNOT_BUNDLE2: Et0/0 is not compatible with Et0/1 and will be suspended (duplex of Et0/0 is half, Et0/1 is full)
%EC-5-CANNOT_BUNDLE2: Et0/1 is not compatible with Po1 and will be suspended (native vlan of Et0/1 is 2, Po1 id 1)

このメンバー不一致は STP の Misconfig Guard とは別の仕組みで、設定を一致させれば、shutdownno shutdownなしで自動的にバンドルへ復帰します。Misconfig Guard の err-disable(手動または errdisable recovery が必要)とは復旧方法が異なる点に注意します。

channel-group モードの不一致

両端の channel-group モード(on、LACP の activepassive、PAgP の desirableauto)の組み合わせが不適切だと、チャネルが形成されません。特に片側が on、対向が LACP のような不一致では、片側だけがチャネル化した状態になり、結果として Misconfig Guard を誘発することがあります。

確認コマンド

ブロックや err-disable に気づいたら、まずチャネルとメンバーの状態、err-disable の理由、そして Misconfig Guard の有効状況を確認します。

show etherchannel summaryで、ポートチャネルと各メンバーの状態をフラグで確認します。正常時はポートチャネルが (SU)(Layer2・in use)、メンバーが (P)(bundled)になります。

Switch# 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
        u - unsuitable for bundling

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------
1      Po1(SU)       LACP        Gi1/0/1(P)   Gi1/0/2(P)

問題があるときは、メンバーに (s)(suspended)や (I)(stand-alone)、ポートチャネルに (SD)(down)といったフラグが現れます。例えばメンバーが suspended であれば、設定不一致でバンドルできていないことを示します。

1      Po1(SU)       LACP        Gi1/0/1(P)   Gi1/0/2(s)

続いて、err-disable の理由とガードの状態を確認します。

  • show interfaces status err-disabled: Reason 列が channel-misconfig であれば、Misconfig Guard が原因です。
  • show spanning-tree summary: EtherChannel misconfig guard is enabled でガードの有効状況を確認します。
  • show errdisable recovery: channel-misconfig の自動復旧が有効かどうかを確認します。

対処

原因に応じて、両端の設定を揃えたうえで復旧します。

両端のチャネル設定を揃える

EtherChannel は、両端のモード・メンバー・VLAN(許可 VLAN/ネイティブ VLAN)・速度・デュプレックスが整合している必要があります。特にモードは、両端で成立する組み合わせにします。on は両端 on、LACP は activeactive または activepassive、PAgP は desirabledesirable または desirableauto が成立する組み合わせです。passivepassiveautoauto ではチャネルは形成されません。

! 両端を同じモードでそろえる例(LACP active)
Switch_A(config)# interface range GigabitEthernet1/0/1 - 2
Switch_A(config-if-range)# channel-group 1 mode active

Switch_B(config)# interface range GigabitEthernet0/1 - 2
Switch_B(config-if-range)# channel-group 1 mode active

メンバー間の設定不一致で suspended になっている場合は、速度・デュプレックス・VLAN などを他のメンバーに合わせれば、shutdownno shutdownなしで自動的にバンドルへ復帰します。

err-disable からの復旧

Misconfig Guard によって err-disable になったポートは、原因を解消したうえで復旧します。

参考: Cisco — Recover Errdisable Port State on Cisco IOS Platforms
“first identify and correct the root problem, and then reenable the port.”
(まず根本原因を特定して修正し、その後にポートを再有効化する)
https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/69980-errdisable-recovery.html

復旧は、手動(shutdownno shutdown)か、errdisable recovery cause channel-misconfigによる自動復旧を設定します。

! channel-misconfig 起因の自動復旧を有効化(任意)
Switch(config)# errdisable recovery cause channel-misconfig

err-disable の確認コマンドや errdisable recovery の間隔設定の詳細は、関連記事『Cisco BPDU Guard で err-disable になる原因|復旧の手順』も参照してください。原因が残ったまま復旧しても、再び err-disable になる点は共通です。

よくある誤解と運用上の注意

EtherChannel と STP のトラブルで踏みやすい誤解を整理します。

ガードを無効化しても根本解決にはならない

channel-misconfig のログを止めるために、no spanning-tree etherchannel guard misconfigno errdisable detect cause channel-misconfigでガードや検知を無効化する対処を見かけることがあります。これはログや err-disable を止めるだけで、設定不整合という根本原因は残ります。むしろ、片側だけがチャネル化した状態を放置することになり、ループの危険を高めます。正しい対処は、両端のチャネル設定を一致させることです。

channel-group の番号は両端で一致させる必要はない

ポートチャネルの番号(Po1 など)は各スイッチ内でローカルに有効な値で、対向と同じ番号である必要はありません。重要なのは、各スイッチ内でメンバーが正しく同じ channel-group に属していること、そして両端のモードが成立する組み合わせであることです。番号合わせに気を取られて、モードやメンバー構成の不一致を見落とさないようにします。

ポートチャネル上の PVID 不整合は別の原因

ポートチャネルで「received BPDU with inconsistent peer vlan」のようなログが出る場合は、Misconfig Guard ではなく、両端のネイティブ VLAN 不一致(PVID 不整合)が原因です。これはチャネル設定の問題ではなく、トランクのネイティブ VLAN の問題です。詳細は関連記事『Cisco PVID Inconsistent の原因|ネイティブ VLAN 不一致の対処』を参照してください。

QoS の service-policy 警告は STP とは無関係

「service policy … will cause inconsistency … in ether channel」のような警告は、EtherChannel メンバー間の QoS ポリシー整合に関するもので、STP の Misconfig Guard とは別の話です。STP のブロックや err-disable とは切り分けて扱います。

まとめ

EtherChannel の err-disable やブロックは、多くが対向とのチャネル設定不一致に起因します。正しく組まれたチャネルを STP が 1 つの論理ポートとして扱うことを踏まえると、Misconfig Guard が何を検知しているかを理解しやすくなります。本記事では、原因の切り分けから対処までを整理しました。

  • EtherChannel の err-disable は多くが対向とのチャネル設定不一致が原因
  • 正しく組まれたチャネルは STP から 1 論理ポートとして扱われ BPDU は 1 つ
  • 片側だけのチャネル化を Misconfig Guard が複数 BPDU の受信で検知し遮断
  • メンバー不一致の suspended は設定一致で自動復帰し、err-disable とは異なる
  • 確認は show etherchannel summary のフラグと err-disabled の Reason
  • 対処は両端のモード・メンバー・VLAN を揃え、手動か自動で復旧
  • ガードの無効化は根本解決にならず、設定の一致が本筋

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次