カテゴリー別アーカイブ: L2要素技術

Storm Control, Unicast Flooding

Storm Control

Storm Contorolは{Unicast | Broadcast | Multicast} Stormから該当ポートを守ることができる。

inteface上で1秒間に受信した特定のpacketの数をカウントし、事前に定めておいたsuppressionのthresholdと比較することで、Storm Contorolを行う。

Storm Contorolの設定は以下の要素から行うことができる。
– 総帯域の何パーセントか
– どの種類のpacketを受信したtrafficか

Multicast Trafficのレートが事前に設定したthresholdを越えたとき、指定のthresholdレベルにtrafficが下がるまで、すべてのincoming trafficはdropされる。
Spanning Treeのpacketのみ、このシチュエーションではforwardingされる。BroadcastとUnicastのtrafficが超えた場合は、超えたtraffic種別のみがブロックされる。

Storm Controlは以下のコマンドで設定できる。

storm-control {broadcast | multicast | unicast} level {level [level-low] | pps pps [pps-low]}

 
Unicast Flooding

宛先Mac addressがMac address tableに存在しない場合、それぞれのVLANごとに所属するすべてのポートからフレームがfloodingされる。

Floodingが避けられず必要なものだったとしても、必要以上のfloodingは非対称routingや、STPのトポロジ変更、もしくはforwarding tableのオーバーフローの原因となる。floodingはDoSアタックなどのネットワーク攻撃の結果としても存在する。
下記のコマンドで、unicastのflooding防止を設定できる。

mac-address-table unicast-flood {limit kfps} {vlan VLAN} {filter timeout | alert | shutdown}
Catalyst6500シリーズでは、 Unknown Unicast Flood Blockingを設定することができる。

switchport block unicast

[`evernote` not found]
Pocket

Spanning Tree全般の付加要素

Loop Guard

STPはループに対して有効な技術であるが、輻輳や片方向リンクなどで、ループが発生する危険性がある。

Loop Guardはトポロジ内でRoot PortやAlternative PortがDesignated Portになることを防ぐことにより、ループを回避する。

non-Designated PortでBPDUが受信されず、Loop Guardが有効であった場合、Listening/Learning/Forwarding状態にならずに、そのポートはSTP loop-inconsistent Blocking状態になる。

Loop Guardはpoint-to-pointリンク上で動作し、Root Guardと同時には使用できない。Loop Guardを有効にするにはGlobal Configurationモードで以下のコマンドを設定する。
spanning-tree loopguard default

 

Unidirectional Link Detection

UDLDは片方向リンクを発見し、それを無効にする。Spanning Treeのループをはじめ、片方向リンクは複数の問題を抱えている。
UDLDはAuto Negotiationができないタスクを担う事ができる。

UDLDを動作するには、UDLDが有効にされたinterfaceからneighborに対してパケットを送信する。双方のリンクはUDLDをサポートしている必要がある。デフォルトでは、UDLDはcopper interfaceのローカルでは無効になっており、すべてのOptical Fiber Ethernet interfaceでは有効になっている。UDLDを有効にするには以下のコマンドである。

udld enable
Root Guard

Root Guardはネットワーク内のRoot Bridgeの情報を確定させることができる。
Root GuardはRoot Guardが設定されているportをDesignated Portとする。

Root Guardが有効にされたポートで優位なSTP BPDUを受信した場合、ポートはroot-inconsistent STP状態に移行する。root-inconsistent状態はListening状態と同意である。つまり、このポートからはトラフィックが送出されないため、この設定により、Root Bridgeの場所を確定させることができる。

以下の設定でRoot Guardを有効にすることができる。

spanning-tree guard root
BPDU Guard

portfastが設定されたポートでBPDUが受信された場合に、ループが発生する可能性がある。

portfastが設定されたポートでは、BPDUを受信すべきではないが、そのポートでBPDUを受信したとなると、それはセキュリティ事故か設定ミスの可能性がある。
BPDU GuardはBPDUを受信したときに、そのポートをerror-disable状態に移行させる。

BPDU Guardはポート単位、あるいはグローバルに設定することができる。

グローバルに設定する場合

spanning-tree portfast bpduguard

 

インターフェースで設定する場合
spanning-tree bpduguard enabke

インターフェースレベルで設定する場合は、そのポートにportfastが設定されていなくてもBPDU Guardを有効にすることができる。

[`evernote` not found]
Pocket

Multiple Spanning Tree(MST)の基本

802.1s Multiple Spanning Tree

 

MSTPはIEEEに準拠しており、複数のVLANをマッピングすることで、Spanning Treeのインスタンスを減らすことができる。
Multiple Spanning Tree(MST)や、Multiple Instance Spanning Tree(MIST)などと呼ばれる。

同じMSTPのparameterのセットを設定し、MSTのRegionを作成する。MSTPではIEEE準拠を満たすため、共通のSpanning Treeとして、すべてのMST regionを代表する内部Spanning Treeを有効にする必要がある。
以下の手順でMSTPを設定する。
Step1 MSTPをグローバルに設定

spanning-tree mode mst

 

Step2 MST configurationサブモードに入る

spanning-tree mst configuration

 

Step3 MSTのリージョン名を決定

name name

 

Step4 configurationのrevision番号を設定

revision REVISION番号

 

Step5 MST instanceにVLANをマッピング

instance interface vlan range

 

以下のコマンドで簡単にMSTPのconfigurationを確認することができる。

show spanning-tree mst configuration
show spanning-tree mst VLANID

[`evernote` not found]
Pocket

Rapid Spanning Tree(RSTP)の要素

802.1w Rapid Spanning Tree Protocol

Rapid Spanning Tree Protocol(RSTP)は802.1Dの進化系であり、多くの向上点がある。
Configurationはほぼ同じで、二つの技術は共存することができる。ただし、完全な利点はすべてのスイッチをRSTPにするまで得られない。

RSTPは高速Convergenceを実現するため、隣接するスイッチとの間で、Full Duplex、point-to-pointのコネクションを必要とする。

RSTPはSTPに参加していないedge portを定義する必要がある。edge portはstaticに設定するか、portfastコマンドで認識される。

 

RSTP Port States

 

RSTPのポート状態は802.1Dよりもシンプルになっている。
– Discarding
– Learning
– Forwarding

 

ポート状態はポートの役割とは結びついていない。
たとえば、Designated PortはDiscardingや、Forwarding状態にもなり得る。

 

RSTP Port Roles

 

– Root Port:802.1Dに存在していたものと同義。
Root Bridgeへのbest pathで、Root Bridge以外のBridgeに存在します。

– Designated port:802.1Dに存在していたものと同義。
トポロジ内のすべてのセグメントにDesignated Portが存在する必要がある。デフォルトでは、Root BridgeのすべてのポートがDesignated Portである。

– Alternative Port:802.1wで登場する新ポート。
同一セグメント上でbackup portを素早くDesignated Portにする。

– Backup Port:802.1wで登場する新ポート。
素早くRoot Portへ切り替える。

 

 

RSTP BPDU

 

すべてのBridgeはHello時間ごとにBPDUを送信する。
BPDUはkeepaliveのように動作する。BPDU情報が一定のHello回数途絶えた場合に、プロトコル情報がMax ageとなる。

 

802.1wでは、Convergenceはリンク間で発生する。802.1DのようなタイマーでのConvergenceではない。
RSTPでは、Non-edge Portだけがトポロジチェンジの際にForwarding状態になる。

 
Implementing RSTP

 

殆どのCiscoスイッチでは、MSTを設定すると自動的にRSTPが有効になる。PVST+モードでRSTPを有効にするには以下のコマンドを設定する。

 

spanning-tree mode rapid-pvst

 

[`evernote` not found]
Pocket

Spanning Tree Protocolのオプション要素

Topology Changes

STPは、Spanning Treeの状態遷移が必要なトポロジ変化があった場合、Topology Change Notification(TCN)BPDUを使用し、Root Bridgeに知らせる。

BPDUのタイプフィールド(0x80)が、そのBPDUがTCN BPDUであるかどうかを示す。

TCN BPDUはコンバージェンス時間を向上させるのに役立つ。

 

Root Bridge Placement

実際のネットワークでは、Root Bridgeは自動選出ではなく、明示的に選出する事よう設定することが望ましい。また、Primary Root Bridgeがダウンした際に備えて、Secondary Root Bridgeを設定することが望ましい。

下記のコマンドにより、ルートブリッジ選出のプライオリティ値を直接操作できる。

 

spanning-tree vlan VLANID priority PRIORITY値

 

たとえば、<spanning-tree vlan 100 priority 4096>コマンドはVLAN100のpriority値を4096に設定する。

ネットワーク内のその他のスイッチのPriority値がデフォルト値の32768であった場合、Priority値4096のスイッチがRoot Bridgeになる。また、Priority値8192を使用することで、secondaryのRoot Bridgeを選出することができる。

下記コマンドは、現存するRoot BridgeのPriority値を確認し、それより1段階低い値を設定する。

 

spanning-tree vlan VLANID root primary

 

Root Bridgeでデフォルト値が使用されている場合、上記コマンドにより選出される新Root BridgeのPriority値は8192にセットされる。
同様に、Secondary Root Bridgeを設定するには以下のコマンドを使用する。

 

spanning-tree vlan VLANID root secondary

 

このコマンドはPriority値を16384に設定する。

 

PortFast

Portfastコマンドを個別portに設定すると、そのportは以下の状態になる。
– portはすぐにSTP forwardingモードでupする
– portがUP/DOWNしても、スイッチはTCNを生成しない

つまり、portfastが設定されたportには、end userのworkstationなどを接続するということである。portfastが設定されたportにHUB、Switch、Bridgeなどの接続を行った場合、loop発生の原因となる。

 

UplinkFast

portのエラー時に、新しいRoot Portの選出を即座に行う。
UplinkFastを設定した際、設定したswitchのBridge Priorityは49152にセットされ、すべてのリンクにCostが3000上乗せされる。

 

BackboneFast

すべてのスイッチでBackboneFastを設定することで、直接接続されていないSwitchでのエラー時にConvergenceを早めることができる。この設定により、Convergence時間を50秒から30秒に縮めることができる。

[`evernote` not found]
Pocket

Spanning Tree Protocolの基本要素

802.1D

802.1DはSpanning Tree Protocolと呼ばれる、L2のループ回避メカニズムである。
(IEEEスタンダードのプロトコル)

TTL値がフレームにないため、L2のループは厄介である。
ループの発生は以下の問題を起こす原因となる。
– ブロードキャストストーム
– MACテーブルコラプション
– マルチフレームコピー

 
STP Process

Spanning Treeを構築する上で、 Bridge IDは重要な要素である。
Bridge IDは2byteのBridge Priorityと6byteのMACアドレスで構成される。
デフォルトのPriorityは32768である。

新しいスイッチOSでは4bitのPriorityと12bitのSystem IDで構成される拡張システムIDの設定をすることができる。
この拡張システムIDはVLAN IDで、この拡張により、MACアドレスが優先値でありながらもVLANにユニークなブリッジIDを保持させることができる。

Path costはあるBridgeから別のBridgeへのdistanceである。
STPによりLinkにはCostが付与される。Costは帯域をベースにして算出され、高い帯域は低いCostとなり、対して、低い帯域は高いCostとなる。STPは低いコスト値を高いコスト値よりも優先する。

STPオペレーションの最初に、Root Bridgeが選出される。
Root Bridgeはすべてのポートをdesignated portにし、Loop FreeなL2トポロジの中心となる。

Root Bridgeの選出にはBPDUがそれぞれのポートから送出され、Bridge IDの比較を行う。
同一のBridge IDだった場合は、一番低いMACアドレスがRoot Bridgeになる。

 

ネットワークのRoot Bridgeが確定した後、以下のポイントを参照してループフリーのトポロジが構成される。

1. Root Bridgeの選出(最も低いBridge ID)

2. Root Portの選出
Root BridgeでないすべてのブリッジがRoot portを選出

3. designatedポートの選出
それぞれのセグメントは一つのdesignatedポートを保持する。Root Bridge上のすべてのポートがdesignatedポートである。

Convergenceが発生したときは、Root Bridgeからループフリーパスを経由してBPDUが送出される。

 

STPは以下の状態を遷移して、portをforwardingにする。

1. Disable:Administratively Down
2. Blocking:BPDUが受信された状態(20秒)
3. Listening:BPDUが送出され、受信された状態(15秒)
4. Learning:Bridging tableが構築される(15秒)
5. Forwarding:データが送受信されている状態

STPタイマーにより、Convergenceをコントロールする。
– Hello:2秒
– Forward Delay:15秒
– Max Age:20秒

[`evernote` not found]
Pocket