스패닝 트리 프로토콜(Spanning Tree Protocol, STP)은 브리지나 스위치를 이용한 이더넷 네트워크에서 루프(loop)가 생기지 않도록 방지하는 프로토콜입니다. 루프는 동일한 데이터를 반복해서 전송하므로 네트워크 전체에 문제를 일으킬 수 있으므로 STP는 이러한 문제를 방지하기 위해 개발되었습니다.
STP는 Cisco에서 처음 개발되었으며 IEEE 802.1D 표준으로 표준화되었습니다. STP는 브리지나 스위치 간의 링크를 사용하면서 루프가 생기지 않도록 처리하는 논리적인 프로토콜입니다. STP는 라우터보다 브리지나 스위치에서 더 많이 사용됩니다.
STP는 각각의 브리지나 스위치가 파악한 네트워크의 형태를 분석하여 루프를 발견하고 루프를 없애기 위해 불필요한 포트를 차단하는 방식으로 작동합니다. 이러한 프로세스를 통해 STP는 네트워크에서 루프를 방지하면서 안정적이고 효율적인 데이터 전송을 보장합니다.
STP의 동작 과정은 다음과 같습니다.
- 루트 브리지 선정
- STP는 루프가 발생하지 않도록 네트워크에서 하나의 루트 브리지를 선정합니다.
- 루트 브리지는 브리지 ID(Bridge ID)가 가장 작은 브리지입니다.
- 만약 브리지 ID 값이 같다면, 우선순위 값(priority)가 작은 브리지가 루트 브리지가 됩니다.
- 루트 브리지에서 다른 브리지까지의 경로 설정
- 루트 브리지에서 다른 브리지까지의 최단 경로를 설정합니다.
- 이 최단 경로를 루트 패스(Root Path)라고 합니다.
- 루트 패스는 브리지를 거쳐서 이동하는데 가장 적은 비용(Cost)을 가지는 경로입니다.
- 경로 차단
- STP는 루프가 발생하지 않기 위해 불필요한 경로를 차단합니다.
- 루트 브리지로부터 먼 브리지까지의 경로 중 하나는 활성화(active)되고, 나머지 경로는 차단(blocked)됩니다.
- 차단된 경로는 루프를 방지하기 위해 사용하지 않으며, 필요할 때만 활성화됩니다.
- Topology Change Notification(TCN)
- STP는 네트워크 토폴로지가 변경될 때마다 Topology Change Notification(TCN) 메시지를 전송합니다.
- TCN 메시지는 다른 브리지에 루프가 발생하지 않도록 토폴로지를 업데이트할 수 있도록 도와줍니다.
STP는 브리지나 스위치가 하나의 루프에만 속한 경우에는 문제가 없지만, 브리지나 스위치가 여러 개의 루프에 속할 경우 루프가 발생하여 네트워크 전체에 문제를 일으킬 수 있습니다.