스패닝 트리(STP)에 대해서

이번 포스트에서는 네트워크 분야에서 자주 언급되는 **스패닝 트리(Spanning Tree)**에 대해 알아보겠습니다. 스패닝 트리는 네트워크의 안정성과 효율성을 유지하기 위해 필수적인 개념으로, 특히 대규모 네트워크 환경에서 그 중요성이 더욱 부각됩니다.

1. STP(Spanning Tree Protocol)란?

스위치가 서로 중복 연결(Loop)을 통해 트래픽 경로를 구성하다 보면, 특정 구간에서 루프(Loop)가 발생할 수 있습니다. 이를 방치하면 네트워크 폭주(Broadcast Storm), MAC 주소 테이블 불안정, 네트워크 단절 등의 문제가 발생합니다. 이런 루프를 방지하기 위해 IEEE 802.1D 표준에서 정의한 프로토콜이 **STP(Spanning Tree Protocol)**입니다.

STP의 핵심 목적은 스위치 네트워크가 루프 없는 트리 구조를 형성하도록 하여 안정적으로 트래픽을 전달하도록 하는 것입니다. 이를 위해 스위치 간에 다양한 정보를 주고받아 네트워크 전체의 토폴로지(Topology)를 파악하고, 특정 링크들을 차단(Blocking)하여 논리적으로 루프를 제거합니다.

2. 스패닝 트리 사용 이유

루프의 문제점

이더넷 기반의 네트워크에서는 브로드캐스트 프레임이 존재하며, 이러한 프레임이 루프를 통해 무한히 회전하면 **브로드캐스트 스톰(Broadcast Storm)**이 발생합니다. 이는 네트워크 대역폭을 고갈시키고 장비의 과부하를 유발하여 전체 네트워크의 성능 저하나 마비를 초래합니다.

brodecast strom 예시

스위치는 연결된 모든 포트로 mac 주소를 광고합니다. 만약 1번 포트로 전달했던 mac 주소가 2번 포트로 들어오고 2번 포트로 전달했던
mac 주소가 1번 포트로 들어오면 또다시 서로 다른 포트에 전달합니다. 이 과정이 빠른 속도로 무한으로 반복되어 결국 하드웨어의 자원을 모두 점유하게 되어 네트워크 장애가 발생하게 됩니다.

MAC 주소 테이블의 불안정성

스위치들은 MAC 주소 테이블을 기반으로 프레임을 전달하는데, 루프가 발생하면 동일한 MAC 주소에 대해 여러 경로가 존재하게 됩니다. 이는 스위치의 MAC 주소 테이블이 지속적으로 갱신되면서 불안정해지는 원인이 됩니다.

3. 스패닝 트리 프로토콜(STP)의 역할

스패닝 트리 프로토콜은 위와 같은 문제를 해결하기 위해 개발된 프로토콜로, 네트워크 내에서 루프를 제거하고 최적의 패스만을 활성화시킵니다.

스패닝트리 block 포트로 loop를 막는 예시

기본적으로 스패닝 트리는 특정 포트로 정하여 데이터가 전달되지 못하는 포트로 만들어 loop 구조에서 벗어나게 해줍니다.

4. STP의 동작 방식

STP의 동작 절차는 크게 다음의 단계들을 거칩니다.

  1. 루트 브리지(Root Bridge) 선출
    • 모든 스위치는 자신이 루트 브리지라고 가정하고 BPDU를 전송합니다.
    • 스위치 간 BPDU 정보 비교를 통해 **가장 낮은 Bridge ID(우선순위 + MAC 주소)**를 가진 스위치가 루트 브리지로 선정됩니다.
  2. 경로 비용(Path Cost) 계산
    • 각 스위치는 루트 브리지까지 도달하는 데 필요한 경로 비용을 계산하고, 자신의 BPDU에 이 정보를 포함합니다.
    • 경로 비용이 가장 낮게 루트 브리지에 도달할 수 있는 포트(= 루트 포트)를 설정합니다.
  3. 디자인ATED 포트(Designated Port) 선정
    • 각 세그먼트(네트워크 구간)마다, 루트 브리지로 가는 경로 비용이 가장 낮은 포트를 지정 포트로 선정합니다.
    • 지정 포트는 트래픽이 해당 세그먼트를 통해 루트 브리지 방향으로 흐르도록 지정된 포트입니다.
  4. 불필요한 링크 차단
    • 루프가 발생할 수 있는 포트는 블로킹(Blocking) 상태로 전환합니다.
    • 결과적으로, 네트워크 전체는 루프가 없는 트리 구조를 형성합니다.

4-2. 토폴로지 변화(Topology Change)

네트워크 환경이 변경되어(예: 스위치 추가·제거, 링크 장애·복구 등) 새롭게 트리가 형성되어야 하는 경우, 스위치들은 TCN(Topology Change Notification) BPDU를 교환하여 변경 사항을 알립니다. 이 과정을 통해 특정 포트가 차단되거나(Blocking), 혹은 다시 활성화(Forwarding)되는 등의 변화가 일어나며, 최종적으로 루프 없는 트리 구조를 재구성합니다.

  • TCN BPDU:
    • 토폴로지 변화가 감지되었을 때 전송되는 특별한 BPDU로, 스위치들은 이를 수신하고 자신의 MAC 주소 테이블을 갱신하는 등 대응 조치를 수행합니

5. STP BPDU(Bridge Protocol Data Unit)란?

STP는 **BPDU(Bridge Protocol Data Unit)**라 불리는 제어 프레임을 통해 동작합니다. 스위치들은 BPDU를 주기적으로 교환하며, 이 정보를 바탕으로 네트워크 내에서 가장 중심이 되는 **루트 브리지(Root Bridge)**를 선출하고, 각 포트의 역할(Role)을 결정합니다.

5-1. BPDU의 주요 필드

  • Root ID: 현재 네트워크에서 스위치가 알고 있는 루트 브리지의 식별자(MAC 주소 + 우선순위)
  • Cost: 해당 스위치가 루트 브리지까지 도달하는 데 필요한 경로 비용
  • Bridge ID: BPDU를 전송하는 스위치 자체의 식별자
  • Port ID: BPDU를 전송하는 포트의 식별자

BPDU는 스위치 간 트리가 형성될 때, 누가 루트 브리지가 될지, 각 포트가 어떤 역할을 수행해야 할지를 결정하는 핵심 데이터입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다