Doctor Pepper

[물리 계층과 데이터 링크 계층] STP(Spanning Tree Protocol), RSTP & MST 본문

네트워크/물리계층과 데이터 링크계층

[물리 계층과 데이터 링크 계층] STP(Spanning Tree Protocol), RSTP & MST

Doctor Pepper 2024. 11. 11. 23:57
728x90

 

 

 IT 환경에서는 SPoF(Single Point of Failure, 단일 장애점)를 방지하기 위해 다양한 대비책을 마련하여 시스템의 안정성을 보장한다. SPoF는 하나의 시스템이나 구성 요소에 장애가 발생했을 때, 그 문제가 전체 시스템에 영향을 미쳐 전체 서비스가 중단되는 현상을 의미한다. 네트워크에서도 마찬가지로, 특정 장비에 문제가 생길 경우 전체 네트워크가 영향을 받지 않도록 이중화 또는 다중화된 설계를 통해 안전성을 높인다.

 

 예를 들어, 네트워크를 단일 스위치로 구성할 경우 해당 스위치에 장애가 발생하면 전체 네트워크에 큰 영향을 미친다. 이를 해결하기 위해 두 대 이상의 스위치를 사용하여 네트워크를 이중화하는 설계를 할 수 있다. 하지만 스위치가 여러 대일 경우, 패킷이 네트워크 내에서 반복적으로 순환하는 네트워크 루프(Loop) 현상이 발생할 수 있다. 네트워크 루프는 네트워크를 마비시킬 수 있기 때문에, 이를 방지하기 위해 스패닝 트리 프로토콜(STP)과 같은 별도의 메커니즘을 적용하여 루프를 방지하고 네트워크의 안정성을 유지해야 한다.

 

1. 루프(Loop)

 

 루프(Loop)는 네트워크 구조에서 연결이 고리 형태로 되돌아오는 구조를 의미한다. 루프가 발생하면 네트워크 장애나 통신 두절 등의 문제가 발생할 수 있으며, 이를 즉시 인식하는 것은 어렵다. 루프의 주요 원인 중 하나는 브로드캐스트 스톰(Broadcast Storm)이다. 브로드캐스트 스톰은 네트워크에 과도한 부하를 일으키며 심각한 성능 저하를 초래할 수 있다.

 

- 브로드캐스트 스톰

 

 루프가 발생한 네트워크에서 단말이 브로드캐스트 패킷을 발생시키면, 스위치는 해당 패킷을 다른 모든 포트로 전송한다. 이 과정에서 패킷은 다른 스위치를 거쳐 다시 모든 포트로 전송되며, 루프 구조에서는 이 과정이 반복되어 패킷이 네트워크 내에서 계속 순환하게 된다. 이를 브로드캐스트 스톰(Broadcast Storm)이라고 부른다.

 

 3계층 헤더에는 TTL(Time to Live)이라는 패킷 수명 값이 있어 일정 시간이 지나면 패킷이 소멸하지만, 스위치가 확인하는 2계층 헤더에는 이와 같은 수명 관리 메커니즘이 없다. 따라서 루프가 발생하면 패킷이 소멸하지 않고 계속 순환하여 네트워크 대역폭을 차지하게 된다. 브로드캐스트 스톰이 발생하면, 네트워크 전체가 브로드캐스트 처리에 리소스를 소모하게 되어 다음과 같은 문제가 발생합니다.

  1. 네트워크에 연결된 단말의 속도가 느려지고 통신이 어려워진다.
  2. 네트워크 접속 속도가 급격히 떨어지고, 사실상 통신 불가능 상태에 이른다.
  3. 스위치의 LED가 빠르게 깜빡이며, 네트워크 정상 작동이 불가능해진다.

 브로드캐스트 스톰이 발생하면 네트워크가 마비 상태에 빠지며, 이를 해결하려면 물리적으로 루프를 일으킨 케이블을 제거해야 한다.

 

- 스위치 MAC 러닝 중복 문제

 

 루프 구조에서 발생할 수 있는 또 다른 문제는 유니캐스트 통신에서도 발생한다. 루프를 통해 동일한 패킷이 네트워크를 반복하면서, 목적지에서 중복으로 수신되거나 스위치가 MAC 주소를 잘못 학습하게 된다. 스위치는 패킷의 출발지 MAC 주소를 학습하고 이를 기반으로 전달 경로를 설정한다. 그러나 루프 상황에서는 동일한 MAC 주소가 여러 포트를 통해 전달되기 때문에 스위치는 MAC 주소를 올바르게 학습하지 못하고, MAC 테이블이 계속 갱신되면서 비효율적인 플러딩 현상이 발생한다. 이를 MAC 주소 플래핑(MAC Address Flapping)이라고 한다.

 

 MAC 주소 플래핑이 발생하면 스위치는 주소를 계속 갱신하며 패킷을 모든 포트로 플러딩하게 되어 네트워크 효율이 급격히 떨어진다. 이를 방지하기 위해 일부 스위치에서는 플래핑 경고 메시지를 관리자에게 전송하거나, 자동으로 플래핑 현상이 반복되지 않도록 조치를 취한다.

 

- 루프 예방 및 해결 방법

 

 네트워크 루프를 예방하기 위한 방법은 여러 가지가 있다. 루프를 일으킬 수 있는 포트를 셧다운(Shutdown)하거나, 특정 포트를 비활성화하여 루프를 방지할 수 있다. 그러나 이러한 방법은 수동으로 루프를 찾아내어 포트를 비활성화해야 하므로 비효율적이고 관리가 어렵다. 장애 발생 시에는 다시 포트를 활성화해야 하는 불편함도 존재한다.

 

이러한 문제를 해결하기 위해 스패닝 트리 프로토콜(Spanning Tree Protocol, STP)이 개발되었다. STP는 루프를 자동으로 감지하고, 루프를 일으키는 포트를 차단한다. 또한, 네트워크 장애가 발생했을 때 우회 경로가 필요하면 차단된 포트를 자동으로 다시 활성화하여 네트워크의 안정성을 유지한다. STP는 네트워크에서 루프를 방지하고, 효율적인 경로를 제공하여 네트워크의 안정성을 보장하는 중요한 프로토콜이다.

 

2. STP(Spanning Tree Protocol)

 스패닝 트리 프로토콜(STP)은 네트워크 내 루프를 감지하고 이를 방지하기 위해 포트를 차단하는 기술이다. STP는 네트워크에 루프가 형성되지 않도록 트리 형태로 연결 구조를 유지하며, 루프 발생을 예방한다.

장점 루프를 자동으로 감지하여 차단하고, 네트워크 안정성을 유지함
장애 발생 시 자동으로 우회 경로를 설정해 네트워크 가용성을 보장함.
단점 STP 활성화 시 새로운 장비 연결이나 링크 장애가 발생할 때 시간이 소요될 수 있음
특히, IP 주소 할당 실패 등의 문제가 발생할 수 있으며, 이를 해결하려면 STP 최적화가 필요할 수 있음

 STP는 네트워크 내 모든 스위치 간에 정보를 주고받으며, BPDU(Bridge Protocol Data Unit) 패킷을 통해 연결 상태를 파악하고 루프 발생 가능성이 있는 구간을 차단한다. 이를 통해 스위치는 네트워크의 트리 구조를 설정하며, 루프를 방지한다.

  • BPDU : 각 스위치는 자신의 고유 정보를 BPDU 패킷을 통해 교환하며, 이 정보를 바탕으로 네트워크 트리 구조를 만들고 루프를 예방한다.

 

 - 스위치 포트의 상태 및 변경 과정

 STP 활성화 시 스위치는 새로운 포트를 즉시 포워딩 상태로 전환하지 않고, 순차적으로 다음과 같은 상태를 거친다.

 

 

  • Blocking : 패킷 데이터를 차단한 상태로 상배방이 보내는 BPDU를 기다린다. 총 20초인 Max Age 기간 동안 상대방 스위치에서 BPDU를 받지 못했거나 후순위 BPDU를 받았을 때 포트는 리스닝 상태로 변경되며, BPDU 기본 교환 주기는 2초이고 총 10번의 BPDU를 기다린다.
  • Listening : 리스닝 상태는 해당 포트가 전송 상태로 변경되는 것을 결정하고 준비하는 단계로, 이 상태부터는 자신의 BPDU 정보를 상대방에게 전송하기 시작한다. 총 15초 동안 대기한다.
  • Learning : 러닝 상태는 이미 해당 포트를 포워딩하기로 결정하고 실제로 패킷 포워딩이 일어날 때 스위치가 곧바로 동작하도록 MAC 주소를 러닝하는 단계이다. 총 15초 동안 대기한다.
  • Forwarding : 패킷을 포워딩하는 단계로, 정상적인 통신이 가능하다.

 

 새로운 장비가 연결되면 약 50초 정도의 시간이 소요된다. 이는 스위치가 신중하게 BPDU 패킷을 수신해 스위치 여부를 확인하기 때문이다. 또한, 이중화된 링크가 다운되면 블로킹 상태였던 포트가 약 30초 후 포워딩 상태로 전환된다.

 

 이중화된 링크 절체도 STP 절차를 따른다. 특정 링크가 다운되면 블로킹 상태에 있던 포트가 포워딩 상태로 전환되기까지 처음과 동일하게 약 50초가 걸린다. 그러나 다운된 링크가 해당 스위치의 인터페이스인 경우에는 네트워크 토폴로지 변화를 직접 감지할 수 있어 20초의 Max Age 시간을 생략하고 리스닝부터 시작하여 약 30초 후 포워딩 상태로 전환된다.

 

 STP가 활성화된 스위치 포트는 즉시 포워딩 상태로 전환되지 않아, 이로 인해 장애가 발생하거나 스위치가 비정상적으로 보이는 상황이 발생할 수 있다. 특히 부팅 속도가 빠른 운영체제의 경우, DHCP 네트워크에 연결할 때 부팅 초기에 IP를 요청하지만 스위치 포트가 아직 포워딩 상태가 아니어서 IP 할당에 실패하는 문제가 종종 발생할 수 있다.

 

- STP 동작 방식

STP는 루프를 없애기 위해 나무가 뿌리에서 가지로 뻗어나가는 것처럼 토폴로지를 구성한다. 네트워크상에서 뿌리가 되는 가장 높은 스위치를 선출하고 그 스위치를 통해 모든 BPDU가 교환되도록 하는데 그 수의치를 루트 스위치라고 한다. 모든 스위치는 처음에 자신을 루트 스위치로 인식해 동작한다. BPDU를 통해 2초마다 자신이 루트 스위치임을 광고하는데 새로운 스위치가 들어오면 서로 교환된 BPDU에 들어 있는 브릿지 ID 값을 비교한다. 브릿지 ID 값이 더 적은 스위치를 루트 스위치로 선정하고 루트 스위치로 선정된 스위치가 BPDU를 다른 스위치 쪽으로 보낸다.

 

스패닝 트리 포로토콜은 루프를 예방하기 위해 여러 동작을 수행한다.

  • 루트 스위치 선정
    • STP는 네트워크에서 루프를 방지하기 위해 루트 스위치를 선정한다. 루트 스위치는 네트워크의 중심 역할을 하며, 모든 BPDU가 루트 스위치를 통해 전달된다.
    • 네트워크 내 모든 스위치는 처음에는 자신이 루트 스위치일 것이라고 가정하고 BPDU를 전송한다. 그러나 서로 교환된 BPDU를 통해 브릿지 ID 값을 비교하여, 더 작은 ID를 가진 스위치가 루트 스위치로 선정된다.
    • 루트 스위치로 선정된 스위치는 BPDU를 다른 스위치들로 전달하여 네트워크 트리를 구축한다.
  • 루트 포트 선정
    • 루트 스위치로 가는 가장 짧은 경로를 담당하는 포트를 루트 포트(Root Port)라고 한다.
    • 루트 포트는 루트 브릿지에서 보내는 BPDU를 수신하는 포트로, 다른 스위치에 비해 루트 스위치로 가는 경로가 가장 우선시되는 포트이다.
  • 지정 포트(Designated Port) 선정
    • 각 세그먼트(네트워크 구간)마다 지정 포트가 하나씩 선정된다. 이 포트는 해당 세그먼트에서 트래픽을 전송할 책임이 있다.
    • 지정 포트는 일반적으로 루트 스위치로 가는 루트 포트가 아닌 다른 포트이다. 스위치 간 연결에서 루트 포트가 이미 선정된 경우, 반대쪽은 지정 포트가 되어 양쪽 모두 트래픽을 포워딩할 수 있다.

 

3. 향상된 STP(RSTP, MST)

 향상된 스패닝 트리 프로토콜(STP)의 두 가지 주요 버전인 RSTP(Rapid Spanning Tree Protocol)MST(Multiple Spanning Tree)는 기존의 STP가 가진 문제를 해결하고 네트워크 성능과 관리 효율성을 크게 개선하기 위해 개발되었다. 

 

 - RSTP(Rapid Spanning Tree Protocol)

스패닝 트리 프로토콜(STP)은 이중화된 경로에서 주 경로에 문제가 발생했을 때 백업 경로를 활성화하는 데 30~50초가 걸리며, 이로 인해 긴 전환 시간이 문제가 되고 있다. 이러한 문제를 해결하기 위해 RSTP(Rapid Spanning Tree Protocol)가 개발되었다. RSTP는 전환 시간을 2~3초로 단축하여, 일반적인 TCP 기반 애플리케이션이 세션을 유지할 수 있도록 한다.

 

 RSTP는 기본적인 구성과 동작 방식이 STP와 유사하지만, BPDU 메시지 형식이 다양해져 여러 상태 메시지를 주고받을 수 있다. STP는 토폴로지 변경 관련 두 가지 메시지(TCN, TCA BPDU)만 사용하지만, RSTP는 8비트 필드를 모두 활용하여 다양한 정보를 주위 스위치와 공유한다.

 

 기존 STP에서는 토폴로지 변경 시, 말단 스위치에서 루트 브리지까지 변경 보고가 전달되고, 루트 브리지가 변경된 토폴로지 정보를 다시 계산한 후 네트워크의 모든 스위치에 전파하느라 시간이 오래 걸렸다. 반면, RSTP에서는 토폴로지 변경이 발생한 스위치가 직접 네트워크 전체에 변경 사항을 전파할 수 있어 더욱 빠르게 대응할 수 있다.

 

 RSTP는 다양한 BPDU 메시지와 대체 포트 개념, 변화된 토폴로지 변경 전달 방식 덕분에 기존 STP보다 훨씬 빠르게 네트워크의 토폴로지 변경을 감지하고 복구할 수 있다. 실제로 RSTP는 2~3초 이내에 장애 복구가 가능하므로, 경로 전환이 일어나도 애플리케이션 세션이 유지되어 보다 안정적인 네트워크 운영이 가능하다.

 

 - MST(Multiple Spanning Tree)

 

 일반 스패닝 트리 프로토콜은 CST(Common Spanning Tree)로 알려져 있으며, 이는 VLAN의 수와 관계없이 하나의 스패닝 트리만 동작하게 된다. 이 방식은 스위치의 관리 부하가 적은 장점이 있지만, 모든 VLAN에 대해 하나의 트리가 사용되므로 자원을 효율적으로 활용할 수 없다. 또한, 각 VLAN에 최적의 경로가 다를 수 있는데, CST에서는 단 하나의 포트만 활성화되기 때문에 일부 경우에는 최악의 경로로 통신해야 할 수 있다.

 

 이 문제를 해결하기 위해 PVST(Per VLAN Spanning Tree)가 개발되었다. PVST는 VLAN마다 별도의 스패닝 트리를 운영할 수 있어 각 VLAN에 맞는 최적의 경로를 설정하고, 각 VLAN에 대해 별도의 차단 포트를 지정하여 네트워크 부하를 분산할 수 있게 되었다. 그러나 스패닝 트리 프로토콜이 2초마다 교환되는 특성상, PVST는 모든 VLAN에 대해 별도의 스패닝 트리를 유지해야 하므로 관리 부하가 더 커지게 되었다.

 

 이를 해결하기 위해 MST(Multiple Spanning Tree) 프로토콜이 개발되었다. MST의 핵심 아이디어는 여러 VLAN을 하나의 그룹으로 묶고, 각 그룹마다 별도의 스패닝 트리를 운영하는 것이다. 이를 통해 PVST의 장점인 로드 셰어링 기능을 유지하면서, 더 적은 수의 스패닝 트리 프로세스를 사용할 수 있어 관리 부하를 줄일 수 있다.

 

 MST에서는 리전이라는 개념이 도입되어 여러 VLAN을 하나의 리전으로 묶을 수 있다. 각 리전은 하나의 스패닝 트리를 가지며, 예를 들어 11번부터 50번까지의 VLAN과 101번부터 105번까지의 VLAN을 각각 다른 리전으로 묶으면, 두 개의 스패닝 트리만으로 100개의 VLAN을 관리할 수 있게 된다. 이렇게 MST는 효율적인 리소스 관리와 최적화된 경로 설정을 통해 네트워크 성능을 개선할 수 있다.

특징 RSTP MST
목적 장애 복구 시간을 단축하여 빠른 네트워크 안정성 제공 VLAN의 수를 줄여 관리 효율성을 높이고, 최적화된 경로 제공
포트 역할 빠른 포트 전환과 대체 포트 도입 여러 VLAN을 하나의 리전으로 묶어 관리
복구 시간 2~3초 이내 복구 네트워크 장애에 대한 전반적인 개선
관리 부하 기존 STP보다 관리 부하 적음 여러 VLAN을 묶어 관리하므로 부하가 적음
BPDU 메시지 다양한 메시지 형식과 빠른 전파 각 리전마다 스패닝 트리 운영, BPDU 교환량 감소

 

 

 

 STP는 네트워크에서 루프를 방지하고, 안정성을 유지하는 중요한 프로토콜이다. 네트워크 설계에서 SPoF를 방지하기 위해 이중화된 스위치와 링크를 사용할 수 있지만, 이를 통해 발생할 수 있는 루프 문제를 해결하려면 STP와 같은 메커니즘을 활용해야 한다. 네트워크의 안정성과 효율성을 확보하기 위해 STP를 잘 이해하고 적용하는 것이 중요하다.

728x90