스패닝 트리 프로토콜(STP·RSTP·MSTP)
1. 개요
가. 정의
스패닝 트리 프로토콜(STP, Spanning Tree Protocol) 은 물리적으로 루프(loop)가 존재하는 L2 이더넷 스위치 망에서, 일부 포트를 논리적으로 차단(blocking)해 단 하나의 루프 없는 트리 토폴로지를 자동으로 계산·유지하는 IEEE 802.1D 표준 프로토콜이다. 그래프 이론의 신장 트리(spanning tree) 개념을 네트워크에 적용해, 모든 스위치가 연결되면서도 사이클이 없는 경로 집합을 만들어 L2 루프로 인한 브로드캐스트 폭주를 원천 차단한다.
나. 등장 배경과 필요성
이더넷은 가용성을 위해 스위치 간 회선을 이중·삼중으로 연결하는데, L2 프레임에는 IP 패킷의 TTL 같은 수명 필드가 없다. 따라서 루프가 존재하면 브로드캐스트·목적지 미상 유니캐스트 프레임이 끝없이 순환하며 기하급수적으로 증식하는 브로드캐스트 스톰(broadcast storm) 이 발생한다. 동시에 같은 프레임이 여러 경로로 돌아와 MAC 주소 테이블이 요동치는 MAC 플래핑(flapping) 이 일어나 스위치의 CPU·대역폭이 수 초 만에 마비된다.
실제로 단 하나의 잘못 연결된 케이블이 전사 네트워크를 다운시킨 장애 사례가 반복되면서, 1990년 Radia Perlman이 고안한 STP가 IEEE 802.1D로 표준화되어 이더넷 L2 이중화의 사실상 전제 조건이 되었다. 예컨대 액세스 스위치 두 대를 분배 스위치 두 대에 각각 교차 연결한 평범한 이중화 구성조차, STP가 없으면 네 개의 링크가 하나의 폐회로를 이루어 그 자체로 스톰의 씨앗이 된다. STP는 이런 토폴로지에서 네 링크 중 하나를 자동으로 재워 두어 평상시 무루프를 보장한다.
표준의 변천도 짚어둘 만하다. 최초 802.1D(1990)가 기본 STP를 정의했고, 빠른 수렴을 위한 RSTP가 802.1w(2001)로 분리 표준화되었다가 802.1D-2004에 다시 통합되었으며, VLAN별 다중 트리를 위한 MSTP는 802.1s(2002)로 나온 뒤 802.1Q에 흡수되었다. 따라서 오늘날 "802.1D"라고 하면 대개 RSTP를 포함한 2004년판을 가리키며, 신규 장비는 기본적으로 RSTP 이상의 동작을 지원한다.
STP의 본질은 물리적 이중화(가용성)와 논리적 무루프(안정성)라는 상충하는 요구를 조정하는 데 있다. 장애 대비를 위해 회선은 중복으로 깔되, 평상시에는 그 중 일부를 차단해 트리를 유지하다가, 활성 경로가 끊기면 차단했던 포트를 다시 살려 우회 경로로 전환한다. 즉 STP는 "여분의 경로를 평소엔 재워 두었다가 필요할 때 깨우는" 자가 치유형 L2 토폴로지 관리 메커니즘이며, 이 수렴 속도와 대역폭 효율을 개선해 온 역사가 곧 STP → RSTP → MSTP의 진화 과정이다.
2. 전체 구조 — 브리지 토폴로지와 루트 중심 트리
flowchart TB
R["루트 브리지<br/>(최소 Bridge ID)"]
B2["스위치 B"]
B3["스위치 C"]
B4["스위치 D"]
R ---|"지정 포트(DP)"| B2
R ---|"지정 포트(DP)"| B3
B2 ---|"루트 포트(RP)"| R
B3 ---|"루트 포트(RP)"| R
B2 --- B4
B3 --- B4
B4 ---|"루트 포트(RP)"| B2
B4 -. "차단 포트(Blocking)<br/>루프 제거" .- B3
style R fill:#fef3e8,stroke:#ed8f2f,stroke-width:3px
style B4 fill:#e8f0fe,stroke:#2f6fed
STP가 트리를 세우는 기준점은 루트 브리지(Root Bridge) 다. 모든 스위치는 서로 BPDU(Bridge Protocol Data Unit) 라는 제어 프레임을 2초마다(Hello) 교환하며, 이 안에 담긴 Bridge ID(2바이트 우선순위 + 6바이트 MAC 주소, 총 8바이트)를 비교해 가장 작은 값을 가진 스위치를 망 전체의 유일한 루트로 선출한다. 우선순위 기본값은 32768이며, 값이 같으면 MAC 주소가 작은 쪽이 이긴다.
루트는 트리의 정점이자 모든 경로 계산의 원점이 되므로, 실무에서는 코어·분배 계층의 안정된 스위치에 우선순위를 낮게(예: 4096) 수동 설정해 의도한 스위치가 반드시 루트가 되도록 고정하는 것이 원칙이다. 루트를 지정하지 않으면 공장 출고 상태의 MAC이 가장 낮은 노후 장비가 우연히 루트가 되어, 트래픽이 느린 구석 스위치로 쏠리는 비효율이 흔히 발생한다.
루트가 정해지면 나머지 비(非)루트 스위치는 자신에게서 루트까지 누적 경로 비용(Path Cost) 이 가장 낮은 포트 하나를 루트 포트(Root Port) 로 선택한다. 경로 비용은 링크 속도의 역수 개념으로, IEEE 표준값(short 방식)으로 10Mbps=100, 100Mbps=19, 1Gbps=4, 10Gbps=2이며, 느린 회선일수록 비용이 커 트리에서 배제되기 쉽다. 10G 이상이 흔해지면서 16비트로는 구분이 어려워져, 1Gbps=20000·10Gbps=2000처럼 더 넓은 범위를 쓰는 32비트 long 방식도 병행 표준화되었다.
각 LAN 세그먼트마다는 루트까지 비용이 가장 낮은 스위치가 그 세그먼트를 대표하는 지정 포트(Designated Port) 를 갖고, 루트 포트도 지정 포트도 아닌 나머지 포트는 차단(Blocking) 되어 프레임을 중계하지 않는다. 바로 이 차단 포트가 물리적 루프를 끊어 트리를 완성한다. 중요한 점은 차단 포트도 죽은 것이 아니라 BPDU는 계속 수신하며 트리를 감시하다가, 활성 경로가 끊기면 즉시 승격되어 우회로가 된다는 것이다.
주요 구성요소를 정리하면 다음과 같다.
| 요소 | 역할 | 비고 |
|---|---|---|
| BPDU | 스위치 간 토폴로지 정보 교환 프레임 | Configuration BPDU·TCN BPDU, Hello 2초 |
| Bridge ID | 루트 선출 기준(우선순위+MAC) | 작을수록 우선, 기본 우선순위 32768 |
| 루트 브리지 | 트리의 정점, 경로 계산 원점 | 망 전체에 1개 |
| 루트 포트(RP) | 루트로 가는 최소 비용 포트 | 비루트 스위치마다 1개 |
| 지정 포트(DP) | 세그먼트 대표 포트(프레임 중계) | 세그먼트마다 1개 |
| 차단 포트 | 루프 제거를 위해 중계 중단 | 활성 경로 장애 시 재활성 |
BPDU는 역할에 따라 두 종류로 나뉜다. 평상시 루트가 Hello 주기마다 하향 전파하는 Configuration BPDU는 루트 ID·경로 비용·송신 Bridge ID·타이머 값을 실어 트리를 유지시킨다. 반면 어느 스위치의 포트 상태가 바뀌면(링크 다운·업) 해당 스위치는 루트 방향으로 TCN(Topology Change Notification) BPDU를 올려 보내고, 루트는 이를 받아 TC 플래그를 세운 Configuration BPDU를 망 전체로 내려보낸다.
이 토폴로지 변경 알림이 중요한 이유는 MAC 학습 정보의 일관성 때문이다. TC를 수신한 스위치들은 MAC 주소 테이블의 에이징 타이머를 기본 300초에서 Forward Delay(15초)로 단축해, 구(舊)경로에 묶인 낡은 MAC 학습 정보를 빠르게 비우고 새 토폴로지에 맞춰 재학습하도록 한다. 이 TC 전파 범위가 넓을수록 재학습에 따른 일시적 플러딩이 커지므로, L2 도메인을 작게 유지하는 것이 운영 안정성의 핵심이다.
3. 수렴 과정과 포트 상태 전이
stateDiagram-v2
[*] --> Blocking: 포트 UP
Blocking --> Listening: 지정/루트 포트로 선정
Listening --> Learning: Forward Delay 15초
Learning --> Forwarding: Forward Delay 15초
Forwarding --> Blocking: 토폴로지 변경 또는 루프 감지
note right of Listening: BPDU만 처리, 프레임·MAC 학습 중단
note right of Learning: MAC 학습 시작, 프레임 중계는 아직 안함
STP의 수렴은 네 단계의 결정을 거친다.
가. 루트 브리지 선출. 포트가 켜지면 모든 스위치는 자신을 루트로 가정한 BPDU를 내보내다가, 더 작은 Bridge ID를 들으면 그 쪽을 루트로 인정하고 자신의 BPDU 전파를 멈춘다. 수 교환 만에 망 전체가 단일 루트에 합의하며, 이 과정에서 최초 우선순위 설정 실수가 가장 흔한 사고 원인이므로 설계 단계에서 루트·백업 루트의 우선순위를 명시적으로 지정해야 한다. 백업 루트에는 루트보다 한 단계 낮은 우선순위(예: 8192)를 부여해, 루트 장애 시 예측 가능한 스위치가 승계하도록 설계한다.
나. 루트 포트 선출. 각 비루트 스위치는 수신한 BPDU에 자신의 포트 비용을 더해 루트까지의 누적 비용을 계산하고, 최소 비용 포트를 루트 포트로 정한다. 비용이 동률이면 송신 측의 Bridge ID, 다음으로 포트 ID(우선순위+포트번호)로 결정한다. 예컨대 접속 스위치가 1Gbps 직결(비용 4)과 100Mbps 우회(비용 19)를 함께 가지면 1Gbps 쪽이 루트 포트가 되고 100Mbps 쪽은 대기로 밀린다.
다. 지정 포트 선출. 두 스위치가 맞물린 세그먼트에서는 루트까지 비용이 낮은 쪽이 지정 포트를 가지며, 비용이 같으면 Bridge ID가 작은 쪽이 이긴다. 루트 포트도 지정 포트도 되지 못한 포트는 차단되어 트리에서 제외된다. 결과적으로 모든 세그먼트에는 정확히 하나의 지정 포트가 존재하고, 모든 비루트 스위치에는 정확히 하나의 루트 포트가 존재하는 것이 올바른 수렴 상태다.
라. 포트 상태 전이와 타이머. 전통 STP는 포트를 Blocking → Listening → Learning → Forwarding 순으로 전이시키는데, Listening·Learning에 각각 Forward Delay 15초가 소요되고, 차단 포트가 장애를 감지하는 데 Max Age 20초가 걸려, 최악의 경우 30~50초의 서비스 단절이 발생한다. 이 "분(分) 단위에 가까운" 수렴 지연은 VoIP·실시간 서비스에서 치명적이어서, 포트 상태를 Discarding·Learning·Forwarding 3단계로 축소하고 제안/동의(Proposal/Agreement) 핸드셰이크로 즉시 전환하는 RSTP(802.1w) 가 등장해 1초 이내 수렴을 달성했다.
전통 STP가 사용하는 기본 타이머와 그로 인한 수렴 지연을 정리하면 다음과 같다. 이 타이머들은 루트가 BPDU로 전파하므로 망 전체가 루트의 값을 따르며, 임의로 줄이면 전파 지연이 큰 망에서 오탐·불안정을 유발하므로 함부로 조정하지 않는 것이 원칙이다.
| 타이머 | 기본값 | 의미 | 영향 |
|---|---|---|---|
| Hello Time | 2초 | BPDU 전송 주기 | 장애 감지 민감도 |
| Max Age | 20초 | BPDU 미수신 시 정보 폐기 대기 | 간접 장애 감지 |
| Forward Delay | 15초 | Listening·Learning 각 단계 체류 | 전환 지연의 주원인 |
| 수렴(직접 장애) | 약 30초 | Listening 15 + Learning 15 | 2단계 전이 |
| 수렴(간접 장애) | 약 50초 | Max Age 20 + 30 | 차단 포트 승격 |
RSTP의 빠른 전환은 단순한 타이머 단축이 아니라 포트 역할의 세분화에 기반한다. RSTP는 기존 RP/DP 외에 즉시 승격 가능한 대기 역할로 Alternate 포트(루트로 가는 대체 경로)와 Backup 포트(같은 세그먼트의 예비)를 명시적으로 유지한다. 그래서 루트 포트가 끊기면 타이머를 기다리지 않고 Alternate를 곧바로 Forwarding으로 올려 사실상 무중단에 가까운 전환을 실현한다. 포트 역할과 상태의 대응을 전통 STP와 비교하면 다음과 같다.
| 구분 | 전통 STP | RSTP |
|---|---|---|
| 상태 수 | 5(Disabled 포함) | 3 |
| 활성 상태 | Blocking/Listening/Learning/Forwarding | Discarding/Learning/Forwarding |
| 대기 역할 | 없음(Blocking으로 통칭) | Alternate·Backup 명시 |
| 전환 방식 | 타이머 만료 | Proposal/Agreement 핸드셰이크 |
| 엣지 포트 | 별도 기능(PortFast) | 표준 내장(Edge Port) |
4. STP·RSTP·MSTP 비교
세 표준의 차이는 단순한 버전업이 아니라 "수렴 속도"와 "VLAN 확장성"이라는 두 축에서 서로 다른 문제를 푼 결과다. RSTP는 전환 속도를, MSTP는 대규모 VLAN 환경의 제어 부하를 겨냥한다.
| 구분 | STP(802.1D) | RSTP(802.1w) | MSTP(802.1s) |
|---|---|---|---|
| 수렴 시간 | 30~50초 | 1초 이내 | 1초 이내(RSTP 기반) |
| 포트 상태 | 5단계 | 3단계(Discarding/Learning/Forwarding) | 3단계 |
| 포트 역할 | RP/DP | RP/DP/Alternate/Backup | RP/DP/Alternate/Backup |
| VLAN 처리 | 전체 단일 트리(CST) | 단일 트리 | 다수 VLAN→소수 인스턴스(MSTI) |
| 주 용도 | 레거시 | 소·중 규모 | 수백 VLAN 대규모 캠퍼스 |
전통 STP는 망 전체에 트리를 하나(CST)만 두어 모든 VLAN이 동일 경로를 쓰므로, 차단된 이중화 링크가 평상시 전혀 활용되지 못해 대역폭의 절반 가까이를 낭비하는 구조적 한계가 있었다. Cisco의 PVST+는 VLAN마다 트리를 따로 돌려 부하를 분산했지만, VLAN이 수백 개면 그만큼 BPDU·CPU 부담이 폭증했다.
MSTP(802.1s) 는 여러 VLAN을 소수의 MST 인스턴스(MSTI) 에 묶어, 예컨대 VLAN 1500은 인스턴스1(루트=스위치A), 5011000은 인스턴스2(루트=스위치B)로 나눠 두 트리로 이중화 링크를 양쪽 다 활성화하면서도 제어 오버헤드는 인스턴스 수만큼으로 억제한다. 이렇게 "속도는 RSTP, 확장성은 MSTP"로 역할이 분담되어, 실무에서는 대개 Rapid-PVST+ 또는 MSTP를 기본 채택한다. 다만 MSTP는 같은 MST 리전(region) 에 속하려면 리전 이름·리비전·VLAN-인스턴스 매핑이 모든 스위치에서 완전히 일치해야 하므로, 매핑 불일치로 리전이 쪼개지면 의도와 달리 단일 트리로 되돌아가는 함정이 있다.
구체적인 사례로, 어느 대학 캠퍼스가 건물 10개를 각 2개의 분배 스위치로 이중 연결하고 VLAN 600개를 운영하는 상황을 보자. 전통 STP(CST)만 쓰면 건물마다 이중 링크 중 하나(총 10개 링크)가 상시 차단되어 수십 Gbps의 이중화 대역폭이 잠자게 된다. 이를 MSTP로 바꿔 VLAN 1300을 인스턴스1(루트=분배A), 301600을 인스턴스2(루트=분배B)로 분리하면, 인스턴스1에서 차단되던 링크가 인스턴스2에서는 활성 경로가 되어 두 상향 링크를 모두 사용하게 된다. 결과적으로 가용 대역폭이 실질적으로 2배가 되고, 분배 스위치 한 대가 죽어도 다른 인스턴스 트래픽은 그대로 흐른다. 반면 PVST+로 VLAN 600개의 트리를 각각 돌렸다면 BPDU·연산 부하가 600배가 되어 스위치 CPU가 한계에 부딪혔을 것이다. 바로 이 지점이 MSTP가 대규모 캠퍼스에서 선택되는 실무적 이유다.
안정 운영을 위한 보호 기능도 함께 이해해야 한다. 단말이 붙는 액세스 포트는 PortFast로 Listening/Learning을 건너뛰어 즉시 Forwarding시키되, 그런 포트가 BPDU를 받으면(스위치가 잘못 연결된 상황) BPDU Guard가 포트를 즉시 차단(err-disable)해 루프를 예방한다. 또 외부에서 더 낮은 Bridge ID의 BPDU가 들어와 루트가 탈취되는 것을 막는 Root Guard, 단방향 링크 장애로 차단 포트가 BPDU를 못 받아 잘못 Forwarding되는 것을 막는 Loop Guard·UDLD가 대표적이다. 이들 보호 기능 없이 운영되는 L2 망은 사실상 시한폭탄에 가깝다.
5. 심화 — 데이터센터에서 STP의 쇠퇴와 L3 팹·VXLAN-EVPN으로의 전환
STP는 캠퍼스·지사망에서는 여전히 현역이지만, 동서(East-West) 트래픽이 지배적인 현대 데이터센터에서는 급격히 밀려나고 있다. 근본 원인은 ①이중화 링크 절반을 차단해 대역폭을 낭비하고, ②단일 루트 중심 구조라 트래픽이 코어로 쏠리며, ③토폴로지 변경 시 수렴 중 서비스가 흔들리는 블래스트 반경(blast radius) 문제 때문이다. 하나의 L2 도메인이 커질수록 한 번의 토폴로지 변경이 전체로 전파되어, 장애 영향 범위를 가두기 어렵다는 점이 운영상 가장 큰 부담이었다.
이에 업계는 L2 멀티패스를 L2 안에서 해결하려는 TRILL(RFC 6325) 과 SPB(802.1aq) 를 과도기적으로 시도했으나, 결국 "L2를 작게 가두고 L3로 확장한다" 는 방향으로 수렴했다. TRILL·SPB는 STP의 단일 트리 한계를 IS-IS 기반 최단 경로 다중화로 극복했지만, 기존 장비 호환성과 생태계 부족으로 주류가 되지 못했다.
오늘날 표준 설계는 리프-스파인(Clos) 팹을 순수 L3로 구성하고 모든 링크를 ECMP로 동시 활성화한 뒤, 테넌트에게 필요한 L2 연결성은 VXLAN 오버레이로, 그 제어는 BGP EVPN 컨트롤 플레인으로 제공하는 것이다. 이 구조에서는 STP가 차단하던 이중 경로를 모두 포워딩에 쓰므로 가용 대역폭이 2배가 되고, 장애 수렴도 라우팅 프로토콜(수십 ms~수백 ms)로 처리된다.
서버 이중 연결(dual-homing) 역시 STP 차단 대신 MLAG/vPC로 두 상단 스위치를 하나처럼 묶어 양쪽 링크를 다 쓴다. 다만 MLAG 환경에서도 두 피어 스위치 사이에는 여전히 STP(또는 EVPN의 중복 방지 메커니즘)가 최후의 안전망으로 돌아, 제어 평면 장애로 피어가 분리(split-brain)되었을 때 루프가 형성되는 최악의 상황을 막는다. 즉 현대 설계에서도 STP는 "주 경로 제어자"에서 "루프에 대한 최종 안전장치"로 역할이 바뀌어 잔존한다.
정리하면 STP는 사라진 것이 아니라 적용 영역이 "작은 L2 도메인·캠퍼스"로 축소되고, 데이터센터의 다중경로 과제는 L3 라우팅과 오버레이가 넘겨받은 것이다. 기술사 답안에서는 이 "L2 STP → L3 팹 + 오버레이" 전환 맥락과, 그럼에도 STP가 안전망으로 남는다는 점을 함께 서술하는 것이 최신 동향 반영에 유효하다.
6. 고려사항 및 시사점(기술사 관점)
- 루트 설계의 명시적 고정: 루트·백업 루트 우선순위를 반드시 수동 지정(예: 4096/8192)하고, PortFast·BPDU Guard를 액세스 포트 표준으로 삼아야 한다. 자동 선출에 맡기면 MAC이 가장 낮은 노후 스위치가 루트가 되어 트래픽이 엉키는 사고가 흔하다.
- 수렴 속도와 서비스 수준의 트레이드오프: 실시간 서비스가 있으면 전통 STP(30~50초)는 부적합하므로 RSTP/Rapid-PVST+를 기본화하되, 보호 기능(Loop Guard·UDLD) 미적용 시 빠른 수렴이 오히려 루프를 빠르게 확산시킬 수 있음을 함께 고려한다.
- 대역폭 효율 vs 운영 복잡도: MSTP·PVST+로 이중화 링크를 살리면 대역폭은 늘지만 VLAN-인스턴스 매핑, 리전 경계 설정이 복잡해진다. VLAN 수·조직 규모에 맞춰 단일 트리와 다중 인스턴스를 선택적으로 적용해야 한다.
- 아키텍처 전환 전략: 신규 데이터센터는 STP 의존 L2 확장 대신 L3 리프-스파인 + VXLAN-EVPN을 기본안으로 검토하고, 기존 L2 망은 도메인을 분할(작은 L2 + L3 분리)해 블래스트 반경을 줄이는 점진적 전환이 바람직하다.
- 보안 위협 대응: 공격자가 낮은 Bridge ID의 위조 BPDU를 주입해 루트를 탈취하면 트래픽을 자신에게 끌어와 도청(MITM)할 수 있으므로, Root Guard·BPDU Guard·BPDU Filter를 경계 포트에 강제하고 사용자 포트에서의 BPDU 수신을 원천 차단하는 것을 보안 기준선으로 삼아야 한다.
- 연계 기술 관점: STP 이해는 VXLAN·EVPN·MLAG·SDN(오픈플로 기반 중앙 집중 L2 제어)·마이크로세그멘테이션 설계의 전제가 되므로, 단일 프로토콜이 아니라 L2 가용성 설계의 출발점으로 학습해야 한다.
참고자료
- IEEE 802.1D-2004, "Media Access Control (MAC) Bridges", https://standards.ieee.org/standard/802_1D-2004.html
- IEEE 802.1Q-2018 (MSTP 포함), https://standards.ieee.org/standard/802_1Q-2018.html
- IETF RFC 6325, "Routing Bridges (RBridges): Base Protocol (TRILL)", https://www.rfc-editor.org/rfc/rfc6325
- IETF RFC 7432, "BGP MPLS-Based Ethernet VPN (EVPN)", https://www.rfc-editor.org/rfc/rfc7432
한 줄 요약: STP(802.1D)는 L2 이더넷 루프를 막기 위해 루트 브리지 중심의 무루프 트리를 자동 계산하고 여분 포트를 차단하는 프로토콜로, 느린 수렴(30~50초)과 대역폭 낭비를 RSTP(802.1w, 1초 이내)·MSTP(802.1s, 다중 인스턴스)가 개선했으며, 동서 트래픽 중심의 현대 데이터센터에서는 L3 리프-스파인 팹과 VXLAN-EVPN·MLAG로 그 역할이 재편되고 있다.