Arista EOS の STP 設定|MSTP と Cisco との相互接続のポイント

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

はじめに

Arista EOS で STP を設定しようとすると、既定モードや CLI が Cisco と似て非なるため、どこを確認すべきか迷うことがあります。さらに、運用では Stp エージェントが出すログの読み解きも欠かせません。本記事は、Arista EOS の STP を、モードと既定の挙動から、基本設定・エッジ/ガード・ログ確認・Cisco との相互接続まで通して解説します。STP の仕組み自体は、関連記事『スパニングツリー(STP)とは|仕組みと RSTP・MSTP の違い』も参照してください。

この記事でわかること
  • Arista EOS が対応する STP モードと既定の挙動
  • モード切替と MST リージョンの基本設定
  • エッジポートと各ガードの設定
  • 設定とログの確認、Cisco との相互接続の注意点

要点を先に示すと、Arista EOS の既定モードは MSTP です。MST リージョン(名前・リビジョン・VLAN-instance マッピング)の考え方は Cisco や FortiSwitch と共通で、Cisco の MST と相互接続するには、この 3 要素を一致させることが前提になります。CLI は業界標準に近い体系ですが、細部に差異があるため、コマンドは Arista 公式ドキュメントで確認しながら進めます。

Arista EOS の STP モードと既定の挙動

Arista EOS は、4 種類の STP モードに対応します。spanning-tree modeコマンドで、mstp(既定)・rapid-pvstrstpnoneを切り替えます。

参考: Arista — EOS User Manual: Spanning Tree Protocol
“By default, Arista switches use MSTP.”
(Arista のスイッチは既定で MSTP を使用する)
https://www.arista.com/en/um-eos/eos-spanning-tree-protocol

各モードの位置づけは次のとおりです。

MSTP: 既定モード。複数の VLAN を少数のインスタンスに集約し、RSTP と互換性があります。1 つのリージョンあたり最大 65 個のスパニングツリーインスタンスに対応します。

Rapid-PVST: RSTP インスタンスをベースにした PVST の変種で、VLAN ごとにスパニングツリーを持ちます。VLAN 単位で有効・無効を切り替えられます。

RSTP: MSTP のインスタンス 0(MST0)として動作します。show spanning-treeでは MST0 として表示され、MSTP のインスタンス 0 への設定がそのまま RSTP にも適用されます。

none: STP を無効にします。

MST リージョンは、名前・リビジョン番号・VLAN-to-instance マッピングが一致するスイッチの集まりです。この 3 要素を相互接続する全スイッチで一致させる必要がある点は、Cisco の MST と共通です。リージョン設計の詳細は、関連記事『Cisco MST の設定とリージョン設計|インスタンスと負荷分散のポイント』を参照してください。

なお、Arista の RSTP/MSTP は、STP(802.1D)の機器とも同じネットワーク内で共存できます。STP/RSTP/MSTP/Rapid-PVST が混在するネットワークでは、全体を通る単一の経路として CST(Common Spanning Tree)が計算されます。

STP の基本設定(モード・MST リージョン)

既定が MSTP であっても、リージョンとインスタンスは明示的に設計することが推奨されます。設定は、モードの指定、リージョンの定義、インスタンスのルート設計という流れになります。

モードとリージョンの設定

まず spanning-tree mode mstpでモードを指定し(既定でも明示しておくと構成が明確になります)、spanning-tree mst configurationでサブモードに入って、リージョンの 3 要素を設定します。

switch(config)# spanning-tree mode mstp
switch(config)# spanning-tree mst configuration
switch(config-mst)# name REGION1
switch(config-mst)# revision 1
switch(config-mst)# instance 1 vlan 10,20,30
switch(config-mst)# instance 2 vlan 40,50,60
switch(config-mst)# exit

設定後は show spanning-tree mst configurationで、名前・リビジョン・各インスタンスへの VLAN 割り当てを確認します。明示的に割り当てていない VLAN は、すべてインスタンス 0(IST)に入ります。

switch# show spanning-tree mst configuration
Name      [REGION1]
Revision  1
Instance  Vlans mapped
--------  ---------------------------------------
0         1-9,11-19,21-29,31-39,41-49,51-60,61-4094
1         10,20,30
2         40,50,60

この 3 要素(名前・リビジョン・VLAN-instance マッピング)は、同じリージョンに属するすべてのスイッチで一致させる必要があります(参照: Arista — EOS User Manual: Spanning Tree Protocol — https://www.arista.com/en/um-eos/eos-spanning-tree-protocol

インスタンスのルートとプライオリティ

インスタンスごとに異なるスイッチをルートにすると、VLAN グループごとに経路を分けた負荷分散ができます。ルートにするスイッチでは、対象インスタンスのブリッジプライオリティを下げます。

! インスタンス 1 のルートにするためプライオリティを下げる
switch(config)# spanning-tree mst 1 priority 4096

! インスタンス 2 は別スイッチで下げる
switch(config)# spanning-tree mst 2 priority 4096

プライオリティの既定値は 32768 で、4096 刻み(0〜61440)で指定し、値が小さいほどルートになりやすくなります。負荷分散が機能するには、VLAN-instance マッピングが全スイッチで一致していることが前提です。マッピングが揃っていないと、意図した経路分割にならず、トラフィックが偏ることがあります。この前提は MST 共通のため、設計の詳細は前掲の MST 記事もあわせて参照してください。

エッジポートとガード(PortFast・BPDU Guard・Root Guard・Loop Guard)

Arista EOS でも、エッジポートの指定と各ガードでループや不正接続を防ぎます。CLI は Cisco に近い体系ですが、グローバル設定の語が一部異なります。

PortFast(エッジポート)

端末を接続するポートは spanning-tree portfastでエッジポートに指定し、Learning を経ずに即座に Forwarding にします。スイッチ間のリンクには使いません。

switch(config)# interface Ethernet5
switch(config-if-Et5)# spanning-tree portfast

BPDU Guard

BPDU Guard は、ポートが BPDU を受信したときにそのポートを disable(errdisable)にする機能です。インターフェース単位で設定した場合は、portfast の状態に関わらず、BPDU を受信するとポートが disable になります。

グローバルで全 portfast ポートに適用するには spanning-tree edge-port bpduguard default、個別インターフェースに適用するには spanning-tree bpduguard enableを使います。インターフェースの設定はグローバルの既定設定に優先します(参照: Arista — EOS User Manual: Spanning Tree Protocol — https://www.arista.com/en/um-eos/eos-spanning-tree-protocol

! 全 portfast ポートで BPDU Guard を既定有効化
switch(config)# spanning-tree edge-port bpduguard default

! 個別インターフェースで有効化
switch(config)# interface Ethernet5
switch(config-if-Et5)# spanning-tree bpduguard enable

disable になったポートは、Cisco と同様に errdisable として扱われ、errdisable recovery cause bpduguarderrdisable recovery interval <秒>で自動復旧を設定できます。状態は show errdisable recoveryで確認します。

! BPDU Guard 起因の自動復旧を有効化(任意)
switch(config)# errdisable recovery cause bpduguard
switch(config)# errdisable recovery interval 300

errdisable と BPDU Guard の挙動や復旧の考え方は Cisco と共通点が多いため、関連記事『Cisco BPDU Guard で err-disable になる原因|復旧の手順』もあわせて参照してください。

Root Guard

Root Guard は、指定したポートがルートポートにならないように保護する機能です。ルートにすべきでない方向のポートに設定します。

switch(config)# interface Ethernet10
switch(config-if-Et10)# spanning-tree guard root

Loop Guard

Loop Guard は、非指定ポートで BPDU の受信が途絶えたときに、単方向リンク障害による意図しないループを防ぐ機能です。グローバルでは spanning-tree loopguard default、個別インターフェースでは spanning-tree guard loopで設定します。

! グローバルで既定有効化
switch(config)# spanning-tree loopguard default

! 個別インターフェースで有効化
switch(config)# interface Ethernet11
switch(config-if-Et11)# spanning-tree guard loop

Loop Guard は portfast 有効ポートには設定せず、point-to-point リンクで使います。無効化されたスパニングツリーインスタンスには効果がありません。なお、特定ポートで BPDU の送受信を止める BPDU Filter(spanning-tree bpdufilter)も利用できますが、実質的に STP を無効化することになるため、用途を限定して扱います。

設定とログの確認

設定後の確認は、STP の状態表示とログの両面で行います。show spanning-treeで全体の Root/Bridge ID とポートの Role/State を、show spanning-tree mstshow spanning-tree mst configurationでインスタンスとリージョンを確認します。

Arista の特徴は、STP の動作が Stp エージェントのログとして記録される点です。ログは show loggingで確認でき、形式は次のとおりです。エージェント名 Stp:が小文字始まりで付くのが Arista の目印になります。

Apr  3 05:27:02 sw1 Stp: %SPANTREE-6-INTERFACE_STATE: Interface Ethernet9 instance MST0 moving from learning to forwarding
Nov 29 02:07:34 sw1 Stp: %SPANTREE-6-STABLE_CHANGE: Stp state is now stable
sw1 Stp: %SPANTREE-4-INTERFACE_SELF_LOOPED: Interface Ethernet3 received its own bpdu: blocking interface

それぞれの読み方は次のようになります。

INTERFACE_STATE: ポートがインスタンス(MST0 など)で状態遷移したことを示します。通常の収束でも出力されます。

STABLE_CHANGE: STP が安定状態になったことの通知です。

INTERFACE_SELF_LOOPED(重大度 4): 自分が送出した BPDU を受信したことを示し、ループや配線の誤りの兆候です。該当ポートはブロックされるため、調査の対象になります。

これらのログは、エージェント単位では /var/log/agentsに、syslog としては /var/log/messagesに記録されます。

参考: Arista — QuickStart: Managing 7050 Series
“Individual agent logs are available in ‘/var/log/agents’.”
(個別のエージェントログは /var/log/agents に格納される)
https://www.arista.com/docs/Manuals/QuickStart-Managing7050Series.pdf

Cisco・他ベンダーとの相互接続の注意点

MST リージョンの 3 要素を一致させる

Cisco・FortiSwitch・Arista はいずれも MSTP に対応しますが、相互接続して 1 つのリージョンとして扱うには、リージョン名・リビジョン番号・VLAN-instance マッピングを一致させる必要があります。1 つでも食い違うと別リージョンの境界になります。リージョン設計は『Cisco MST の設定とリージョン設計|インスタンスと負荷分散のポイント』、Cisco 側の設定全般は『Cisco Catalyst の STP 設定|モード選択とルートブリッジのポイント』、FortiSwitch 側は『FortiSwitch の STP 設定|FortiLink 配下の挙動とループ対策のポイント』を参照してください。

Rapid-PVST/PVST+ との境界

Arista の Rapid-PVST と、MSTP/PVST+ が混在する境界では、境界ポートの扱いとルートの位置に注意します。PVST 領域のルートは MSTP 領域側に向ける設計が推奨され、CIST に対して上位の PVST BPDU を受け取らない構成にします。境界での VLAN ごとのコスト調整によって、複数の境界ポートで負荷分散することもできます。

ネイティブ VLAN の不一致

トランクのネイティブ VLAN が両端で食い違うと、STP の不整合や予期しないブロックの原因になります。Cisco と接続する場合、Cisco 側では PVID 不整合として検知されます。詳細は関連記事『Cisco PVID Inconsistent の原因|ネイティブ VLAN 不一致の対処』を参照してください。

まとめ

Arista EOS の STP は既定が MSTP で、CLI は Cisco に近い体系を持ちます。設定とあわせて Stp エージェントのログを読み解けるようにしておくと、運用での切り分けが進めやすくなります。本記事では、モードと既定から、基本設定・ループ対策・ログ確認・相互接続までを整理しました。

  • Arista EOS の STP 既定は MSTP で、モードは mstp/rapid-pvst/rstp/none
  • MST リージョンは名前・リビジョン・VLAN-instance マッピングの一致で構成
  • インスタンスのプライオリティを下げてルート設計と負荷分散を行う
  • エッジは portfast、保護は BPDU Guard・Root Guard・Loop Guard
  • BPDU Guard は errdisable で、errdisable recovery により自動復旧できる
  • ログは Stp エージェントの %SPANTREE 系で状態遷移やループを確認
  • Cisco や FortiSwitch との MST 相互接続はリージョンの 3 要素を一致させる

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

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

この記事を書いた人

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

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

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

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

目次