【STP基礎】ポート識別子でループを防ぐ!優先度とインターフェースIDの関係を詳解

スパニングツリー(STP)では、ネットワーク内のループを防ぐために、各スイッチが自動で使う経路を選びます。その選び方の最後の決め手になるのが「ポート識別子(ポート ID)」です。

ポート ID は、ルートブリッジまでのコストが同じ経路が複数あるときに、どのポートをルートポートにし、どのポートをブロッキングにするかを決めるのに使われます。この記事では、ポート ID の仕組みと、ポート優先度を変えて経路を選ばせる方法を、例を使って説明します。

この記事でわかること
  1. ポート ID の構成(ポート優先度とポート番号)
  2. コストが同じとき、どのポートがルートポートになるか
  3. ルートポートを変えたいときに、ポート優先度をどのスイッチで設定するか

ポート ID とは

STP は、ネットワーク内のループを防ぎ、冗長なリンクを管理するためのプロトコルです。スイッチの各ポートには、ポート優先度とポート番号(インターフェース ID)を組み合わせた「ポート ID」があり、STP がリンクを選ぶときの判断材料の1つになります。

ポート ID の構成

ポート優先度 既定 128(0〜240、16 刻み) ポート番号 インターフェースごとに決まる番号 上位 下位 ポート ID は、ポート優先度を先に、ポート番号を後に比べる値(小さいほど優先) 例)優先度 128・ポート番号 1 → 128.1  優先度 128・ポート番号 2 → 128.2 優先度が同じなら、ポート番号の小さいほうが優先される
図1 ポート ID の構成
要素内容
ポート優先度既定値は 128。0〜240 の範囲で、16 の倍数(0、16、32、…、240)で設定できる。値が小さいほど優先される
ポート番号スイッチのインターフェースごとに決まる番号。値が小さいほど優先される

ポート ID は、ポート優先度を先に比べ、同じならポート番号を比べる値です。Cisco のスイッチでは、show spanning-tree の Prio.Nbr の列に「128.1」のように表示されます。

具体例:ルートポートの選択

次のようなケースを考えます。

  • SW2 とルートブリッジ(SW1)の間に 2 本のリンクがある
  • SW2 から見ると、2 本のリンクのルートブリッジまでのコストが同じ
SW1(ルートブリッジ) SW2 1Gbps(コスト 4) 1Gbps(コスト 4) SW2 から見ると、ルートブリッジまでのコストはどちらも 4
図2 SW1 と SW2 を 2 本のリンクで接続した構成

スイッチ間が 2 本でつながっているので、このままではループになります。SW2 から見ると、どちらのリンクもルートブリッジまでのコストは 4(1Gbps のコスト)で同じです。STP は、どちらかのポートをルートポートにし、もう一方をブロッキングにする必要があります。

コストが同じときの決め方

ルートポートは、次の順番で比べて決まります。

順番比べるものこの例では
1ルートブリッジまでのコストどちらも 4 で同じ
2BPDU を送ってきたスイッチのブリッジ IDどちらも SW1 から届くので同じ
3BPDU を送ってきたポートのポート IDSW1 側のポート ID が小さいリンクが選ばれる
4BPDU を受け取った自分のポートのポート ID3 までで決まるので使われない

ポイントは、3 番目で比べるのが、SW2 自身のポートではなく、BPDU を送ってきた SW1 側のポートのポート ID だということです。SW1 の 2 つのポートは、BPDU にそれぞれ自分のポート ID を入れて送ります。SW2 は、ポート ID の小さい BPDU を受け取ったポートをルートポートにします。

例えば、SW1 側のポート ID が 128.1 のリンクが SW2 の Fa0/1 に、128.2 のリンクが SW2 の Fa0/2 につながっている場合、SW2 の Fa0/1 がルートポート、Fa0/2 がブロッキングポートになり、ループを防ぎます。

SW1(ルートブリッジ) SW2 ポート ID 128.1 ポート ID 128.2 Fa0/1:ルートポート Fa0/2:ブロッキング BPDU SW1 側(送信元)のポート ID が小さいリンクのポートを、SW2 はルートポートにする
図3 SW1 側のポート ID が小さいリンクのポートがルートポートになる
補足

SW2 自身のポート ID(4 番目)が使われるのは、同じ SW1 のポートから届く BPDU を、SW2 の複数のポートで受け取るような特殊な場合(間にハブがあるなど)だけです。

ポート優先度のカスタマイズ

既定では、すべてのポートの優先度は 128 です。ポート優先度を手動で変えると、どのポートをルートポートやブロッキングポートにするかを意図的に決められます。

注意点は、ポート優先度を設定するスイッチです。上の例で SW2 のルートポートを変えたい場合、比べられるのは SW1 側(BPDU を送る側)のポート ID なので、SW1 のインターフェースでポート優先度を設定します。SW2 のインターフェースで優先度を変えても、SW2 のルートポートの選択は変わりません。例えば、SW1 で SW2 の Fa0/2 につながるポートの優先度を 128 より小さくすると、SW2 では Fa0/2 がルートポートになります。

ポート優先度は、次のコマンドで変更できます。

Switch(config-if)# spanning-tree vlan <VLAN_ID> port-priority <優先度値>

<VLAN_ID> には対象の VLAN の ID を、<優先度値> には 0〜240 の 16 の倍数を指定します。

補足

下流のスイッチ(SW2)側の設定だけでルートポートを変えたい場合は、ポート優先度ではなく、SW2 のインターフェースのパスコストを変えます。パスコストは、比べる順番の 1 番目で使われるためです。

まとめ

項目内容
ポート IDポート優先度(既定 128)とポート番号の組み合わせ。小さいほど優先
使われる場面ルートブリッジまでのコストと、送信元のブリッジ ID が同じとき
比べるポート IDBPDU を送ってきた側(上流)のポート ID
優先度を設定する場所上流のスイッチ(この例では SW1)のインターフェース

コメント