평범한 고딩 네트워크 공부일기

STP (Spanning Tree Protocol) 본문

Network/네트워크 일반

STP (Spanning Tree Protocol)

seokmin100 2025. 12. 2. 14:49

1. STP란?

STP(Spanning Tree Protocol): 순환 구조(Looping)를 끊기 위해 스위치들이 일련의 협상 과정을 거쳐 안정된 네트워크를 가능하게 하는 프로토콜

→ 루프 구간을 없애는 프로토콜

1-1. Loop가 발생하는 이유

스위치의 작동 원리인 Flooding 때문에 발생

Host A에서 브로드캐스트(broadcast) 패킷을 보낼 때 스위치가 Flooding을 하게 된다. Flooding은 들어온 포트를 제외한 나머지 포트로 뿌려주게 된다. 이 과정을 스위치가 계속 반복하기 때문에 Looping 현상이 발생하게 된다.

 

1-2. Looping 발생 시 발생하는 현상

  • Broadcast Storm
    모든 포트로 Flooding 되는 트래픽 때문에 Braodcast가 쌓이면서 모든 링크의 대역폭을 고갈시킴. → CPU 소모율이 극대화 → 과부하
  • Multiple Frame Copy
    스위치는 목적지를 모르는 Unicast 패킷이 도착하였을 때, 해당 패킷을 Flooding 처리함.
    아래 그림처럼 Host A가 R1으로 보내는 상황일 때 R1은 패킷을 두 번 받게 됨.

  • MAC address Flapping
    트래픽이 들어온 Port와 Souce-MAC주소를 매핑하여 MAC Table을 작성하는 Learning 동작 시 정상적으로 들어온 트래픽과 우회하여 들어온 트래픽의 Source MAC 주소가 같기 때문에 MAC address Table이 계속 바뀌게 됨. (Falpping 현상)

 

1-3. STP 어떨 때 사용?

  • Looping 현상을 막을 때 사용함.
  • 스위치나 브릿지 구성에서 출발지부터 목적지까지의 경로가 두 개 이상 존재할 때, 한 개의 경로만을 남겨두고 나머지는 모두 끊어 두었다가 사용하던 경로에 문제가 발생하면 그 때 끊어두었던 경로를 하나씩 살릴 때 사용함.

 

2. BPDU

STP를 지원하는 스위치들 사이에서 교환되는 상태 정보를 담은 메시지

STP는 BPDU 메시지를 스위치들 간에 교환으로 하여금 네트워크에 대한 모니터링 및 루프 상태 점검함.

BPDU에는 스위치 및 포트 역할을 결정하기 위한 프레임인 Configuration BPDU, 스위치 네트워크 구조가 변경되었을 때 사용되는 프레임인 TCN(Topology Change Notification) BPDU가 있음.

스위치에서는 Configuration BPDU를 2초마다 전송하여 Root Switch를 선출하고, 스위치의 포트 역할을 결정하고 BPDU를 인접 스위치에 중계한다.

Configuration BPDU에는 Root ID, 경로 값(Root Path) Port ID등이 포함되어 있다.

 

3. 동작 방식

3-1. Root Switch / Root Port 선출

스위치들의 우선순위(priority) 값이 제일 낮은 스위치가 Root Switch가 됨.

스위치들의 우선순위(priority) 값이 같다고 하면 MAC Address의 값이 낮은 스위치가 Root Switch 됨.

Root Switch가 아닌 스위치들(Non Root Switch)은 무조건 하나의 Root Port를 같고 이는 Root Bridge에 가장 인접한 Port로 선출이 됨.

 

3-2. Designated Port 선출

STP의 실제적인 Designated Port(지정 포트)를 선출하여 차단(Block)할 포트를 정함.

Root Switch로 선출된 스위치의 포트들은 기본적으로 Designated Port로 정해짐.

Non Root Switch들은 Root Switch와 인접한 포트를 Root Port로 선출하고 cost 값을 비교하여 더 낮은 cost 값의 포트를 Designated Port로 선출함.

cost 값도 같다면 Bridge ID, Bridge ID도 같다면 Port ID를 비교해서 차단(Block) 처리하게 됨.

 

3-3. Alternate Port 선출

Root Port도 Designated Port도 아닌 포트인 Alternate Port(대체 포트)는 항상 차단되는 포트임.

 

4. STP 상태 변화

  1. Disabled (비활성)
    - 포트가 고장 나서 사용할 수 없거나 관리자가 일부러 Port Shutdown 시킨 상태

  2. Blocking (차단)
    - 스위치를 맨 처음 키거나 Disable 되어 있는 포트를 관리자가 다시 살렸을 때의 상태
    - BPDU를 스위치 간 정보를 주고받을 수 있는 상태
  3. Listening (청취)
    - Blocking 되어 있는 포트가 Root Port나 Designated Port로 선정되면서 리스닝 상태로 넘어감
    - Listening 상태에서도 BPDU만 주고받을 수 있고, 새로운 포트가 인식되면 구성 값들이 바뀌면서 다시 Blocking 상태로 변경될 수 있음

  4. Learning (학습)
    - Listening 상태에서 15초 유지하면 Learning 상태로 바뀜
    이때부터는 BPDU와 MAC Address 정보를 주고 받을 수 있음

  5. Forwarding (전송)
    - 스위치 포트가 Learning 상태에서 다른 상태로 넘어가지 않고 15초를 유지한다면 Forwarding 상태로 넘어감
    - Forwarding 상태에서는 BPDU, MAC Address 그리고 Data 프레임까지 주고받으면서 통신을 시작함

 

 

 

5. STP Convergence Time

STP Convergence Time(STP 수렴 시간) : 토폴로지 변화가 일어났을 때 이를 반영하여 네트워크가 재구성될 때까지 소요되는 시간

STP가 가지는 단점 중 하나가 컨버전스 시간이 너무 길다는 것임

별도의 조정이 없으면 장애 발생 시 이중화가 되어있어도 30초 또는 50초 동안 네트워크 다운 상태가 지속됨

 

5-1. PortFast

포트가 활성화되면 바로 전송상태가 되게하는 것

종단장치와 연결된 포트에 많이 설정함

 

5-2. UplinkFast

직접 연결된 링크가 다운되었을 때 차단상태에 있는 포트를 즉시 전송상태로 변경시키는 역할

종단(Access) 스위치에 설정해야 함. 왜냐하면 루트 스위치는 차단상태에 있는 포트가 없기 때문에 UplinkFast를 설정해도 효과가 없음

 

5-3. BackboneFast

직접 접속되어 있지 않은 간접 링크가 다운되었을 때, 차단상태의 포트에서 맥스 에이지를 생략하고 청취상태로 변경시킴

결과적으로 링크 다운시의 기본적인 STP 컨버전트 시간인 50초를 30초로 단축 시킴

 

6. STP 종류

6-1. CST (Common Spanning Tree)

물리적인 네트워크 연결을 기반으로 하나의 Port를 Block 시켜 루프 방지

 

6-2. PVST (Per Vlan Spanning Tree)

VLAN 별로 하나의 Port를 Block 시킴

Cisco 전용 프로토콜, CST와 호환되지 않음

 

6-3. PVST+

PVST의 확장판

802.1q 트렁크 방식 지원

Cisco 전용 프로토콜, CST와 호환됨

 

6-4. RSTP

STP의 진화형

빠른 수렴 속도를 가짐

 

6-5. PVRST

Cisco에서 만든 RSTP의 확장판

 

6-6. MSTP (Multiple Spanning Tree Protocol)

여러 개의 VLAN을 그룹으로 묶어 STP를 동작시킴

VLAN 개수가 많을수록 비례하여 일반적인 PVST는 BPDU를 전송하기 때문에 트래픽 부하가 발생

MSTP는 VLAN을 그룹으로 BPDU를 보내기 때문에 트래픽의 부하가 적음

 

7. STP 실습

위와 같은 토폴로지와 우선순위를 부여한다.

# Switch0
(config)# spanning-tree vlan 1 priority 0

# Switch1
(config)# spanning-tree vlan 1 priority 4096

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

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

 

위와 같은 구조일 때 선출 포트는 아래와 같을 것이다.

  • Switch0 : [ Fa0/1: DP, Fa0/2: DP ]
  • Switch1 : [ Fa0/1: RP, Fa0/2: DP ]
  • Switch2 : [ Fa0/1: RP, Fa0/2: DP ]
  • Switch3 : [ Fa0/1: RP, Fa0/2: AP ]

show spanning-tree vlan 1 명령어를 치면 STP 설정한 것을 확인할 수 있다.

 

Switch0

 

Switch1

 

Switch2

 

Switch3

 

'Network > 네트워크 일반' 카테고리의 다른 글

VLAN (Virtual Local Area Network)  (0) 2025.07.06
IPv4  (0) 2025.07.03