# L2スイッチング / スパニングツリープロトコル

スパニングツリープロトコルは、スイッチ（ブリッジ）ネットワークにおいて、冗長経路（複数経路）の設定を可能とし、ネットワークの耐障害性を高めるプロトコルです。
ネットワーク上に複数の経路を設定し、障害発生時に迂回路を使えるようにすることは自然な発想ですが、Ethernetではループ状の経路がブロードキャストストームによるネットワーク停止を招くため、そのままでは複数経路の設定自体ができません。
スパニングツリープロトコルを使用すると、ブリッジ同士がメッセージを交換し合うことにより、すべてのブリッジを含むツリー状の論理経路（スパニングツリー）が自律的に構築されます。物理的にループが存在しても、ツリーを構成しないポートは自動的にブロックされるため、パケットがループすることはありません。
また、障害が発生して一部の経路が不通になったときは、ツリーの再構築が行われ、自動的に新しい経路に切り替わる冗長機能も備えています。
Note

同一ポート上でスパニングツリープロトコルとMACベース認証は併用できません。

Note

スパニングツリープロトコルはLAN側スイッチポート（LANポート）でのみ使用可能です。

Note

本マニュアルでは「LANポート」のことを、スイッチ製品にならって「スイッチポート」と表記しています。「LANポート」と「スイッチポート」は同じ意味ですので、適宜読み替えてください。また同様に、「スイッチ」は「LAN側スイッチ」のことを表しています。

## 動作モード（バージョン）

スパニングツリープロトコルにはいくつかの種類がありますが、本製品では以下のバージョンをサポートしています。

表 1：スパニングツリープロトコルの種類
名称 | 略称 | 対応規格 | バージョン番号
Spanning Tree Protocol | STP | IEEE 802.1D | 0
Rapid Spanning Tree Protocol | RSTP | IEEE 802.1w | 2

本製品の初期状態ではRSTPモードに設定されています。RSTPは、オリジナルのSTPを改良してツリーの収束時間を短くしたものです。
これら複数のバージョンを同時に有効化することはできませんが、上位バージョン（バージョン番号の大きいもの）には下位バージョンとの互換性があるため、古いバージョンの装置と相互運用することは可能です。
スパニングツリープロトコルの動作モード（バージョン）を変更するには、spanning-tree modeコマンドを使います。

- 動作モードをSTPに変更するには、次のようにします。

      awplus(config)# spanning-tree mode stp

- 動作モードをRSTPに変更するには、次のようにします。

      awplus(config)# spanning-tree mode rstp

なお、動作モードを変更した直後は、該当モードのスパニングツリープロトコルが有効化された状態になります。また、スパニングツリープロトコル関連の設定は初期状態に戻ります。

## 動作の無効化と有効化

本製品の初期状態ではRSTPの動作が有効化されています。
また、動作モードを変更した直後も、該当モードのスパニングツリープロトコルが有効化された状態になります。
スパニングツリープロトコルの動作を無効にするには、spanning-tree enableコマンドをno形式で実行します。

- 動作モードがSTPのときは、次のようにキーワードstpを指定します。

      awplus(config)# no spanning-tree stp enable

- 動作モードがRSTPのときは、次のようにキーワードrstpを指定します。

      awplus(config)# no spanning-tree rstp enable

スパニングツリープロトコルの動作を再度有効化するには、spanning-tree enableコマンドを通常形式で実行します。

- 動作モードがSTPのときは、次のようにキーワードstpを指定します。

      awplus(config)# spanning-tree stp enable

- 動作モードがRSTPのときは、次のようにキーワードrstpを指定します。

      awplus(config)# spanning-tree rstp enable

## STP/RSTP

本製品の初期状態では、スパニングツリープロトコルの動作モード（バージョン）はRSTPに設定されており、すべてのスイッチポートでRSTPの動作が有効化されています。
STP/RSTPは特別な設定をしなくても動作しますが、実際の運用にあたっては、少なくともルートブリッジが適切な位置に配置されるよう各装置のブリッジプライオリティーを調整する必要があります。STP/RSTP利用時のスパニングツリードメインは1つになります。
以下では、STP/RSTPにおける基本的な設定項目について解説します。

### 基本設定

任意のスイッチをルートブリッジにするには、各スイッチのブリッジプライオリティーを調整して、ルートブリッジのプライオリティー値がもっとも小さく（優先度が高く）なるよう設定します。ブリッジのプライオリティーの設定は、グローバルコンフィグモードのspanning-tree priorityコマンドで行います。

    awplus(config)# spanning-tree priority 8192

同コマンドで設定できる値の範囲は0～61440ですが、実際に使用される値は4096の倍数に丸められます（指定値が4096の倍数でない場合、指定値よりも小さい直近の倍数が使われます）。初期値は32768です。
意図しないルートブリッジの変更を防ぐには、代表ポートとなるポートでルートガード機能を有効化します。ルートガード機能が有効なポートで現行のBPDUよりも優位な（ブリッジプライオリティーの小さい）BPDUを受信した場合、該当ポートはリスニング状態（STPモード時）、または、ディスカーディング状態（RSTPモード時）に移行します。これにより、該当ポートに接続されたブリッジがルートブリッジになることを防げます。

    awplus(config)# interface port1.0.3-1.0.4
    awplus(config-if)# spanning-tree guard root

（RSTPのみ）他のブリッジが存在しないPCなどの端末接続用ポートは、エッジポートに設定しておきます。エッジポートではフォワーディング状態への高速遷移が有効になるため、端末接続後すぐに通信が可能になります。また、エッジポートでは、ステータスが変化してもトポロジー変更通知が発生しないため、端末接続用ポートをエッジポートに設定しておけば、ネットワーク全体で無駄な処理を減らすことができます。エッジポートの設定は、インターフェースモードのspanning-tree edgeportコマンド、または、spanning-tree portfastコマンドで行います（どちらのコマンドを実行しても同じです）。

    awplus(config)# interface port1.0.1-1.0.8
    awplus(config-if)# spanning-tree edgeport

（RSTPのみ）エッジポートは他のブリッジが存在しないことを前提にしたポートですが、万が一ブリッジが接続されるとBPDUを受信することになります。この場合、エッジポートは通常ポートに移行します。
万が一エッジポートに接続されたブリッジのブリッジプライオリティーが最小だった場合、ルートブリッジが変更になり、スパニングツリーの再構成が発生します。これを防ぐには、BPDUガード機能を有効にして、BPDUを受信した場合にエッジポートを無効化するよう設定します。

    awplus(config)# spanning-tree portfast bpdu-guard

また、BPDUガード機能はスイッチポートごとに設定することもできます。スイッチポートごとの設定は、全体設定よりも優先されます。

    awplus(config)# interface port1.0.8
    awplus(config-if)# spanning-tree portfast bpdu-guard enable

Note

BPDUガードはエッジポート（spanning-tree edgeport/spanning-tree portfastコマンド）の動作を調整する機能です。非エッジポートではBPDUガードの設定は意味を持ちません（設定しても特別な動作を行いません）。

（RSTPのみ）BPDUガード機能によって無効化されたエッジポートは、管理者が手動で有効化しないかぎり無効状態のままとなります。無効化されたエッジポートを再度有効化するには、インターフェースモードのshutdownコマンドをno形式で実行します。

    awplus(config)# interface port1.0.8
    awplus(config-if)# no shutdown

（RSTPのみ）BPDUガード機能によって無効化されたエッジポートを、一定時間後に自動的に再有効化することもできます。これには、spanning-tree errdisable-timeout enableコマンドを使います。

    awplus(config)# spanning-tree errdisable-timeout enable

また、再有効化するまでの時間はspanning-tree errdisable-timeout intervalコマンドで変更できます。初期設定では300秒です。

    awplus(config)# spanning-tree errdisable-timeout interval 10

（RSTPのみ）エッジポートからBPDUを送信したくない場合は、BPDUフィルター機能を有効にします。

    awplus(config)# spanning-tree portfast bpdu-filter

また、BPDUフィルター機能はスイッチポートごとに設定することもできます。スイッチポートごとの設定は、全体設定よりも優先されます。

    awplus(config)# interface port1.0.8
    awplus(config-if)# spanning-tree portfast bpdu-filter enable

Note

BPDUフィルターはエッジポート（spanning-tree edgeport/spanning-tree portfastコマンド）の動作を調整する機能です。非エッジポートではBPDUフィルターの設定は意味を持ちません（設定しても特別な動作を行いません）。

STP/RSTPの全体設定を変更するには、次に示すグローバルコンフィグモードのコマンドを使います。

- ブリッジプライオリティーの設定：spanning-tree priorityコマンド（グローバルコンフィグモード）
- フォワードディレイタイムの設定：spanning-tree forward-timeコマンド
- ハロータイムの設定：spanning-tree hello-timeコマンド
- 最大エージタイムの設定：spanning-tree max-ageコマンド

STP/RSTPのスイッチポート固有設定を変更するには、次に示すインターフェースモードのコマンドを使います。

- パスコストの設定：spanning-tree path-costコマンド
- ポートプライオリティーの設定：spanning-tree priorityコマンド（インターフェースモード）
- リンクタイプの設定（RSTPのみ）：spanning-tree link-typeコマンド
- エッジポート自動検出の有効・無効（RSTPのみ）：spanning-tree autoedgeコマンド
- エッジポートの手動設定（RSTPのみ）：spanning-tree edgeportコマンド、または、spanning-tree portfastコマンド
- BPDUバージョンの指定（RSTPのみ）：spanning-tree force-versionコマンド

スパニングツリープロトコル（STP/RSTP）の設定を確認するには、show spanning-treeコマンドを使います。同コマンドでは、スパニングツリープロトコルの全体的な情報に続いて、全スイッチポートの情報も表示されるので、CLIのモディファイアを利用して情報を絞り込むと便利です。たとえば、スパニングツリープロトコルの全体的な情報だけを見るには次のようにします。

    awplus> show spanning-tree | include % 1:
    % 1: Bridge up - Spanning Tree Enabled
    % 1: Root Path Cost 200000 - Root Port 5001 -  Bridge Priority 61440
    % 1: Forward Delay 15 - Hello Time 2 - Max Age 20
    % 1: Root Id 00000000f4272c74
    % 1: Bridge Id f0000000cd240367
    % 1: 2 topology changes - last topology change Mon Feb 20 06:05:37 2012
    % 1: portfast bpdu-filter disabled
    % 1: portfast bpdu-guard disabled
    % 1: portfast errdisable timeout disabled
    % 1: portfast errdisable timeout interval 300 sec

また、ポートの状態だけをすばやく確認したいときは、次のようにすると便利です。

    awplus> show spanning-tree interface port1.0.1-1.0.2,port1.0.8 | include Role
    %   port1.0.1: Port 5001 - Id 8389 - Role Rootport - State Forwarding
    %   port1.0.2: Port 5002 - Id 838a - Role Alternate - State Discarding
    %   port1.0.8: Port 5008 - Id 8390 - Role Designated - State Forwarding

Note

モディファイアについては、「運用・管理」の「コマンドラインインターフェース（CLI）」をご覧ください。

Note

前記のモディファイア使用例はあくまでも一例です。ファームウェアのバージョンによっては各コマンドの出力形式が異なり、結果として前記の指定ではうまく絞り込みが行われない可能性もあります。その場合は、各コマンドの出力を検討して、適切な文字列を指定するようにしてください。