SECTION 01도입
현대 엔터프라이즈 네트워크 환경에서 고가용성(High Availability)은 비즈니스 연속성을 보장하기 위한 필수적인 요구 사항입니다. 이를 위해 네트워크 관리자는 스위치 간의 물리적인 경로 이중화를 구성하지만, 이 과정에서 필연적으로 발생하는 네트워크 루프(Network Loop)는 브로드캐스트 스톰(Broadcast Storm)을 유발하여 전체 네트워크를 마비시킬 수 있습니다.
STP(Spanning Tree Protocol)는 이러한 루프 환경에서 논리적으로 특정 경로를 차단하여 데이터의 무한 순환을 방지하는 핵심 프로토콜입니다. 스위치는 BPDU(Bridge Protocol Data Unit)라는 제어 메시지를 교환하며, 전체 토폴로지를 루프가 없는 트리 구조로 유지합니다. 본 가이드에서는 STP의 동작 원리부터 최신 표준인 RSTP/MSTP의 차이점, 그리고 실무에서 반드시 고려해야 할 보안 기능 및 장애 대응 전략을 심층적으로 다룹니다.
SECTION 02핵심 원리: STP의 동작 메커니즘과 포트 상태
STP는 그래프 이론의 스패닝 트리 알고리즘을 기반으로 동작합니다. 모든 스위치는 부팅 시 자신을 루트 브리지로 간주하고 BPDU를 전송하며, 상호 비교를 통해 최적의 토폴로지를 형성합니다.
1. 3단계 선출 프로세스
- 루트 브리지(Root Bridge) 선출: 전체 네트워크의 기준점이 되는 스위치를 선정합니다. Bridge ID(우선순위 + MAC 주소) 값이 가장 낮은 스위치가 루트 브리지가 됩니다.
- 루트 포트(Root Port) 선정: 루트 브리지가 아닌 각 스위치에서 루트 브리지까지 가는 가장 낮은 비용(Path Cost)을 가진 포트를 선정합니다.
- 지정 포트(Designated Port) 선정: 각 네트워크 세그먼트(링크)에서 루트 브리지와 가장 가까운 포트를 선정하여 데이터를 전송하게 합니다.
2. 포트 상태의 변화
레거시 STP(802.1D)는 루프 방지를 위해 포트 상태를 다음과 같이 단계별로 전환합니다 [1].
- Blocking (차단): 데이터 프레임을 전송하지 않고 BPDU만 수신합니다.
- Listening (청취): 루프 여부를 확인하며 MAC 주소를 학습하지 않습니다. (15초)
- Learning (학습): MAC 주소 테이블을 생성하기 시작합니다. (15초)
- Forwarding (전송): 데이터 프레임을 정상적으로 송수신합니다.
- Disabled (비활성): 관리자에 의해 포트가 닫힌 상태입니다.
이러한 단계별 전환은 루프를 확실히 방지하지만, 장애 발생 시 복구까지 약 30~50초가 소요되는 단점이 있습니다. 이를 개선한 RSTP(802.1w)는 제안(Proposal)과 합의(Agreement) 메커니즘을 통해 수렴 시간을 1~2초 내외로 단축시켰습니다.
SECTION 03설계 및 운영: 결정적(Deterministic) 네트워크 구축
실무에서는 장비의 자동 선출에 의존하지 않고, 관리자가 네트워크 흐름을 완벽히 통제할 수 있도록 결정적 설계를 적용해야 합니다.
1. 루트 브리지 우선순위 최적화
네트워크의 중심인 코어 스위치가 항상 루트 브리지가 되도록 설정해야 합니다. 만약 성능이 낮은 액세스 스위치가 루트 브리지가 되면, 모든 트래픽이 해당 스위치로 몰려 병목 현상이 발생합니다.
- Primary Root: 우선순위를
4096으로 설정하여 절대적인 루트 권한 부여. - Secondary Root: 우선순위를
8192으로 설정하여 기본 루트 장애 시 즉시 대체.
2. 다중 인스턴스 설계 (MSTP)
VLAN이 많은 환경에서는 MSTP(Multiple Spanning Tree Protocol, 802.1s)를 사용하여 여러 VLAN을 그룹화하고, 각 그룹별로 다른 루트 브리지를 지정함으로써 부하 분산(Load Balancing)을 실현할 수 있습니다.
3. Cisco IOS 기반 설정 검증 예시
아래는 실무에서 자주 사용되는 STP 설정 명령어입니다. 이는 읽기 전용 검증 또는 격리된 환경에서의 변경 예시로 참고하십시오.
# 글로벌 STP 모드를 Rapid-PVST로 설정
(config)# spanning-tree mode rapid-pvst
# 특정 VLAN에 대해 루트 브리지 지위 부여
(config)# spanning-tree vlan 1,10,20 root primary
# 포트 레벨에서 즉시 전송 모드(PortFast) 활성화
(config-if)# spanning-tree portfast
# 보안을 위해 액세스 포트에 BPDU Guard 활성화
(config-if)# spanning-tree bpduguard enableSECTION 04흔한 장애 및 주의점
STP 운영 중 발생하는 장애는 대개 예외적인 상황이나 오설정에서 비롯됩니다.
- 하위 호환성 이슈: RSTP 환경에 레거시 STP 스위치가 연결되면, 해당 접점 포트는 802.1D 방식으로 동작하여 수렴 속도가 느려집니다. 이는 전체 네트워크의 안정성을 해칠 수 있습니다.
- BPDU Guard vs Filter: BPDU Guard는 비인가 BPDU 수신 시 포트를 차단하여 루프를 막지만, BPDU Filter는 BPDU를 무시합니다. Filter를 잘못 사용하면 루프 감지 기능이 마비되어 대형 장애로 이어질 수 있습니다.
- 단방향 링크 장애: 광케이블의 한쪽 심선만 단선되어 데이터가 한 방향으로만 흐르는 경우, STP는 상대방의 BPDU를 받지 못해 루프가 없다고 오판할 수 있습니다. 이를 방지하기 위해 UDLD(Unidirectional Link Detection)를 반드시 병행 설정해야 합니다 [2].
- CPU 부하에 따른 TCN: 스위치 CPU 점유율이 높으면 BPDU 처리가 누락될 수 있습니다. 이 경우 스위치는 토폴로지가 변했다고 판단하여 TCN(Topology Change Notification)을 발생시키고, 이는 전체 네트워크의 MAC 주소 테이블을 초기화하여 일시적인 플러딩(Flooding)을 유발합니다.
SECTION 05현장 체크리스트: 실무 검증 절차
네트워크 관리자는 정기 점검 시 다음 항목을 확인하여 STP의 건전성을 평가해야 합니다.
| 점검 단계 | 확인 내용 | 관련 명령어 및 도구 |
|---|---|---|
| 1. 모드 확인 | 현재 작동 중인 STP 모드(RSTP/MSTP) 확인 | show spanning-tree summary |
| 2. 루트 확인 | 현재 스위치가 루트 브리지인지, 혹은 올바른 루트를 바라보는지 확인 | show spanning-tree root |
| 3. 상태 분석 | 각 포트의 역할(Root, Desg, Altn)과 상태(FWD, BLK) 검증 | show spanning-tree interface |
| 4. 변경 이력 | 최근 토폴로지 변경 발생 횟수 및 발생 지점 추적 | show spanning-tree detail |
| 5. 보안 검증 | BPDU Guard가 설정된 포트에 비인가 장치 연결 시 차단 여부 테스트 | show interface status |
| 6. 물리 오류 | 인터페이스의 CRC, Input Error 발생 여부 확인 | show interfaces |
| 7. 로그 분석 | Syslog를 통해 STP 관련 Warning 메시지 존재 여부 확인 | show logging |
| 8. 성능 점검 | STP 프로세스의 CPU 점유율이 정상 범위 내에 있는지 확인 | show processes cpu sorted |
SECTION 06관리 가이드: 안정적인 운영을 위한 제언
안정적인 STP 운영을 위해 관리자는 다음의 베스트 프랙티스를 준수해야 합니다.
첫째, 모든 액세스 포트에는 spanning-tree portfast를 적용하여 단말 연결 시 즉시 통신이 가능하도록 하되, 반드시 bpduguard를 함께 설정하여 사용자 실수에 의한 루프를 방지해야 합니다.
둘째, 네트워크 설계 시 트리 구조의 깊이(Diameter)가 7을 넘지 않도록 계층을 관리해야 합니다. 직경이 너무 크면 BPDU 전달 지연으로 인해 타이머 오류가 발생할 수 있습니다.
셋째, 주요 장비 간 연결에는 LACP(Link Aggregation)를 사용하여 물리적 링크 장애가 STP 토폴로지 재계산으로 이어지지 않도록 물리 계층에서 1차적인 보호막을 형성해야 합니다.
또한, 관리자는 정기적으로 네트워크 맵을 최신화하고, show spanning-tree detail 명령어를 통해 예기치 않은 토폴로지 변경(TCN)이 발생하고 있지 않은지 모니터링해야 합니다. 빈번한 TCN은 네트워크 장비의 리소스를 소모하고 성능 저하를 유발하는 주범이기 때문입니다. 마지막으로, 장비 교체나 증설 시에는 반드시 기존 장비와의 STP 호환성을 사전에 검토하여 하향 동작(Fallback)에 따른 성능 저하를 예방해야 합니다.