📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 170편
이전 글: 169. Collision Domain · 다음 글: 171. Router의 Routing Table

1. 개념

스위치를 이중으로 연결하면 한 링크가 끊겨도 통신이 유지됩니다. 하지만 L2에는 IP의 TTL 같은 수명 값이 없어서, 경로가 고리(루프)를 이루면 브로드캐스트 프레임이 끝없이 돌며 복제됩니다. 그 결과 브로드캐스트 폭주(168. Broadcast Domain), MAC 테이블 흔들림(Flapping), 중복 프레임이 생겨 네트워크가 마비됩니다.

STP(Spanning Tree Protocol, IEEE 802.1D) 는 스위치들이 서로 정보를 교환해 루프가 생기는 포트 일부를 논리적으로 막고, 나머지로 나무(Tree) 모양의 경로만 남기는 프로토콜입니다. 막힌 포트는 활성 경로가 끊기면 다시 열려 이중화 역할을 합니다.

버전표준특징
STPIEEE 802.1D수렴에 30~50초
RSTPIEEE 802.1w (현재 802.1D에 통합)수 초 이내 수렴, 대부분 장비의 기본
MSTPIEEE 802.1s (현재 802.1Q에 통합)여러 VLAN을 묶어 인스턴스별 트리 구성
PVST+ / Rapid PVST+Cisco 방식VLAN마다 별도 트리

2. 동작 원리

STP는 세 단계로 트리를 만듭니다.

① 루트 브리지 선출
   모든 스위치가 BPDU를 교환 → Bridge ID가 가장 작은 스위치가 루트
   Bridge ID = 우선순위(기본 32768) + MAC 주소 (우선순위가 같으면 MAC이 작은 쪽)
     ↓
② 각 스위치의 루트 포트(Root Port) 선택
   루트까지의 경로 비용 합이 가장 작은 포트 1개
     ↓
③ 각 링크의 지정 포트(Designated Port) 선택
   링크마다 루트에 더 가까운 쪽 포트 1개
     ↓
나머지 포트 → 차단(Blocking / RSTP에서는 Alternate·Backup 역할, Discarding 상태)

Cisco PVST+ 계열은 우선순위에 VLAN 번호를 더한 값(확장 시스템 ID)을 표시합니다. 예를 들어 기본 우선순위의 VLAN 10은 32768 + 10 = 32778로 보입니다. 우선순위는 4096 단위로만 바꿀 수 있습니다.

링크 속도별 경로 비용(802.1D 기존 값, Cisco 기본)입니다.

링크 속도경로 비용
10 Mbps100
100 Mbps19
1 Gbps4
10 Gbps2

3. 주요 특징

802.1D의 포트 상태와 기본 타이머입니다.

상태BPDU 처리MAC 학습프레임 전달비고
Blocking수신만XX루프 방지로 막힌 포트
Listening송수신XXForward Delay 15초
Learning송수신OXForward Delay 15초
Forwarding송수신OO정상 전달
DisabledXXX관리자가 끈 포트

타이머는 Hello 2초(BPDU 송신 주기), Max Age 20초(BPDU를 못 받으면 정보 폐기), Forward Delay 15초입니다. 그래서 기존 STP는 장애 후 전달 재개까지 최대 약 50초가 걸릴 수 있고, 이를 줄인 것이 RSTP입니다.

BPDU(Bridge Protocol Data Unit) 는 STP 정보를 담은 프레임입니다.

항목값
목적지 MAC (IEEE STP/RSTP/MSTP)01:80:c2:00:00:00
목적지 MAC (Cisco PVST+)01:00:0c:cc:cc:cd
주요 내용루트 Bridge ID, 루트까지 비용, 보낸 스위치 Bridge ID, 포트 ID, 타이머, Flag(TC 등)
종류Configuration BPDU, TCN(Topology Change Notification) BPDU, RSTP BPDU

4. 예시

실습 예시 — GNS3 등의 Cisco IOS 계열 스위치에서 STP 상태를 확인하고 루트를 지정하는 명령입니다. 출력은 형식 예시(값은 환경마다 다름, 일부만 표시)입니다.

Switch# show spanning-tree vlan 10

VLAN0010
  Spanning tree enabled protocol rstp
  Root ID    Priority    24586
             Address     000c.29aa.0001
  Bridge ID  Priority    32778  (priority 32768 sys-id-ext 10)

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- ----
Gi0/1            Root FWD 4         128.1    P2p
Gi0/2            Altn BLK 4         128.2    P2p
! 코어 스위치를 VLAN 10의 루트로 고정, 단말 포트 보호
spanning-tree mode rapid-pvst
spanning-tree vlan 10 priority 24576
interface GigabitEthernet0/5
 spanning-tree portfast
 spanning-tree bpduguard enable

실습 예시 — Linux bridge도 STP를 지원합니다(Rocky/Ubuntu 공통, 152. Switch란 무엇인가의 br0 기준, 커널 STP는 802.1D 방식).

sudo ip link set br0 type bridge stp_state 1
bridge -d link show                         # 포트별 state (forwarding/blocking 등)
cat /sys/class/net/br0/bridge/root_id       # 루트 Bridge ID
cat /sys/class/net/br0/bridge/bridge_id     # 자신의 Bridge ID

Wireshark에서는 stp로 BPDU를, stp.flags.tc == 1로 토폴로지 변경 알림이 담긴 BPDU를 골라 볼 수 있습니다.

📷 [실습 화면 삽입 위치] Wireshark에서 stp 필터로 2초 간격 BPDU를 표시하고 Packet Details에서 Root Identifier·Root Path Cost·Bridge Identifier를 펼친 화면


5. 보안 관점

  • STP는 BPDU를 인증하지 않습니다. 단말 포트에서 낮은 우선순위의 BPDU를 보내는 장치가 있으면 루트 브리지가 바뀌어 트래픽 경로가 달라지거나, 반복적인 토폴로지 변경으로 네트워크가 불안정해질 수 있습니다.
  • BPDU Guard: PortFast가 설정된 단말 포트에서 BPDU를 받으면 포트를 err-disable로 차단합니다. 비인가 스위치 연결과 루프도 함께 막습니다.
  • Root Guard: 하위 스위치 방향 포트에서 더 우수한(작은) 루트 정보를 받으면 그 포트를 막아, 루트가 의도한 장비에서 벗어나지 않게 합니다.
  • 루트 브리지는 설계로 정합니다. 기본값으로 두면 MAC이 가장 작은(대개 가장 오래된) 스위치가 루트가 될 수 있습니다.
  • STP를 끄는 것은 해결책이 아닙니다. 실수로 만든 케이블 루프 하나가 전체 VLAN을 마비시킬 수 있습니다.

6. SOC 관점

흔적 (Cisco 계열 메시지 예, 장비마다 다름)의미
%SPANTREE-2-BLOCK_BPDUGUARD단말 포트에서 BPDU 수신 → 포트 차단
%PM-4-ERR_DISABLE (bpduguard 사유)포트가 err-disable 상태로 전환
%SPANTREE-2-ROOTGUARD_BLOCKRoot Guard가 우수한 BPDU를 받아 포트 차단
토폴로지 변경 빈발, MAC Flapping링크 불안정, 루프 또는 비인가 BPDU

관제자가 확인할 질문

  • 루트 브리지가 설계된 코어 스위치와 일치하는가? 최근 루트가 바뀐 적이 있는가?
  • 단말 포트에서 BPDU Guard 차단이 발생했다면, 그 포트에 무엇이 연결되었는가(자리·자산 대장)?
  • 토폴로지 변경이 특정 포트에서 반복되는가?

오탐 주의: 사용자가 소형 스위치나 공유기를 자리에 연결해 BPDU Guard가 동작하는 일은 흔하며, 대부분 악의보다 정책 위반·실수입니다. 다만 차단 이벤트 자체는 비인가 장비 연결의 증거이므로 기록하고 확인합니다.


7. 핵심 정리

  • STP는 이중화된 L2 경로에서 일부 포트를 막아 루프를 없애고, 장애 시 막힌 포트를 다시 엽니다.
  • 루트 브리지는 Bridge ID(우선순위 기본 32768 + MAC)가 가장 작은 스위치이며, 루트 포트·지정 포트를 뺀 나머지가 차단됩니다.
  • 802.1D는 Blocking → Listening → Learning → Forwarding 상태와 Hello 2초·Max Age 20초·Forward Delay 15초 타이머를 씁니다.
  • BPDU의 목적지 MAC은 IEEE 방식 01:80:c2:00:00:00, Cisco PVST+ 01:00:0c:cc:cc:cd이며, RSTP가 수렴 속도를 크게 줄였습니다.
  • BPDU는 인증되지 않으므로 단말 포트에는 BPDU Guard, 하위 방향에는 Root Guard를 적용하고 관련 로그를 관제합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글