Switch 네트워크에서 Switch 간의 링크를 대부분 이중으로 구성한다. 특정 Switch나 링크가 다운돼도 네트워크가 중단되지 않도록 하고, 트래픽을 분산시켜 네트워크 성능을 향상 시킬 수 있기 때문이다.
그러나 Ethernet 프레임 루프(Bridging Loop)가 발생하여 스위칭이 제대로 안될 수 있고, Switch의 MAC 테이블이 불안정해질 수 있다.
이러한 문제점을 STP로 해결할 수 있다.
- BPDU
- STP 동작방식
- STP 포트 상태
1. BPDU
[Bridge Protocol Data Unit]
STP는 BPDU 프레임을 이용해 루프가 없는 경로를 구성한다.
BPDU에는 Configuration BPDU와 TCN BPDU 두 종류가 있다.
1-1) Configuration BPDU

– Protocol ID: 항상 0
– Version: BPDU 버전 표시(0:STP, 2:RSTP, 3:MSTP)
– BPDU Type: BPDU 종류 표시(0x00:Configuration BPDU)
– Flag: 토폴로지 변화 표시(0x01:TC, 0x80:TCA)
– Root Bridge ID: 루트 스위치의 ID
– Path cost: 루트 스위치까지의 경로 값
– Bridge ID: 루트 스위치 가는 경로상 ,직전 스위치 ID
– Port ID: 포트 ID
– Message age: 루트 스위치까지의 스위치 수
– Max age: BPDU 정보 저장하는 시간
– Hello Time: BPDU 전송 주기
– Forward Delay: Listening/Learning 상태에서 대기하는 시간
위 Configuration BPDU를 통해 Root Switch를 선출하고, Switch Port의 역할을 지정한다. 오직 Root Switch만 Configuration BPDU를 생성할 수 있고, 다른 Switch들은 중계만 한다.
1-2) TCN BPDU
[Topology Change Notification BPDU]

– Protocol ID: 항상 0
– Version: BPDU 버전 표시(0:STP, 2:RSTP, 3:MSTP)
– BPDU Type: BPDU 종류 표시(0x80: TCN BPDU)
위 TCN BPDU를 통해 네트워크에 변경이 있을 경우 Root Switch로 보고한다. (ex. Switch 특정 링크 비활성화 등)
1-3) Bridge ID, Path cost, Port ID
[Bridge ID]
Bridge ID는 Priority(2 Bytes)와 MAC주소(6 Bytes)로 구성된다.
Priority의 기본값은 32768이고, 0~65535 범위 내 숫자로 바꿀 수 있다.
[Path cost]
포트의 속도 별로 미리 정해놓은 값이다. IEEE에서 권고한다.
10Mbps – 100 , 100Mbps – 19 , 1Gbps – 4 , 10Gbps – 2
[Port ID]
BPDU를 전송하는 Switch의 port priority와 포트번호로 구성된다.
Port Priority의 기본값은 128이다.
2. STP 동작방식

3. STP 포트 상태
Disabled
포트가 동작하지 않는 상태다.
고장이 났거나 고의적으로 Shutdown한 상태다.
Blocking
브리징 루프 방지를 위해 Alternate Port(AP)로 선정한 상태다.
오직 Root Switch로부터 BPDU만 수신할 수 있다. 만약, Max-Age 타이머 안에 BPDU를 수신하지 못하거나 후순위 BPDU를 수신하면 Listening 상태로 변경된다.
여기서 후순위 BPDU란, 기존 Root ID보다 값이 높은 Root ID가 설정된 BPDU를 의미한다.
Listening
Blocking 다음 단계로 시작되거나 Switch 포트에 노드가 연결될 경우 해당 단계로 변경된다. Forwarding 단계로 변경하기 위한 준비 단계이다.
Designated Port(DP)는 BPDU를 전송하고, Root Port(RP)는 BPDU를 수신한다.(데이터 송수신 X)
Foward Delay 15초동안 추가적인 토폴로지 변화가 없으면 Learning단계로 넘어간다.
Learning
Forwarding 단계로 변경하기 위한 직전 단계이다.
프레임을 송수신하기 앞서 먼저 MAC테이블을 학습한다. Listening과 마찬가지로 Foward Delay 15초가 진행되며, 별도 토폴로지 변경이 없으면 Forwarding 단계로 넘어간다.
Forwarding
드디어 프레임을 송수신할 수 있는 상태다.
RP, DP 모두 Forwarding 단계가 될 수 있지만, AP는 될 수 없다.
** 기본적으로 Switch 포트가 활성화되면, Listening 단계부터 시작한다.
** 대체 경로가 존재하는 네트워크에서 장애가 발생하면, 대체 경로가 동작할 때까지 Max-Age 20초 / AP가 전송상태 걸리는 시간 30초(Listening → Learning → Forwarding 30초), 총 50초를 기다려야 통신이 정상적으로 복구되기 때문에 별도 컨버전스 시간을 단축시켜야 한다.
