STP가 무엇인지 알아보고 네트워크 루프가 발생하는 이유와 브리지 루프의 문제점, STP가 경로를 차단해 네트워크를 보호하는 원리를 쉽게 설명합니다.

스위치를 여러 대 연결해서 네트워크를 구성하다 보면 한 가지 문제가 생길 수 있습니다.

네트워크 연결을 하나의 경로로만 구성하면 케이블이나 스위치에 문제가 생겼을 때 통신이 끊길 수 있습니다.

그래서 실제 네트워크에서는 장애에 대비해 여러 개의 연결 경로를 만들어 놓는 경우가 있습니다.

예를 들어:

스위치 A ───── 스위치 B
    │             │
    └─────────────┘

이렇게 연결하면 한쪽 링크에 문제가 생겨도 다른 경로를 이용할 수 있다는 장점이 있습니다.

그런데 여기에는 큰 문제가 하나 있습니다.

바로 네트워크 루프(Network Loop)​입니다.

이 문제를 해결하기 위해 사용하는 대표적인 기술이 STP(Spanning Tree Protocol)​입니다.

네트워크 루프란?

네트워크 루프는 데이터가 네트워크 안에서 계속해서 순환할 수 있는 연결 구조를 의미합니다.

예를 들어 스위치 3대를 고리 모양으로 연결했다고 생각해 보겠습니다.

        스위치 A
       /       \
      /         \
스위치 B ───── 스위치 C

이 구조에서는 A → B → C → A와 같이 돌아갈 수 있는 경로가 만들어집니다.

이런 구조 자체가 항상 나쁜 것은 아닙니다.

오히려 장애가 발생했을 때 다른 경로를 사용할 수 있다는 장점이 있습니다.

문제는 Layer 2 네트워크에서 스위치가 프레임을 계속 전달하면서 루프가 발생할 수 있다는 것입니다.

루프가 발생하면 무슨 일이 생길까?

Ethernet 프레임에는 IP 패킷처럼 TTL이 있어서 일정 시간이 지나면 자동으로 사라지는 방식이 없습니다.

따라서 Layer 2에서 브로드캐스트 프레임 등이 루프에 빠지면 계속해서 네트워크를 돌아다닐 수 있습니다.

예를 들어:

스위치 A
 ↓
스위치 B
 ↓
스위치 C
 ↓
스위치 A
 ↓
스위치 B
 ↓
...

이런 식으로 반복될 수 있습니다.

특히 브로드캐스트 트래픽이 반복되면 네트워크에 엄청난 양의 트래픽이 발생할 수 있습니다.

이를 흔히 Broadcast Storm이라고 합니다.

MAC 주소 테이블도 혼란스러워질 수 있다

루프의 문제는 브로드캐스트만이 아닙니다.

스위치는 프레임의 출발지 MAC 주소를 보고 어느 포트에서 해당 장치를 발견했는지 학습합니다.

그런데 루프가 발생하면 같은 MAC 주소가 서로 다른 포트에서 계속 들어오는 상황이 발생할 수 있습니다.

예를 들어:

MAC AA-AA-AA
→ 1번 포트에서 발견

잠시 후
→ 2번 포트에서 발견

다시
→ 1번 포트에서 발견

이런 식으로 MAC 주소 테이블이 계속 변경될 수 있습니다.

이러한 현상을 MAC Address Flapping이라고 합니다.

결국 정상적인 프레임 전달도 어려워질 수 있습니다.

그래서 STP가 필요하다

STP의 목적은 간단합니다.

물리적으로는 여러 경로를 유지하면서 논리적으로는 루프가 발생하지 않도록 경로 일부를 차단하는 것입니다.

예를 들어:

        스위치 A
       /       \
      /         \
스위치 B ───── 스위치 C

이 연결에서 모든 링크를 동시에 활성화하면 루프가 발생할 수 있습니다.

STP는 이 중 하나의 경로를 차단합니다.

        스위치 A
       /       \
      /         \
스위치 B ──X── 스위치 C

물리적인 케이블은 그대로 연결되어 있지만 해당 포트를 논리적으로 전달에 사용하지 않는 것입니다.

이렇게 하면:

A → B → C

와 같은 하나의 트리 구조가 만들어집니다.

그래서 이름도 Spanning Tree Protocol입니다.

STP는 어떻게 어떤 포트를 막을까?

여기서 STP의 핵심 과정이 등장합니다.

스위치들은 서로 BPDU(Bridge Protocol Data Unit)​라는 메시지를 주고받으면서 네트워크 구조를 파악합니다.

그리고 어떤 스위치를 중심으로 경로를 구성할지 결정합니다.

STP의 대표적인 과정은:

① BPDU 교환
      ↓
② Root Bridge 선정
      ↓
③ 각 스위치의 최적 경로 계산
      ↓
④ 불필요한 경로 차단
      ↓
⑤ 루프 없는 트리 구조 구성

입니다.

Root Bridge란?

STP에서는 네트워크에 연결된 스위치 중 하나를 Root Bridge로 선정합니다.

쉽게 말하면 STP가 네트워크 경로를 계산할 때 기준점으로 삼는 스위치입니다.

모든 스위치가 Root Bridge와의 경로를 기준으로 자신의 역할을 결정합니다.

Root Bridge는 일반적으로 Bridge ID를 기준으로 결정됩니다.

Bridge ID는 기본적으로:

Priority
+
MAC Address

를 이용해서 비교합니다.

낮은 Bridge ID를 가진 스위치가 Root Bridge가 됩니다.

따라서 STP에서는 스위치의 Priority 설정을 이용해 어떤 장비를 Root Bridge로 사용할지 어느 정도 의도적으로 지정할 수 있습니다.

Root Port란?

Root Bridge가 아닌 스위치에서는 Root Bridge로 가는 가장 좋은 경로를 하나 선택합니다.

이 포트를 Root Port라고 합니다.

예를 들어:

        Root Bridge
             A
           /   \
          /     \
         B       C

스위치 B 입장에서 A로 가는 가장 좋은 포트가 Root Port가 됩니다.

즉:

Root Port = Root Bridge로 가는 최적 경로에 사용되는 포트

라고 이해하면 됩니다.

Designated Port란?

STP에서는 각 네트워크 구간에서 프레임 전달을 담당하는 Designated Port도 결정합니다.

쉽게 말하면 특정 링크에서 해당 세그먼트로 트래픽을 전달하기 위해 선택되는 포트입니다.

따라서 STP에서는 각 포트가 단순히 “열려 있다 / 닫혀 있다”로만 나뉘는 것이 아니라 역할을 부여받습니다.

대표적으로:

Root Port
Designated Port
Blocking 상태의 포트

등으로 구분됩니다.

Blocking 포트는 왜 필요한가?

루프를 제거하려면 모든 링크를 동시에 사용해서는 안 됩니다.

그래서 STP는 일부 포트를 Blocking 상태로 만들어 프레임 전달에 사용하지 않습니다.

예를 들어:

스위치 A ───── 스위치 B
    │             │
    │             │
    └──────X──────┘

X로 표시된 링크가 논리적으로 차단된 상태라고 생각하면 됩니다.

이렇게 하면 물리적으로는 연결되어 있지만 실제 프레임 전달 경로에서는 제외됩니다.

장애가 발생하면 차단했던 경로를 사용할 수 있다

STP의 재미있는 부분은 여기입니다.

차단된 링크를 영원히 버리는 것이 아닙니다.

예를 들어:

스위치 A ───── 스위치 B
    │             │
    │             │
    └──────X──────┘

평소에는 아래쪽 경로를 차단하고 있다고 해보겠습니다.

그런데 위쪽 링크가 끊어졌다면?

스위치 A ──X── 스위치 B
    │             │
    └─────────────┘

STP가 네트워크 변화를 감지하고 기존에 차단되어 있던 경로를 다시 활성화할 수 있습니다.

따라서 장애가 발생했을 때 다른 경로를 이용해서 통신을 복구할 수 있습니다.

이것이 STP의 중요한 장점입니다.

평소에는 루프를 막고, 장애가 발생하면 대체 경로를 사용할 수 있도록 하는 것​입니다.

STP는 케이블을 실제로 끊는 것이 아니다

여기서 오해하기 쉬운 부분이 있습니다.

STP에서 포트를 Blocking한다고 해서 스위치가 케이블을 물리적으로 끊어버리는 것은 아닙니다.

물리적으로는:

스위치 A ═════════ 스위치 B

그대로 연결되어 있습니다.

다만 STP의 판단에 따라 해당 포트를 데이터 전달 경로에서 제외하는 것입니다.

필요한 상황이 발생하면 다시 사용할 수 있습니다.

STP가 없는 환경에서는?

STP가 없는 상태에서 스위치들을 고리 형태로 연결하면 문제가 발생할 수 있습니다.

예를 들어:

A → B → C → A

라는 구조에서 브로드캐스트 프레임이 발생하면 여러 스위치를 돌아다니면서 계속 복제될 수 있습니다.

결과적으로:

트래픽 증가
↓
Broadcast Storm
↓
스위치 처리량 증가
↓
네트워크 성능 저하
↓
통신 장애

로 이어질 수 있습니다.

심한 경우에는 네트워크 전체가 정상적으로 통신하기 어려워질 수도 있습니다.

STP는 브로드캐스트를 막는 기술이 아니다

이 부분도 구분할 필요가 있습니다.

STP는 브로드캐스트 자체를 차단하는 기술이 아닙니다.

브로드캐스트가 네트워크를 통해 전달되는 것은 정상적인 동작입니다.

STP가 해결하려는 문제는 브로드캐스트 등이 루프 구조를 통해 계속해서 순환하는 것입니다.

즉:

브로드캐스트
→ 정상적인 네트워크 동작

브로드캐스트
→ 루프 발생
→ 계속 반복
→ 문제

이 차이를 이해하면 STP의 역할이 훨씬 명확해집니다.

STP의 장점

STP를 사용하면 여러 스위치를 연결하면서도 네트워크 루프를 방지할 수 있습니다.

대표적인 장점은 다음과 같습니다.

  • 네트워크 Layer 2 루프 방지
  • Broadcast Storm 방지
  • MAC 주소 테이블 혼란 방지
  • 장애 발생 시 대체 경로 활용
  • 네트워크 이중화 구성 가능

특히 네트워크 장비를 이중화해야 하는 환경에서는 상당히 중요한 기능입니다.

STP에도 여러 버전이 있다

STP를 공부하다 보면 여러 가지 이름이 등장합니다.

대표적으로:

STP
RSTP
MSTP

등이 있습니다.

기본적인 STP는 802.1D 기반의 Spanning Tree Protocol입니다.

이후 더 빠른 장애 복구를 위해 RSTP(Rapid Spanning Tree Protocol)​가 등장했습니다.

RSTP는 기존 STP보다 네트워크 변화에 빠르게 대응할 수 있도록 개선된 방식입니다.

또한 여러 VLAN을 효율적으로 관리하기 위한 MSTP 같은 방식도 있습니다.

처음부터 모든 방식을 외우기보다는 우선:

STP = Layer 2 네트워크 루프를 방지하는 기술

이라는 핵심을 이해하는 것이 좋습니다.

실제 네트워크에서는 왜 이중화가 중요할까?

회사 네트워크를 생각해 보면 이해하기 쉽습니다.

스위치 A와 스위치 B를 케이블 하나로만 연결해 놓았는데 그 케이블이 고장 난다면 두 장비 사이의 통신이 끊길 수 있습니다.

그래서:

스위치 A ═════ 스위치 B
    ╲           ╱
     ╲         ╱
      ╲═══════╱

처럼 여러 경로를 만들어 놓을 수 있습니다.

하지만 이 구조는 그대로 사용하면 루프가 발생할 수 있습니다.

STP는 이런 환경에서 이중화의 장점은 유지하면서 루프를 방지할 수 있도록 도와줍니다.

STP를 쉽게 기억하는 방법

STP를 복잡하게 생각하지 않아도 됩니다.

핵심은 다음 한 문장입니다.

“길을 여러 개 만들어 놓되, 평소에는 하나를 막아 루프를 방지한다.”

예를 들어:

여러 경로 존재
      ↓
STP가 경로 계산
      ↓
불필요한 경로 차단
      ↓
루프 방지

그리고 장애가 발생하면:

기존 경로 장애
      ↓
STP가 네트워크 변화 감지
      ↓
차단된 대체 경로 활용
      ↓
통신 복구

이렇게 이해하면 됩니다.

정리

STP(Spanning Tree Protocol)는 스위치로 구성된 Layer 2 네트워크에서 루프가 발생하는 것을 방지하는 프로토콜입니다.

스위치가 여러 개 연결된 네트워크에서는 장애에 대비해 여러 경로를 만들어 놓을 수 있습니다.

하지만 모든 경로를 동시에 사용하면:

스위치 A
 ↓     ↑
스위치 B → 스위치 C

처럼 프레임이 계속 순환하는 문제가 발생할 수 있습니다.

STP는 BPDU를 이용해 스위치 간의 정보를 교환하고 Root Bridge를 선정한 뒤 최적의 경로를 계산합니다.

그리고 불필요한 경로를 논리적으로 차단해 루프가 발생하지 않는 트리 구조를 만듭니다.

        A
       / \
      B   C

만약 정상적인 경로에 장애가 발생하면 기존에 차단되어 있던 경로를 다시 사용할 수 있습니다.

결국 STP의 핵심은 다음과 같습니다.

여러 경로를 이용한 네트워크 이중화는 유지하면서, 동시에 발생할 수 있는 Layer 2 루프는 막아주는 기술입니다.

네트워크에서 스위치가 여러 대 연결되는 구조를 공부한다면 STP는 꼭 알아두는 것이 좋습니다. 특히 이후에 RSTP, VLAN, L3 스위치 등을 공부할 때도 계속 연결되는 개념이기 때문에 “루프 방지 + 장애 시 대체 경로”​라는 두 가지 역할을 기억해 두면 이해하기 편합니다.

답글 남기기

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

글쓴이

rjsan46@koreabites.com

관련 게시물

웹 브라우저에 주소를 입력하면 일어나는 일

웹 브라우저 주소창에 웹사이트 주소를 입력하고 엔터를 누르면 바로 화면이 나타나는 것처럼 보인다. 하지만 실제로는 그 짧은 순간에 꽤 많은 일이 일어난다....

모두 읽어보기

소켓이란 무엇일까? 프로그램과 네트워크를 연결하는 통로

네트워크를 공부하다 보면 IP 주소와 포트 번호라는 말을 계속 만나게 된다. IP 주소는 어떤 컴퓨터와 통신할 것인지 구분하고, 포트 번호는 그 컴퓨터에서...

모두 읽어보기

쿠키와 세션은 어떻게 다를까?

웹사이트를 이용하다 보면 한 번 로그인한 뒤 다른 페이지로 이동해도 로그인 상태가 계속 유지되는 것을 볼 수 있다. 예를 들어 쇼핑몰에 로그인한...

모두 읽어보기

SSL과 TLS는 어떤 역할을 할까?

앞에서 HTTPS가 HTTP보다 안전한 이유를 살펴봤다. HTTPS는 단순히 HTTP 자체가 더 안전하게 만들어진 프로토콜이 아니라, HTTP 통신에 TLS라는 보안 계층을 적용한 것이라고...

모두 읽어보기

포트 번호로 네트워크 서비스를 구분하는 방법

컴퓨터가 네트워크를 통해 다른 컴퓨터와 통신할 때 가장 먼저 떠오르는 것이 IP 주소다. 예를 들어 어떤 서버의 IP 주소가 192.168.0.10이라고 해보자. 그런데...

모두 읽어보기

HTTPS는 HTTP보다 무엇이 안전할까?

인터넷에서 웹사이트에 접속하다 보면 주소창에 http://가 붙어 있는 경우도 있고 https://가 붙어 있는 경우도 있다. 요즘은 대부분의 웹사이트가 HTTPS를 사용하기 때문에 사실상...

모두 읽어보기