들어가며
네트워크 환경에서 스위치들을 연결할 때, 장애 대비를 위해 여러 경로를 구성하는 것은 매우 중요합니다. 하지만 이렇게 다중 경로를 구성하면 브로드캐스트 스톰(Broadcast Storm)과 MAC 주소 테이블 불안정 같은 심각한 문제가 발생할 수 있습니다. STP는 바로 이러한 문제를 해결하기 위해 탄생한 프로토콜입니다.
STP는 물리적으로는 이중화된 경로를 유지하면서도, 논리적으로는 루프가 발생하지 않도록 일부 포트를 차단하여 루프 프리 토폴로지를 구성합니다. 이번 글에서는 STP의 동작 원리부터 다양한 변형 프로토콜, 그리고 실무에서 자주 사용되는 기능들까지 상세히 다뤄보겠습니다.
1. STP가 필요한 이유
Switch 네트워크의 루프 문제
스위치 환경에서 물리적인 루프가 존재하면 다음과 같은 심각한 문제가 발생합니다.
브로드캐스트 스톰(Broadcast Storm)
- 브로드캐스트 프레임이 네트워크 내에서 무한히 순환하면서 대역폭을 모두 소진
- 네트워크 전체가 마비되어 정상적인 통신이 불가능해짐
MAC 주소 테이블 불안정(MAC Address Table Instability)
- 동일한 MAC 주소가 여러 포트에서 학습되면서 테이블이 계속 업데이트됨
- 스위치가 올바른 포트로 프레임을 전달하지 못하게 됨
중복 프레임 수신(Multiple Frame Copies)
- 동일한 유니캐스트 프레임이 여러 경로를 통해 중복 전송됨
- 상위 계층 프로토콜에 혼란을 야기
STP의 목적
STP는 이러한 문제를 해결하기 위해 다음과 같은 목적으로 설계되었습니다.
- 루프 프리 토폴로지 구성: 논리적으로 루프가 없는 트리 구조 생성
- 자동 복구 기능: 링크 장애 시 차단된 포트를 자동으로 활성화하여 경로 복구
- 네트워크 안정성 확보: 브로드캐스트 스톰 방지 및 MAC 테이블 안정성 유지
2. STP 동작 원리
BPDU (Bridge Protocol Data Unit)

STP는 BPDU라는 특수한 프레임을 사용하여 스위치 간에 정보를 교환합니다. BPDU에는 다음과 같은 정보가 포함됩니다.
- Root Bridge ID: 루트 브리지의 우선순위와 MAC 주소
- Path Cost: 루트 브리지까지의 경로 비용
- Sender Bridge ID: BPDU를 전송한 스위치의 ID
- Port ID: BPDU를 전송한 포트의 식별자
BPDU는 기본적으로 2초마다 전송되며, 이를 통해 네트워크 토폴로지 변화를 감지합니다.
STP 선출 과정

STP는 다음 3단계의 선출 과정을 통해 루프 프리 토폴로지를 구성합니다.
1단계: Root Bridge 선출
네트워크 전체에서 하나의 루트 브리지가 선출됩니다. 선출 기준은 다음과 같습니다.
- 가장 낮은 Bridge Priority (기본값: 32768)
- 우선순위가 같으면 가장 낮은 MAC 주소
# Root Bridge 우선순위 설정
config t
spanning-tree vlan 1 priority 4096
2단계: Root Port 선출 🟡

루트 브리지를 제외한 모든 스위치는 루트 포트(Root Port)를 선출합니다. 루트 포트는 루트 브리지로 가는 최적 경로의 포트입니다.
선출 기준:
- 가장 낮은 Root Path Cost (루트까지의 누적 비용)
- 비용이 같으면 가장 낮은 Sender Bridge ID
- 그래도 같으면 가장 낮은 Port ID
Path Cost 기준 (IEEE 802.1D-1998):
- 10 Mbps: 100
- 100 Mbps: 19
- 1 Gbps: 4
- 10 Gbps: 2
3단계: Designated Port 선출 🟣

각 네트워크 세그먼트마다 하나의 지정 포트(Designated Port)가 선출됩니다. 지정 포트는 해당 세그먼트에서 루트 브리지로 프레임을 전달하는 역할을 합니다.
선출 기준:
- 가장 낮은 Root Path Cost를 가진 스위치의 포트
- 비용이 같으면 가장 낮은 Bridge ID를 가진 스위치의 포트
최종 포트 상태
- Root Port: 포워딩 상태 (루트 브리지로 가는 포트)
- Designated Port: 포워딩 상태 (세그먼트를 대표하는 포트)
- Non-Designated Port: 블로킹 상태 (루프 방지를 위해 차단)
STP 포트 상태 전이

STP 포트는 다음과 같은 5가지 상태를 거치며 전이합니다.
Disabled (비활성화)
- 관리자에 의해 수동으로 비활성화된 상태
- 트래픽 전달 및 BPDU 전송/수신 불가
Blocking (차단)
- 루프 방지를 위해 데이터 전송이 차단된 상태
- BPDU만 수신 가능 (전송 불가)
- 최대 20초 동안 유지 (Max Age Timer)
Listening (청취)
- BPDU를 송수신하며 토폴로지 정보를 학습
- 데이터 프레임 전달 불가
- MAC 주소 학습 불가
- 15초 동안 유지 (Forward Delay Timer)
Learning (학습)
- MAC 주소 테이블을 학습하기 시작
- 여전히 데이터 프레임 전달은 불가
- 15초 동안 유지 (Forward Delay Timer)
Forwarding (전달)
- 정상적인 데이터 전달 상태
- BPDU 송수신 및 MAC 주소 학습 가능
상태 전이 시간: Blocking → Listening(15초) → Learning(15초) → Forwarding = 총 30~50초 소요
3. PVST와 RPVST
PVST (Per-VLAN Spanning Tree)
PVST는 Cisco가 개발한 STP 확장 프로토콜로, VLAN마다 독립적인 STP 인스턴스를 운영합니다.
주요 특징:
- 각 VLAN마다 별도의 루트 브리지 선출 가능
- VLAN별로 서로 다른 경로 사용 가능하여 로드 밸런싱 구현
- VLAN 수가 많아질수록 CPU 및 메모리 부하 증가
PVST 설정 예시:
# VLAN 10은 Switch1을 루트로 설정
config t
spanning-tree vlan 10 priority 4096
# VLAN 20은 Switch2를 루트로 설정
config t
spanning-tree vlan 20 priority 4096
이렇게 설정하면 VLAN 10 트래픽은 Switch1을 통해, VLAN 20 트래픽은 Switch2를 통해 전달되어 링크 대역폭을 효율적으로 사용할 수 있습니다.
RPVST (Rapid Per-VLAN Spanning Tree)
RPVST는 PVST에 RSTP(Rapid Spanning Tree Protocol)의 빠른 컨버전스 기능을 결합한 프로토콜입니다.
주요 개선사항:
- 컨버전스 시간 단축: 기존 30-50초 → 수 초 이내
- 포트 상태 단순화: Blocking/Listening → Discarding 상태로 통합
- 포트 역할 추가: Alternate Port, Backup Port 개념 도입
- BPDU 처리 개선: 모든 스위치가 BPDU 생성 및 전송
RPVST 포트 역할:
- Root Port: 루트 브리지로 가는 최적 경로
- Designated Port: 세그먼트를 대표하는 포트
- Alternate Port: 루트 포트의 백업 경로
- Backup Port: 동일 스위치 내 Designated Port의 백업
RPVST 활성화:
# Cisco 스위치는 기본적으로 RPVST 사용
show spanning-tree summary
# 명시적 설정
spanning-tree mode rapid-pvst
4. PortFast
PortFast 개념
PortFast는 엔드 디바이스(PC, 서버 등)가 연결된 포트에서 STP의 Listening과 Learning 단계를 건너뛰고 즉시 Forwarding 상태로 전환하는 기능입니다.
일반적인 문제 상황:
- PC를 부팅하면 네트워크 연결까지 30-50초 소요
- DHCP 타임아웃이나 네트워크 인증 실패 발생 가능
PortFast 사용 시:
- 포트가 활성화되자마자 즉시 통신 가능
- 사용자 경험 개선 및 부팅 시간 단축
PortFast 설정
인터페이스별 설정:
config t
interface FastEthernet0/1
spanning-tree portfast
exit
모든 액세스 포트에 일괄 적용:
config t
spanning-tree portfast default
설정 확인:
show spanning-tree interface FastEthernet0/1 portfast
show running-config interface FastEthernet0/1
PortFast 사용 시 주의사항
절대 Trunk 포트나 스위치 간 연결에 사용 금지
PortFast는 오직 엔드 디바이스가 연결된 Access 포트에만 사용해야 합니다. 스위치 간 연결에 PortFast를 설정하면 STP가 루프를 감지하기 전에 브로드캐스트 스톰이 발생할 수 있습니다.
BPDU Guard와 함께 사용 권장
config t
interface FastEthernet0/1
spanning-tree portfast
spanning-tree bpduguard enable
exit
BPDU Guard는 PortFast가 설정된 포트에서 BPDU가 수신되면 해당 포트를 즉시 err-disabled 상태로 전환하여 루프를 방지합니다.
5. BPDU Guard와 BPDU Filter
BPDU Guard
BPDU Guard는 PortFast가 설정된 포트에서 BPDU가 수신되면 해당 포트를 자동으로 차단하는 보안 기능입니다.
동작 방식:
- PortFast 포트에서 BPDU 수신 감지
- 포트를 즉시 err-disabled 상태로 전환
- 관리자가 수동으로 복구하거나 자동 복구 설정 필요
설정 방법
# 인터페이스별 설정
config t
interface FastEthernet0/1
spanning-tree bpduguard enable
exit
# 전역 설정 (PortFast 포트에 자동 적용)
spanning-tree portfast bpduguard default
자동 복구 설정
config t
errdisable recovery cause bpduguard
errdisable recovery interval 300
BPDU Filter
BPDU Filter는 특정 포트에서 BPDU 송수신을 완전히 차단하는 기능입니다.
사용 시나리오:
- 특정 포트에서 STP를 완전히 비활성화해야 하는 경우
- 서비스 프로바이더 경계에서 고객 BPDU 차단
설정 방법
# 인터페이스별 설정
config t
interface FastEthernet0/1
spanning-tree bpdufilter enable
exit
# 전역 설정 (주의: PortFast 포트에만 적용)
spanning-tree portfast bpdufilter default
BPDU Guard vs BPDU Filter 비교
| 항목 | BPDU Guard | BPDU Filter |
|---|---|---|
| 기능 | BPDU 수신 시 포트 차단 | BPDU 송수신 차단 |
| 보안성 | 높음 | 낮음 (루프 위험) |
| 권장 용도 | 엔드 디바이스 포트 보호 | 특수한 경우에만 사용 |
| 복구 | 수동 또는 자동 복구 필요 | 해당 없음 |
6. Loop Guard
Loop Guard 개념
Loop Guard는 BPDU를 수신하다가 갑자기 수신하지 못하는 상황에서 포트가 잘못 Forwarding 상태로 전환되어 루프가 발생하는 것을 방지하는 기능입니다.
문제 상황:
- 단방향 링크 장애로 BPDU 수신이 중단됨
- STP는 Max Age 타이머 만료 후 해당 포트를 Forwarding으로 전환
- 실제로는 링크가 살아있어 루프 발생
Loop Guard 동작 방식
Loop Guard가 활성화된 포트에서 BPDU 수신이 중단되면:
- 포트를 Forwarding 대신 Loop Inconsistent 상태로 전환
- 데이터 전송 차단 (루프 방지)
- BPDU 수신이 재개되면 자동으로 정상 상태로 복구
Loop Guard 설정
전역 설정 (모든 포인트-투-포인트 링크에 적용):
config t
spanning-tree loopguard default
인터페이스별 설정:
config t
interface GigabitEthernet0/1
spanning-tree guard loop
exit
설정 확인:
show spanning-tree inconsistentports
show spanning-tree interface GigabitEthernet0/1 detail
Root Guard
Root Guard는 Loop Guard와 유사하지만, 의도하지 않은 루트 브리지 변경을 방지하는 기능입니다.
사용 시나리오:
- 코어 스위치가 루트 브리지로 고정되어야 하는 환경
- 액세스 스위치에서 더 낮은 우선순위의 BPDU가 수신되는 것을 차단
설정 방법:
config t
interface GigabitEthernet0/2
spanning-tree guard root
exit
우선순위가 더 낮은 BPDU가 수신되면 포트는 Root Inconsistent 상태로 전환되고, 정상 BPDU가 수신되면 자동 복구됩니다.
마무리 및 정리
STP는 스위치 네트워크에서 루프를 방지하고 안정성을 확보하는 핵심 프로토콜입니다. 물리적 이중화를 통해 장애 대응력을 확보하면서도, 논리적으로는 루프 프리 토폴로지를 유지하여 브로드캐스트 스톰과 같은 치명적인 문제를 예방합니다.
기본 STP는 컨버전스 시간이 길다는 단점이 있지만, RSTP/RPVST를 사용하면 수 초 이내로 단축할 수 있습니다. 또한 PortFast, BPDU Guard, Loop Guard 같은 기능들을 적절히 활용하면 네트워크의 안정성과 보안성을 크게 향상시킬 수 있습니다.
다음 글에서는 EtherChannel (Port Channel)을 통해 여러 물리적 링크를 하나의 논리적 링크로 묶어 대역폭을 확장하고 이중화를 구현하는 방법에 대해 다뤄보겠습니다.
'Network Concepts' 카테고리의 다른 글
| [Network] 무선 네트워크 - Wireless Local Area Network (WLAN) (0) | 2025.11.17 |
|---|---|
| [Network] EtherChannel (Port Channel) - LACP, PAgP (0) | 2025.11.16 |
| [Network] 네트워크 다중화와 FHRP - HSRP, VRRP, GLBP (0) | 2025.11.15 |
| [Network] ROAS - Router On A Stick (0) | 2025.11.15 |
| [Network] EGP와 라우팅 분산 기법 (ECMP, ECLB) (0) | 2025.11.10 |
