네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 상황이다.
네트워크 루프가 발생한다면 네트워크가 마비되고 통신이 안되는 상황이 오는데 대부분의 원인이 브로드캐스트 스톰으로 인한 문제이다.
- 루프 구조로 네트워크가 연결된 상태에서 단말에서 브로드캐스트를 발생시킴
- 스위치는 이 패킷을 패킷이 유입된 포트를 제외한 모든 포트로 플러딩
- 플러딩 된 패킷은 다른 스위치로도 보내지고 이 패킷을 받은 스위치는 패킷이 유입된 포트를 제외한 모든 포트로 다시 플러딩

위와 같이 루프 구조에서 패킷이 계속 돌아가는데 이를 브로드캐스트 스톰이라 한다.
3계층 헤더에는 TTL(Time To Live)라는 패킷 수명을 가지고 있지만 스위치가 확인하는 2계층 헤더에는 이런 라이프타임 메커니즘이 없기 때문에 루프가 발생하여 패킷이 죽지않고 계속 살아남아 패킷 하나가 전체 네트워크 대역폭을 차지할 수 있다.
결국 스위치와 네트워크에 연결된 단말 간 통신이 거의 불가능한 상태가 되는 것이다.
루프 구조에서는 유니캐스트도 문제를 일으킨다. 스위치는 출발지 MAC 주소를 학습하는데 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 달라 MAC 주소를 정상적으로 학습할 수 없다.
MAC 주소 테이블은 하나의 MAC 주소에 대해 하나의 포트만 학습할 수 있으므로 동일한 MAC 주소가 여러 포트에서 학습되면 테이블이 반복 갱신되어 정상적으로 동작하지 않는다. 이를 MAC 어드레스 플래핑(MAC Address Flapping)이라 한다.
이런 현상을 예방하기 위해 스위치 설정에 따라 경고 메시지를 관리자에게 알려주거나 수시로 일어나는 플래핑 현상을 학습하지 않도록 자동으로 조치한다.
또 다른 방법 중 하나는 루프 구성 포트 중 하나의 포트만 사용하지 못하도록 셧다운 하는 방법이 있다.
허나 SPoF를 예방하기 위해 다수의 스위치를 디자인했는데 다시 수동으로 셧다운 시킨다면 이는 바람직하지 않다.
그래서 루프를 자동 감지해 포트를 차단하고 장애 때문에 우회로가 없을 때 차단된 포트를 스위치 스스로 다시 풀어주는 스패닝 트리 프로토콜이 개발되었다
이더넷 프레임 장비들 사이에서 루프를 방지해 주는 역할을 수행하는 네트워크 프로토콜이다.
IEEE 802.1D 표준으로 명시 되어 있다.
이더넷 프레임 루프가 발생하면 브로드캐스트 폭풍, MAC Address Flapping, 이중 프레임 수신 현상발생
Root Bridge가 아닌 다른 모든 스위치는 Root Bridge까지의 경로 비용이 가장 낮은 포트를 루트 포트(Root Port)로 선정합니다. 이 Port는 해당 스위치를 통해 Root Bridge에 도달할 수 있는 최적의 경로입니다.
1) Path Cost가 가장 낮은 포트.
2) 연결된 상대방의 Bridge ID가 가장 낮은 포트.
3) 연결된 상대방의 Port ID가 가장 낮은 포트.
Root Bridge로 선출된 스위치의 포트들은 기본적으로 Designated Port로 정해집니다.
그리고 Non Root Bridge 스위치들은 Root Bridge 스위치와 가장 인접한 포트를 Root port로 선출하고
Port Cost를 비교하여 더 낮은 Cost의 포트를 Designated Port로 선출합니다.
만약 Cost가 같다면 Bridge ID를 비교하고 이 값도 같다면 Port ID를 비교하여 Designated Port와 Non Designated Port를 선출하고 Non Designated Port는 block 처리하게 됩니다.
1) Root Bridge의 모든 포트.
2) Switch 자체의 Path Cost가 낮은 Switch의 포트.
3) 자신의 Bridge ID가 가장 낮은 Switch의 포트.
4) 자신의 Port ID가 가장 낮은 Switch의 포트.
루트 포트나 지정 포트가 아닌 다른 모든 포트는 블로킹 상태로 설정됩니다. 블로킹 포트는 데이터 프레임을 전송하지 않으며, 네트워크 루프를 방지하는 역할을 합니다.
1) 역할을 부여받지 못한 포트는 논리적으로 Blocking 상태
STP 정보를 교환하기 위해 네트워크 장비 간에 전송되는 메시지입니다. BPDU를 통해 루트 브리지 선정, 네트워크 토폴로지 변경 감지 등의 작업이 이루어집니다.
BPDU에는 Configuration BPDU(구성 BPDU)와 TCN(Topology Change Notification) BPDU가 있습니다.
Configuration BPDU는 루트 브리지와 경로 비용 정보를 전달하는 데 사용되며, TCN BPDU는 네트워크의 토폴로지 변경을 알리는 데 사용됩니다.
Switch의 경우 기본적으로 2초마다 Configuration BPDU를 주기적 교환을 수행한다. 각 Switch는 수신한 'Configuration BPDU'의 다음 3가지 필드 값을 기준으로 Switch의 역할과 각 Port 역할을 결정하게 된다.
Bridge ID
- Bridge나 Switch가 통신을 할 때 서로를 확인하기 위해 하나씩 가지고 있는 ID이다.
- Bridge ID가 가장 낮은 Switch가 Root switch로 선출된다.
- Bridge Priority(Default:32,768) + 자신의 MAC 주소 값이 낮은 스위치가 root Bridge가 된다.
Path Cost
- 특정 Switch 포트에서 Root Bridge까지 Link의 속도를 특정 값으로 변환시킨 것을 의미한다.
- BPDU에서 사용하는 Path cost는 해당 Switch에서 Root 스위치까지의 경로를 합한 값이다.
- Path Cost는 케이블의 속도가 빠를수록 값이 작아진다.
속도 (Bandwidth) 경로값 (Path Cost)
Port ID
- Switch 포트마다 부여된 고유한 ID를 의미한다. 기본값으로 128. 뒤에 해당 포트 번호를 붙여서 사용한다.
- 번호가 낮을수록 우선순위가 높아진다. (0~254)
토폴로지 변화가 일어났을 때 이를 반영하여 네트워크가 재구성 될 때까지 소용되는 시간을 말한다. 스위치 네트워크의 루프를 방지하기 위해서 사용되는 STP의 단점 중의 하나가 컨버전스 시간이 너무 길다는 것이다. 별도의 조정을 하지 않으면 한 링크가 다운될 시 복수개의 경로가 있어도 30~50초 동안 스위치 네트워크 다운(Down)상태가 지속 된다.
직접 링크 단절 LSN(리슨) -> LRN(러닝) -> FWD(포워딩) 과정에는 30초
간접 링크 단절 Block(블락) -> LSN(리슨) -> LRN(러닝) -> FWD(포워딩) 과정에는 50초
Convergence Time 을 줄이기 위한 STP에서의 방법 3가지
Portfast
- TCN (Topology Change Notification) BPDU 프레임을 Access port로 보내지 않는 기능이다. 추가적인 이득은 802.1D의 Listening과 Learning단계를 건너뛰어 곧장 Forwarding 상태로 전이되어 트래픽 전송이 가능합니다.
Uplinkfast
- 직접 연결된 링크가 다운되었을 때 차단 상태에 있는 포트를 즉시 송상태로 변경시키는 역전할을 한다. Uplinkfast는 종단 스위치에서 설정해주어야 한다. 루트 스위치는 차단상태에 있는 포트가 없기 때문에 업링크 패스트를 설정해도 효과가 없다.
Backbonefast
- 간접 Link 장애 발생 시 NDP Port를 Blocking(20초)를 생략하고 바로 Listening 상태로 변경시키며, 모든 스위치에 설정되어야 한다.
데이터 오갈 수 없고, BPDU는 보낼 수 없고 받을 수만 있는 상태
mac address 정보 송, 수신 불가
bpdu 송,수신
data 송,수신 불가
데이터 오갈 수 없고, BPDU 보내고 받기 전부 가능한 상태
mac address 정보 송,수신 불가
bpdu 송,수신
data 송,수신 불가
데이터 오갈 수 없고, BPDU 보내기 받기 전부 가능한 상태, 그리고 추가적으로 MAC 학습할 수 있다. 그래서 Forwarding부터 MAC 주소를 송수신 가능해짐.
mac address 정보 송,수신
bpdu 송,수신
data 송,수신 불가
데이터를 송수신 할 수 있는 상태.
mac address 정보 송, 수신
bpdu 송,수신
data 송,수신
Shutdown 된 상태를 Disabled 상태라고 함. 데이터 및 BPDU 송수신 불가능한 상태.
mac address 정보 송, 수신 불가
bpdu 송,수신 불가
data 송,수신 불가
활성화된 포트의 역할이 Root 포트 혹은 Designated 포트이면 즉시 Listening 상태가 된다. 그 후 30초가 지나야 Forwarding 상태가 된다. (Listening = 15초 / Learning = 15초) 활성화된 포트가 alternate 포트이면 바로 Blocking 상태가 된다.
Listening -(15초)-> Learning -(15초)-> Forwarding 각 단계를 forward age 라고 한다.
Blocking, Listening, Learning 상태에서는 Data 프레임을 송수신하지 않는다.
비활성화 상태를 제외한 모든 상태에서 BPDU를 수신, Designated 포트는 Listening 상태부터 BPDU를 송신한다.
대규모 네트워크에서는 STP의 복잡성이 증가하고 확장성이 제한될 수 있음.
이는 네트워크 규모가 커질수록 관리 어려움을 의미.