月別アーカイブ: 2014年4月

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

 

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秒に縮めることができる。

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秒

Pocket

Redistribution

ネットワーク上では、コンバージェンスの時間、アプリケーション特有のプロトコル要件、マルチベンダ共存環境の構築など、複数のルーティング・プロトコルが必要となる事態は避けられない。

複数のルーティングプロトコルが共存しなければならない環境では、異なるルーティングプロトコル間でのルートのRedistribution(再配送)が必要となる。

Redistributionを考える上で重要なポイントは、再配送されたルートが新しいルーティングプロトコルに入った際のseed metricである。

 

seed metricは通常、originateのinterfaceで生成される。
たとえば、EIGRPはmetricを設定するために、interfaceの帯域と遅延値を使用する。

主なルーティングプロトコルでは、再配布のためのデフォルトseed metricを保持する。
Infinityはseed metricが必ず設定されている必要があることを意味しており、設定されなければそのルートは使用されないということになる。

 

RIPへのRedistribution

redistributeコマンドか、default-metricコマンドを使用し、デフォルトメトリックを設定する必要がある。

redistribute protocol [ process-id] [match route-type]
[metric metric-value] [route-map map-tag]

matchキーワードはOSPFをRedistributionするときにルートタイプを設定できる(internal, external1, external2)。
route-mapキーワードはRedistributionされたルートをコントロールするルートマップを指定することができる。

 

OSPFへのRedistribution

デフォルトのseed metricは20。
Redistributionルートのデフォルトメトリックタイプはexternal type2。

– external type 1
宛先へのtotal path costをベースにmetricが計算される。

– external type 2
OSPFネットワーク内のpath costに関わらず、再配布するルータからのcostのみをmetricに反映する。

redistribute protocol [process-id] [metric metric-value] [metric-type type-value] [route-map map-tag][subnets]

サブネットはデフォルトでRedistributeされない。
サブネットをRedistributionしたいときは、subnetsキーワードを使用する。tag値ではルートを判別するためのtagを設定できる。

 

Redistribute Into EIGRP

EIGRPにRedistributionする場合もデフォルトseed metricを設定する必要がある。

redistribute protocol [process-id] [match {internal | external1 | external2}] [metric metric-value] [route-map map-tag]

Pocket

ClassfulとClassless

クラスフル・ルーティングプロトコルは、主に以下の技術で使用される。
– レガシー技術
– ルーティングアップデートにサブネット情報を含まないもの
例:RIPv1、IGRP

 

サブネットマスク情報がルーティングアップデートに含まれないため、サブネットマスクはネットワーク内で統一される。
また、クラスフルのネットワークを越えるときに、自動集約を行う。

 

BGPとEIGRPはクラスフル・ルーティングプロトコルではないが、デフォルトでクラスフルに自動集約を行う。その動作は、no auto-summaryコマンドでdisableすることができる。

 

クラスフル・ルーティングプロトコルは固定長サブネットマスク(FLSM)を採用する。FLSMはアドレスの使用を非効率的にし、ネットワーク全体で見た場合に、効率化の妨げとなる。

 

デフォルトで、クラスフル・ルーティングプロトコルは、メジャークラスフルネットワークの境界上で、不明なサブネットのトラフィックを破棄する。

たとえば、クラスフル・ルーティングプロトコルがルーティングテーブル上に10.4.0.0と10.8.0.0のみを保持していたとする。
その状態で10.16.0.0宛のパケットを受信した場合、デフォルトルートが存在したとしてもそのトラフィックは破棄される。

 

ip classlessコマンドでこの破棄する動きを止めることが可能となる。ip classlessコマンドにより、上記のケースの場合、default routeを使うことができるようになる。

Pocket

Routing Protocolについて

Routing Protocolには大きく2つある。
Distance VectorとLink Stateである。
そのほかにもHybrid型、Path Vector型がある。

 

・Distance Vector
例:RIPv1、RIPv2、IGRP
– 直接接続されているneighborと、全Routing Tableの定期的な交換を行う
– Distance値を使用して、最善のrouteを比較する
– Hop Countに制限がある

 

・Link State
例:OSPF、IS-IS
– ネットワーク内の全ノードに、ローカル接続情報を送信する
– 同一のプロトコルを話すネイバールータと隣接関係を持ち、local link情報を送信する
– 全ノードに情報を流すが、ルータは自身のlink stateの一部の情報のみを送信する
– それぞれのルータは受信した情報からネットワークの完全な全体像を保持する

 

・Hybrid
例:EIGRP
– distance vectorとlink-stateRouting Protocolの両方の要素を持つ

 

・Path Vector Protocols
例:BGP
– distance vectorプロトコルの集合体;BGPはpath vectorか、あるいはすべてのASのリストを使用する

 

・Split Horizon

一部のRouting Protocolはルーティングループを避けるためにsplit horizonを使用する。
split horizonは、ルーティング情報を受信したinterfaceからは、そのルーティング情報を出さないというものである。
Hub and Spokeのフレームリレートポロジで疎通がとれない場合、まずsplit horizonによる問題を考慮してみるのが定石。

 

・Summarization

長いマスク長(たとえば/24)の複数のルートを短いマスク長(たとえば/16)の一つのルートで集約することである。
例:192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24(集約前)
192.168.0.0/16(集約後)

ルート集約はルーティングテーブルのサイズを小さくし、ルーティングの機能をより効果的し、アップデートの数を少なくする利点がある。
EIGRPなどは、自動的にクラスフルに集約を行う場合がある。
Config上のNo auto-summaryは反射的に確認し、有無を把握しておくべきである。

Pocket