コンテンツにスキップ

3. STPとEthernetChannelの設定

3.1. STPの設定

3.1.1. STPの設定と確認

STPの概要確認

スイッチはアドレス学習機能/フィルタリング機能などたくさんの機能やポートがあることから、演算を行うためのハードウェア要素が複雑であるため壊れやすい。実際に耐久年数は1年程度と言われている。 そのためスイッチは基本的には冗長化される。その手法の1つがSTPとなる。

STP(スパニングツリープロトコル)はIEEE802.1Dとして規定されたL2スイッチで冗長化構成を組んだ際のブロードキャストストーム(L2通信のループ)を防ぐためのプロトコル。 具体的にはネットワークの耐障害性向上のために冗長化を行った際にブロードキャスト通信がループしてネットワークリソースを圧迫するのを防ぐのに使用される。ARP要求などがそのブロードキャストにあたる。

STPの設定と確認

スパニングツリーはCisco製品の場合デフォルトでは有効になっているため設定は不要となっている。 なお確認はshow spannig-treeで可能。

show spanning-tree vlan <VLAN番号>
show spanning-tree interface fastEthernet <ポート番号>

STPの動作確認

STPに限らずルータの動作確認にはdebugコマンドを使用するがCPUに負荷がかかるため必要なときのみ行うようにする。 STPの動作確認の開始/停止は以下コマンドで行える。

debug spanning-tree events
no debug spanning-tree events

3.1.2. トポロジ変更に関するオプション

STPはデフォルトではどのスイッチがルートブリッジになるかわからない。 場合によっては特定のスイッチをルートブリッジにしたいケースなどもある。 そうしたケースの場合はSTP関連設定を変更しSTPトポロジを変化させて、ネットワーク管理者が意図する構成にする。 そのためのコマンドはいくつかある。

ブリッジプライオリティの変更

ルートブリッジにしたいスイッチではプライオリティをデフォルトより小さい値にしておくのが一般的。 プライオリティを変更するには以下コマンドを実行する。

(config)#spanning-tree vlan <VLAN番号> priority <プライオリティ>

PVST+の場合はVLAN毎にプライオリティを指定可能なためVLAN番号に対象VLANを指定する。 またPVST+ではブリッジプライオリティの一部をVLANとして試用している関係上、プライオリティは4096の倍数を指定する必要がある。

また他の手法としてはダイナミックに直接ルートブリッジを指定する方法があり以下コマンドで実行できる。

(config)#spanning-tree vlan <VLAN番号> root priority

上記コマンドの実行により指定したVLAN上でルートブリッジに選出されているスイッチのプライオリティを自動チェックし、スイッチのブリッジプライオリティより小さい値が自動設定され、自身がルートブリッジに選出される。

バスコストの変更

ポートの役割はバスコストを変更することで変えることができる。 ポートのバスコストは以下コマンドで変更可能

(config-if)#spanning-tree vlan <VLAN番号> cost <バスコスト値>

バスコストのデフォルト値の変更

バスコスト値のデフォルト値はショート法かロング法の2種類のいずれかで決定される。 デフォルトではショート法になっているが切り替えることも可能で、以下コマンドで変更できる。

(config)#spanning-tree pathcost method <short | long>

ポートプライオリティの変更

ポートプライオリティは以下コマンドで変更できる。

(config-if)#spanning-tree vlan <VLAN番号> porrt-priority <プライオリティ>

3.1.3. PortFastの設定と確認

PortFastはコンバージェンスを早くする機能の1つで、この設定でポートを即座にフォワーディングに遷移させられる。 なおループの危険性があるためハブやスイッチ間リンクでは設定してはならない

PorrtFastの設定

PortFastは以下コマンドで実行でき、基本的にはアクセスポートに設定する。 つまりPortFastの設定ポートはPC、サーバなどを接続することを前提としている。

(config-if)#spanning-tree portfast

PorrtFastの確認

以下コマンドで表示されるtype項目がPsp Edgeとなれば、そのポートはPortFastとなる。

show spanning-tree vlan <VLAN番号>

3.1.4. BPDUガードの設定と確認

BPDUガードは、PortFastが設定されているスイッチポートでBPDUを受信した時、そのポートをerror-disabledにする機能。 この機能によりスイッチがPortFastが設定されたポートに接続した場合でも、ポートを error-disabled にして不正接続を防止でき、さらに想定しないスイッチ機器の接続を防止することから、Layer2ループの発生を防ぐことができる。

BPDUガードの有効化

BPDUガードを有効化/無効化するには2種類のコマンドがある。

以下コマンドではPortFastの設定が行われるすべてのポートでBPDUガードを有効化/無効化できる。

(config)#spanning-tree portfast bpdguard default
(config)#no spanning-tree portfast bpdguard default

また以下コマンドではPortFastの設定の否かに関係なくそのインターフェイスのみで有効/無効にできる。

(config-if)#spanning-tree bpdguard <enable | disable>

BPDUガードの設定と確認

BPDUガードでBPDUを受信してerror-diabledになったポートを手動で復旧させる場合はポートを再起動させる必要がある。

(config-if)#shutdown
(config-if)#no shutdown

3.1.5. ルートガードの設定と確認

ルートガードの設定を行うと既存のルートブリッジより小さなブリッジIDのスイッチが接続されても、STPトポロジの変更を防げる。

ルートガードの有効化

(config-if)#spanning-tree guard root
(config-if)#no spanning-tree guard root

ルートガードの設定と確認

ルートガードの設定後に既存のルートブリッジより小さなブリッジIDを持つスイッチを追加した場合、show spanning-tree vlan <VLAN番号>実行後のSts項目にBKN*と表示される。またType項目には*Root_incと表示されルート不整合を意味する。

ルート不整合状態では復旧コマンドは不要で、上位BPDUが送られなければ元に戻る。

3.1.6. RSTPの設定と確認

STPではコンバージェンスに最大約50秒かかる。そのため早期に復旧すべき環境では数秒で切り替わるRSTPを設定する。

RSTPへの設定

RSTPはSTPと互換性があるためネットワーク内で混在環境を設定できるが、RSTPの効能を最大限発揮して動作させるためにはすべてのスイッチの動作モードをRSTPに変更する必要がある。

STPからRSTPへ動作モードを変更するには以下コマンドで行え、RSTPの場合にパラメータはrapid-pvstを指定する。

(config)#spanning-tree mode <pvst | rapid-pvst>

pvstの指定でPVST+でrapid-pvstでRapid-PVST+となる。 デフォルトではpvst(STP)となる。

RSTPの確認

以下コマンドで表示される項目中にSpanning tree enabled protocol rstpとあれば、RSTPに変更されている。

show spanning-tree vlan <VLAN番号>

3.2. EthernetChannelの設定

EthernetChannelはリンクアグリゲーション(LAG)とも呼ばれ、リンク間通信の耐障害性と負荷分散を実現できる。

3.2.1. EthernetChannelの基本コマンド

EthernetChannelの設定はケーブルを外した状態で行う。これは片側スイッチのみでEthernetChannelを形成すると対向スイッチで戻ってきてループが発生する恐れがあるためである。

EthernetChannelの形成

EthernetChannelの形成は以下コマンドで行える。

(config-if)#channel-group <グループ番号> mode < on | auto | desirable | active | passive >

グループ番号はチャンネルグループを指定し、バンドルさせたいポートでは同じ番号にする。 なおグループ番号は対向スイッチと合わせる必要はない

モードはネゴシエーションプロトコルをLACPかPAgPにする、または手動で合わせるかどうかに従って合わせる必要がある。

種類 モード 動作
手動 on 強制的に有効化
自動PAgP desirable 自分からPAgPネゴシエーションする(相手から受信して合わせる)
自動PAgP auto 自分からPAgPネゴシエーションしない(相手から受信して合わせる)
自動LACP active 自分からLACPネゴシエーションする(自分から送信する)
自動LACP passive 自分からLACPネゴシエーションしない(相手から受信して合わせる)

対応表

ネゴシエーションプロトコルの指定

ネゴシエーションプロトコルを指定する場合には以下コマンドで実行できる。 ただEthernetChannelを形成した際に自動でネゴシエーションプロトコルは決まるため必ず設定をする必要はない。

(config-if)#channel-protocol < lacp | pagp >

ただしEthernetChannel形成前に実行すると、形成する際に間違ったモードを選択した際にメッセージを出してくれるメリットがある。

負荷分散方法の指定

EthernetChannelの負荷分散させる方法の変更には以下コマンドを使用する。

(config)#port-channel load-balance <負荷分散手法>

負荷分散手法のオプションは以下より

オプション 負荷分散動作
src-mac 送信元MACアドレスを基に負荷分散
dst-mac 宛先MACアドレスを基に負荷分散
src-dst-mac 送信元MACアドレス/宛先MACアドレスを基に負荷分散
src-ip 送信元IPアドレスを基に負荷分散
dst-jp 宛先IPアドレスを基に負荷分散
src-dst-ip 送信元IPアドレス/宛先IPアドレスを基に負荷分散
src-port 送信元ポート番号を基に負荷分散
dst-port 宛先ポート番号を基に負荷分散
src-dst-port 送信元ポート番号/宛先ポート番号を基に負荷分散

rangeコマンドを使ったインターフェイスの指定

ポートそれぞれで設定をするとコマンドの打ち間違いなどでポート設定がずれる場合がある。 そこで複数のポートをまとめて設定する方法がある。

(config)#interface range <インターフェイス>

インターフェイスの区切り方はFa0/1,Fa0/3のように区切る、もしくはFa0/1 -12のように範囲指定することができる。

3.3.3. L2-EthernetChannelの設定

EthernetChannelの設定例

(config)#interface range Fa0/1,Fa0/4
(config-if)#switchport mode trunk
(config-if)#channel-group 1 mode on

EthernetChannelの確認

show etherchannel <summary | detail>

detailを指定すると設定されたモードまで閲覧可能となる。

STPの確認

show spanning-treeを実行するとEthernetChannelでバンドルしたインターフェイスはPo1などと表示される。

running-configの確認

show running-configで確認すると一覧にPort-channelN(Nは数字)でPort-channelインターフェイスが記載されることになる。

負荷分散方法の確認

EthernetChannelでどの負荷分散方法が設定されているかは以下コマンドで確認できる。

show etherchannel load-balance

PAgP、LACP設定時の隣接ポートの確認

隣接するスイッチのポートの各情報を確認するには以下コマンドでできる。

show <pagp | lacp> neigbor

3.3.4. L3-EthernetChannelの設定

L3スイッチではポートをルーテッドポートに設定することでL3-EthernetChannelを形成できる。 L2-EthernetChannelとの違いはIPアドレスの設定をPortChannelインターフェイスで行う必要がある点である。

L3-EthernetChannelの設定例

L3-EthernetChannelの設定ではバンドルする物流インターフェイスをあらかじめno switchportでルーテッドポートに変更を行う。 なおバンドルされている個々の物理ポートではIPアドレスの設定の必要はない

(config)#interface range fastEthernet 0/1 - 3
(config-if-range)#no switchport
(config-if-range)#channel-group 1 mode active
Creating a port-channel interface Port-channel 1

(config-if-range)#exit
(config)#interfase Port-channel 1
(config-if)#ip address 192.168.1.1 255.255.255.0
(config-if)#exit

L3-EthernetChannelの確認

方法はL2-EthernetChannelと同じ。

show etherchannel <summary | detail>

detailを指定すると設定されたモードまで閲覧可能となる。 なおPort-channel項目に(Ru)と表示されていればL3でEthernetChannelが形成されていることが確認できる。

3.3.5. EthernetChannelのトラブルシューティング

EthernetChannelでトラブルが発生した際の確認事項をそれぞれ記載する。

EthernetChannelの不形成

show etherchannel <summary | detail>実行時にPort-channel項目に(SD)と表示されている場合はdownしており、EthernetChannelは形成されていない。その場合はプロトコルの不一致やモードの組み合わせに問題があることが疑われる。

一部のポートがバンドルされていない

show etherchannel <summary | detail>実行時にPorts項目にFa0/1(s)などと表示されている場合はポートが使用できない。 この場合suspendedを意味し、他ポートと設定がずれている可能性がある。

アクセスポートの場合はVLANの一致。

トランクポートの場合はカプセル化、通過許可VLAN、IEEE802.1Qの場合はネイティブVLANの一致、通信モード(半二重/全二重)/速度が一致している必要があるため、show running-configなども組み合わせて適宜調査する必要がある。