📖 쉽게 한 줄 정리: STP는 Looping 구조를 끊기 위해 스위치들이 협상 → 안정된 네트워크를 유지하도록 하는 프로토콜이다.

정의L2 스위치 환경에서 발생할 수 있는 Loop 문제를 방지하는 프로토콜로, 네트워크 루프를 방지하고 안정적인 네트워크 경로를 보장하는 역할을 한다.
알아야 하는 이유1. Loop 방지
– 스위치가 루프를 형성하면, Broadcast Storm이 발생 → 전체 네트워크 마비 가능

2. 안정적인 네트워크 환경 유지
– 하나의 링크가 차단돼도 대체경로(Failover)로 자동 전환 가능
– 이중화된 네트워크 구조에서도 루프 없이 안정적인 트래픽 전달 가능

3. 트래픽 효율성 증가
– 최적의 경로를 자동 선택해 네트워크 자원 낭비 방지
– 불필요한 포트 차단으로 효율적인 네트워크 운영 가능
동작 방식1) Root Bridge 선정
2) Port Role 결정
3) Port State 결정

1) Root Bridge 선정 (=Root Switch)

— 각 스위치가 자신의 Bridge ID를 포함한 BPDU 패킷을 전송한다.

— Bridge ID 값이 가장 낮은 스위치가 Root Bridge가 된다.

네트워크 연결 초기 상태 (전부 주황색 표시)

— 서로의 BPDU 패킷을 활발히 주고 받는 모습

패킷트레이서 시뮬레이션의 핑크색 편지지 무한 전송의 궁금증이 풀렸다!

— Root Bridge가 정해졌다.

네트워크 연결 후 상태 (Switch1의 fa0/3 포트만 주황색인 이유는 다음 단계에서 계속…)

Bash
# Root Bridge 확인 명령어
show spanning-tree vlan 1

— Switch0

“This bridge is the root”

— Switch1

— Switch2

fyi: 핑크색 편지지가 계속해서 날아다닌 이유는 Hello Time이 2초로 설정되어있기 때문이다. Root Bridge는 설정된 Hello Time 주기로 BPDU를 전송하여 네트워크를 확인하고 변화를 감지한다.

2) Port Role 결정

“하나의 세그먼트에는 반드시 하나의 지정 포트가 있어야 한다.”

Role설명
Root Port (RP)Root Bridge까지 가는 최적의 경로
Designated Port (DP)네트워크 세그먼트에서 프레임을 포워딩하는 포트
Blocking Port (BP)루프를 방지하기 위해 (Logically) 차단된 포트
Alternative Port백업 경로의 역할, 네트워크 장애가 발생하면 즉시 Active 상태로 변경
Bash
# Port Role 확인 명령어
show spanning-tree vlan 1 # 똑같음 ㅎㅎ

— 각 스위치는 BPDU를 분석해 Port Role을 결정한다.

3) Port State 결정

State설명
ListeningState의 출발점, 루프 여부 판단중 (fyi: 15초 유지 후 Learning state로 변경됨)
LearningMAC 주소 학습 중 (fyi: 15초 유지 후 Forwarding state로 변경됨)
Forwarding데이터 전송이 가능한 상태, 정상적으로 트래픽 포워딩 중
Disabled관리자가 수동으로 비활성화한 상태 or 링크 단절 상태
Blocking루프 방지를 위해 트래픽 차단, BPDU만 수신 (fyi: Convergence Time 없이 즉시 변경됨)
👩🏻‍🏫 이 과정에서 발생한 단점과 최적화 방법!

1. 긴 수렴시간

⚠️ 네트워크 장애 발생 시 복구까지 최대 50초까지 걸릴 수 있음

✅ RSTP: Alternative Port로 대체경로 빠르게 활성화 (1-2초 소요)

2. Root Bridge 변경 가능

⚠️ 공격자가 네트워크에 스위치를 연결해 Root Bridge를 변경하거나 STP 조작할 가능성

✅ BPDU Guard: STP BPDU 패킷을 감지하면 포트를 자동으로 차단

3. Access Port에서도 STP 딜레이 발생

⚠️ PC와 같은 엔드 디바이스를 연결하는데도 불필요하게 Listening/Learning state 거침

✅ PortFast: PortFast를 활성화하면 즉시 Forwarding 상태로 전환 → 연결 속도 향상

4. 일부 포트 Blocking → 대역폭 낭비

⚠️ 포트 차단은 일장일단, Loop가 방지되지만 대역폭이 낭비됨

✅ EtherChannel: 여러 개의 포트를 하나의 논리적 인터페이스로 묶어서 모든 포트 활성화 가능

지적과 질문 대환영