'Spanning Tree Protocol'에 해당되는 글 2건

  1. 2009.06.04 [STP] Spanning-tree Protocol (PVST, RSTP, MSTP)
  2. 2009.03.12 스패닝 트리 프로토콜 (STP : Spanning Tree Protocol)
2009.06.04 14:44

[STP] Spanning-tree Protocol (PVST, RSTP, MSTP)

STP

Spanning Tree Protocol은 Digital Equipment Corporation(DEC)에 의해 최초로 개발되었다.
DEC STP Algorism이 IEEE802 협회에 의해 바뀌게 되었고 IEEE802.1d로 발표되었다.
DEC와 IEEE 802.1d Algorism은 같지 않고 호환성도 없다.
Cisco Catalyst1900과 2950은 IEEE820.d STP를 사용한다.

- STP의 목적은 L2환경에서 Loop이 없는 Network을 유지하는 것이다.
- Loop이 없는 Topology는 스위치나 브리지가 Loop를 인식해야하고, 인식했을때 논리적으로 하나이상의 Redundant한 Port를 자동적으로 차단하므로 구현된다.
- STP를 구동하는 스위치나 브리지는 스위치나 브리지의 추가 혹은 Failure등, Network Topology에 변화가 생겼을 때 자동적으로 인식한다.

Spanning Tree Protocol의 절차

- Network 당 하나의 Root Bridge선정
- Root Bridge가 아닌 Bridge 각각에서 하나의 Root Port선정
- 각각의 Segment에서 하나의 Designated Port선정

이러한 세가지 절차를 거친후 Root Port도 아니고 Designated Port도 아닌 Port는 Blocking된다.

Root Port 선출 기준

1. Root Bridge 에 이르는 Path Cost가 낮은 Port.
2. 같다면 Port에 연결된 Bridge의 ID가 낮은 Port.
3. 이것도 같으면 각 Port의 Port ID가 낮은 Port가 선출된다.

Designated Port 선출기준

1. Port Bridge에 이르는 Path Cost가 낮은 Port.
2. 같다면 Port의 해당 Bridge의 ID가 낮은 Port.
3. 이것도 같다면 각 Port의 Port ID가 낮은 Port가 선출된다.

PVST

Spanning Tree Protocol 의 한 타입

스패닝 트리 프로토콜은 브리징 루프를 방지하기 위해 스패닝 트리라는 트리 구조를 만든다. 그런데 전통적으로 사용하는 스패닝 트리는 VLAN 과는 상관없이 물리적 구조(스위치의 트렁크 링크로 연결된)를 바탕으로 하기 때문에 단 하나의 트리만을 만들어 버린다.

이럴 경우 이 물리적 트리구조에 일부분만을 차지하는 VLAN 은 어쩔 수 없이 하나로 이루어진 전체 트리를 바탕으로 운용되고 때에 따라서는 부적절한 구조를 형성할 수도 있다. 이런 형식을 Common Spanning Tree 라 한다.

이를 보완하기 위해 트리를 VLAN 마다 트리를 만들고 독자적으로 스패닝 트리 알고리즘을 수행한다. 이를 PVST(Per VLAN Spanning Tree) 라 한다.

그런데 이 PVST는 CST와 공존할 수 없고 서로의 STP BPDU를 이해할 수가 없다.

그래서 만들어진 것이 PVST+다. 이 PVST+는 CST 에서 받은 정보를 PVST로 보낼 때 VLAN마다 반복해서 보내는 작업을 하거나 터널링을 해서 떨어진 PVST간에 연결을 하게 한다.

1. Common Spanning Tree (CST)는 IEEE 802.1Q의 Spanning Tree Protocol로 모든 VLAN에 대해서 하나의 Spanning Tree를 정의한다. BPDU 정보는 VLAN 1위에서 송수신 된다.
- 모든 스위치가 하나의 루트 브리지를 선출하여 루트 브리지를 기준으로 Forwarding, Blocking State를 결정한다.
- CST advantages

2. BPDU가 적게 발생하여 Bandwidth를 절약한다.

3. Switch에 processing overhead가 적다.
- CST disadvantages

4. 하나의 root bridge 만을 기준으로 하기 때문에, 부적절한 Forwarding Path가 설정될 수 있다.

5. Spanning-tree topology가 모든 스위치에 걸쳐서 형성되어 크기가 커지며 따라서 Convergence Time이 오래 걸릴 수 있고, Topology의 변화에 따는 잦은 Spnning Tree Recalculation이 발생할 수 있다.

6. VLAN이 Partition 될 수 있다.

Per-VLAN Spanning Tree (PVST)는 Cisco-proprietary한 Implementation으로 PVST가 작동하기 위해서는 Inter-switch Link (ISL) encapsulation으로 Trunking 되어 있어야 한다. PVST는 각 VLAN별로 별도의 Spanning Tree가 작동한다.

-Flexible한 Traffic Management를 할 수 있다.
-VLAN(Subnet) Basis로 Forwarding Path를 조절할 수 있다.(Load Balancing을 할 수 있다.)
-간단한 Layer 2 Redundancy를 제공한다.

PVST+는 CST Information이 PVST로 전달되게 하는 시스코 전용의 Implementation이다.

-Cisco PVST+는 PVST Frame을 Multicast Frame으로 Encapsulation하여 CST Network을 통과시킨다.



=====STP (spanning-treee protocol) (802.1d) PVST=====

 (IEEE)
   ==> 1, 시간 (RSTP) 802.1W
   ==> 2, CPU (MST)  802.1S

(CISCO)
   ==> 1. 시간 portfast, uplinkfast, backbonfast   



=====STP 계산법 (listen) 15sec=====

1. Root bridge선출 (vlan 마다)
    (priority(32768) ==> MAC) 낮은값

2. Root port선출 (non-root bridge마다)
    (cost ==> port-id(sender-id)) 낮은값  (100M 19  10M 100)

3. Designated port선출 (segment 마다)
    (cost ==> priority ===> MAC)

 

===== Port status =====

1. Blocking (Max-age) 20sec
2. listen (STP계산) 15sec
3. learn (MAC 학습) 15sec
4. forwarding

 

===== Port role =====

1. designated port (BPDU 송신)
2. root port             (BPDU 수신)
3. blocking port  traffic차단 (BPDU 수신)



===== Root bride 조정 =====

 config)#spanning-tree vlan 1 priority  4096 (default 32768) (4096 단위로 조정 0 ~ 61440)

 config)#spanning-tree vlan 1 root primary
               spanning-tree vlan 1 root secondary

Verify

config)# show spanning-tree vlan x brief

 

===== Root port 조정 ===== (cost, port-priority(sender))

SW1
 config-if)#spanning-tree vlan 1 cost 19
SW2
 config-if)#spanning-tree vlan 1 port-priority 128


Verify

config)# show spanning-tree vlan x brief
config)# show spanning-tree root brief

 

==== RSTP (802.1W) =====

root port
designated port
alternative port (root port), backup port (designated port)
edge port (listen, learn)생략
proposal, agreement
TC 직접 설정

config)#spanning-tree rapid-pvst

 

===== MSTP (802.1S) ======

MST (name, revision, group)
mst config   
config)# spanning-tree mode mst  ==> (RSTP 자동 enable)
config)# spanning-tree mst configuration
config)# name BCMSN
config)# revision 1
config)# instance 1 vlan 1 - 500
config)# instance 2 vlan 501 - 1000
  
ROOT bridge 조정
config)# spanning-tree mst 1 root primary
config)# spanning-tree mst 2 root secondary
     
ROOT port 조정
config)# spanning-tree mst 2 cost 20000
     
Verify
config)# show spanning-tree mst 1
config)# show spanning-tree mst configuration



sw0

>en
#conf t
config#vtp mode server
config#domain switch
config#exit
>sh vtp status
>en
#conf t
config#vlan 10
config-vlan#exit
config#vlan 20
config-vlan#exit
config#vlan 30
config-vlan#exit
#sh vtp status
#conf t
config#int fa0/1
config-if#switchport mode trunk
config-if#exit
config#int fa0/2
config-if#switchport mode trunk
config-if#exit
config#int fa 0/5
config-if#switchport access vlan 10
config-if#switch mode access
config-if#spanning-tree portfast
config-if#exit
config#int fa0/6
config-if#switch access vlan 20
config-if#switch mode access
config-if#spanning-tree portfast
config-if#exit
config#int fa0/7
config-if#sw ac vlan 30
config-if#spa p
config-if#exit
config#exit
#sh spanning-tree
#sh vtp status
#sh vlan
#conf t
config#spanning-tree vlan 10 priority 4096
config#exit
config#sh spanning-tree

sw1

>en
#conf t
config#vtp mode client
config#vtp domain switch
config#exit
#sh vtp status
#conf t
config#int fa0/1
config-if#switchport mode trunk
config-if#exit
config#int fa0/2
config-if#switchport mode trunk
config-if#exit
config#exit
#sh vtp status
#sh spanning-tree
#sh vlan
#conf t
config#int fa0/5
config-if#switchport access vlan 10
config-if#switch mode access
config-if#spanning-tree portfast
config-if#exit
config#int fa0/6
config-if#switch access vlan 20
config-if#switch mode access
config-if#spanning-tree portfast
config-if#exit
config#int fa0/7
config-if#switch access vlan 30
config-if#switch mode access
config-if#spanning-tree portfast
config-if#exit
config#exit
#sh vlan
#conf t
config#spanning-tree vlan 20 priority 4096
config#exit
config#sh spanning-tree

sw2

>en
#conf t
config#vtp mode client
config#vtp domain switch
config#exit
#sh vtp status
#conf t
config#int fa0/1
config-if#switchport mode trunk
config-if#exit
config#int fa0/2
config-if#switchport mode trunk
config-if#exit
config#exit
#sh vtp status
#conf t
config#int fa0/5
config-if#switchport access vlan 10
config-if#switch mode access
config-if#spanning-tree portfast
config-if#exit
config#int fa0/6
config-if#switch access vlan 20
config-if#switch mode access
config-if#spanning-tree portfast
config-if#exit
config#int fa0/7
config-if#switch access vlan 30
config-if#switch mode access
config-if#spanning-tree portfast
config-if#exit
config#exit
#sh vlan
#conf t
config#spanning-tree vlan 30 priority 4096
config#exit
config#sh spanning-tree


Trackback 0 Comment 0
2009.03.12 09:18

스패닝 트리 프로토콜 (STP : Spanning Tree Protocol)

스패닝 트리를 구성하기 위해 필요한 2가지 정보

 

BID : priority  + MAC address 로 구성

        priority는 디폴트로 32768(0~65535)을 사용한다.

 

Path Cost : 기본적으로 1000/BW를 사용한다.

                 그러나 다른 값을 가지는 경우도 있기 때문에 몇 개의 Path Cost는 암기가 필요하다.

                  10Mbps => 100, 100Mbps => 19, 1Gbps => 4 이정도는 기억하도록 하자

 

Spanning Tree를 구성하는 알고리즘은 다음과 같다.

1. 네트워크 당 하나의 root bridge를 갖는다.

2. Non root bridge는 하나의 Root Port를 갖는다.

3. Segment 당 하나씩의 Designated Port를 갖는다.

   Segment는 스위치끼리 연결된 링크를 의미한다.

 

STP에서 root bridge, root port, designated port를 결정하는 순서는 다음과 같다.

1. 누가 더 작은 Root BID를 갖는가?

2. 루트 브릿지까지의 Path Cost는 누가 더 작나?

3. BID가 더 낮은가?

4. 누구의 포트 ID가 더 낮은가?

 

Catalyst 2950에서 브릿지의 priority 값을 변경하는 방법은 다음과 같다.

SW-3(config)#spainning-tree vlan 1 priority 100

SW-3#show spanning-tree

 

스패닝 트리 프로토콜의 5가지 상태 변화

Disabled : 포트가 고장 혹은 shut down 시켜 놓은 상태

Blocking : 스위치를 맨 처음 켜거나 Disabled에서 살아났을 때 ( BDPU만 주고 받음)

Listening : 루트나 데지그네이트 포트로 선정되면 리스닝 상태가 됨

Learning : 15초 정도 유지하며 MAC address를 배워 테이블을 만드는 상태 (MAC address, BDPU)

Forwarding : Learning 상태 이후 15초가 지난 후 데이터를 주고 받는 상태

                  (Data, MAC address, BDPU)

 

스패닝트리가 안정되면 2초(Default Hello Time)에 한 번, Hello BDPU를 Non Root Bridge에 전달

 

Hello Time : 헬로 BDPU를 보내는 시간

Max Age : 헬로 BDPU를 받지 못해 기다리는 최대시간, 이 시간이 지나면 spanning tree를 재구성

Forwarding Delay : Blocking에서 Fowarding이 될 때 Listening -> Learing, Learning->Forwarding

                           상태 사이의 시간(15초)



스위치에는 스패닝 트리 프로토콜이라는게 있고 관련된 명령어는 spanning-tree 다.

spanning-tree 명령어를 내리려면 구성모드로 들어가야한다.

구성모드는 configure terminal 명령어로 들어가진다.

spanning-tree 명령어는 vlan 에 설정할 수 있다.

spanning-tree vlan vlan_number

각 VLAN 에 이 스위치가 가지는 브리지 우선순위를 설정할 수 있는데

명령어는

spanning-tree vlan vlan-number priority 4096의배수

가 된다.

priority 값은 4096의 배수여야한다.

그러니까 최종 명령어는

switch(config)# spanning-tree vlan 1 priority 32768

과 같고 위 명령이 기본적으로 세팅되어있다.

 

2계층 스위치의 주요기능은 3가지고 어드레스 학습, 패킷전달 및 필터링, 루프 방지로 나뉘어진다.

 

어드레스 학습은 송신지의 MAC 주소를 파악해서 MAC-ADDRESS-TABLE 을 만드는 기능이다.

맥 주소 테이블을 보는 명령어는 프리빌리지 모드에서 show mac-address-table 이다.

 

만들어진 MAC 주소 테이블을 가지고 수신된 프레임을 처리하는데

수신지 위치를 알고 있다면 해당 포트로 포워딩하고 모른다면 플러딩한다.

이때 해당 포트를 제외한 포트에는 이 프레임을 전송하지 않음으로서 대역폭을 보존하고

충돌을 방지하는데 이것이 필터링 기능이다.

 

루프 회피 기능은 브로드 캐스트 폭풍(루프)를 방지하고, 비 브로드캐스트 프레임의 중복된

전송으로 일어나는 예측불가능한 상황 및 데이터베이스의 불안정성을 제거해주는 기능이다.

 

이더넷 같은 2계층 LAN 프로토콜에는 루프 회피 기능이 없지만,

IP와 같은 3계층 프로토콜은 TTL메커니즘으로 패킷의 전송 횟수를 제한하는 방법이 있고

2계층에는 STP(Spanning-Tree-Protocol)가 있다.

 

규칙.

스패닝 트리 프로토콜이 동작하는 네트워크에서 스위치(브리지)들 중 단 하나만 대장브리지(Root Bridge)가 되고 대장 브리지의 모든 포트는 대표포트(지정포트)이다. 대장 브리지가 아닌 브리지들은 루트 브리지로 향하는 가장낮은 스패닝 트리 코스트를 가지는 루트 포트가 존재한다. 또 물리적으로 연결된 브리지들 사이에는 하나의 대표포트가 존재한다. 


위 그림 처럼 세 스위치가 존재하고 각각의 priority 값이 같을 경우
MAC 주소가 루트 브리지를 선출하는 우선조건이 된다. 따라서 MAC 주소값이 가장 낮은 0001.9612.D1E3 스위치가 루트 브리지가 되었고, 루트 브리지의 모든 포트는 지정포트이므로 동작하고 나머지 두 스위치들은 루트 브리지를 향한 루트포트를 가지게 된다. 그래서 루트 브리지를 향하지 않는 비루트 브리지간의 통신에 사용되는 회선은 하나의 지정포트만을 가지므로 통신을 하지않는 회선으로 설정된다. 이는 결국 루프를 방지하는 역할을 수행하게 된다.

<비지정 포트를 가진 00E0.8F9D.C597 스위치의 Fa0/2 인터페이스의 정보입니다.>

 

위 그름에서 알 수 있듯이 비지정 포트가 되면 input flow-control is off, output folow-control is off 상태가 된다. 연결은 된 상태이지만 데이터의 출입이 통제된다는 뜻이다.

 

따라서 스위치들중 문제가 생기면 이 포트는 활성화될 여지가 있다.즉, 사용하지 않는 것이지 사용할 수 없는 것은 아니라는 것임!

 

스패닝 트리 프로토콜에서의 우선순위 정하기(루트 브리지,루트 포트,지정 포트)

1st. 우선순위값(Priority) : 먼저 기본값이 32768 이거나 switch(config)# spanning-tree vlan vlan_number priority priority_value 값으로 정해준 우선 순위 값이 낮은 브리지가 루트 브리지가 된다.

2nd. 경로 코스트(Path Cost) : 루트브리지로 가는 경로값이 가장 낮아야한다.

3rd. MAC ADDRESS : MAC 주소가 가장 낮아야 한다.

4th. Port Number : 123번으로 순위가 결정되지 않으면 포트의 번호가 가장 낮은 곳이 설정된다.



출처 : http://blog.naver.com/asradad1


Trackback 0 Comment 0