네트워크

스위치::2계층 장비 - 3 (STP)

우잉~ 2024. 11. 24. 16:42

STP(Spanning Tree Protocol)

스패닝 트리 프로토콜이란 루프 상태를 확인하고 포트를 사용하지 못하게 만든다. → 루프를 예방하기 위해 만들어진 프로토콜

 

이게 뭔 소리냐? 

STP를 이해하기 위해 우선 루프에 대해서 알아보겠다.

 

루프는 사전 정의에 따르면 고리라는 뜻이다.

네트워크에서 사용하는 루프의 정의도 비슷하다. 네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 모습을 뜻한다. 결국 빙글빙글 돈단 소린데 이런 루프가 발생하게 되면 패킷이 멈추지 않고 빙글빙글 돌기 때문에 네트워크가 마비될 수 있으며 통신 또한 불가능해진다.

루프 구조 두 장비 간의 이중화 연결/장비 간의 연결이 고리 형태로 연결/장비 간의 연결이 고리 형태로 연결

 

왜 패킷이 돌고 도는 루프 현상이 발생하게 되는 것일까?

이유는 세 가지 정도로 나뉘지만 대부분은 브로드캐스트 스톰으로 인한 문제로 발생하게 된다.

루프 구조로 네트워크가 연결되었을 때, 브로드캐스트를 발생시키면 스위치가 패킷을 모든 포트로 플러딩하게 된다. 패킷을 전달 받은 스위치도 또 플러딩하게 될 것이다.

플러딩→플러딩 →플러딩 → ... 이러한 과정을 브로드캐스트 스톰이라 한다.

3계층에서는 패킷 헤더에 TTL(Time to Live)라는 패킷 수명 주기를 가지고 있기 때문에 TTL 값이 0이 되면 자동으로 패킷이 소멸되어버리지만, 2계층의 경우에는 TTL이 존재하지 않기 때문에 패킷이 죽지 않고 계속 돌아 네트워크를 마비시키게 된다... 예: 단말 속도 느려짐=CPU 사용률 증가, 네트워크 접속 속도 저하 등

 

두 번째 루프 발생 이유는 스위치 MAC 러닝 중복 문제이다.

루프 현상으로 인해 패킷이 직접 전달된 게 아니라, 다른 스위치를 통해서 돌아돌아 전달되어 버리면 MAC 주소 테이블도 정상적으로 학습할 수가 없게 된다. 동일한 MAC 주소가 여러 포트에서 학습되게 된다면 반복적으로 갱신이 되기 때문에 동작이 이상하게 될 것이다. → 이 현상을 MAC 주소 플래핑이라고 한다.

스위치의 MAC 주소 중복으로 인해 발생하는 맥 주소 플래핑 현상

 

위와 같은 문제로 인해 발생하는 루프를 방지하기 위해서는 스위치 설정에 따라 경고 메시지를 보내거나 플래핑 현상을 막을 수 있도록 조치를 해야하는데, 이를 도와주는 프로토콜이 바로 STP(스패팅 트리 프로토콜)이다.

스패닝 트리 프로토콜은 장애가 발생되면 차단하고 있던 포트를 자동으로 복구하여 원활한 네트워크 상태를 유지할 수 있도록 한다.

스패닝 트리 포트 동작 방식

 

루프처럼 돌고 돌아 결국 STP란 스위치 간의 루프를 확인하고 적절하게 포트를 차단하거나 포워딩할 수 있는 상태로 만들어 루프를 방지하는 프로토콜이다.

STP가 이렇게 포트를 제어할 수 있는 상태로 만들기 위해서는 스위치가 어떻게 연결되어 있는지 알고 있어야 한다.

그래서 전체적인 스위치 연결 상태를 파악하기 위해 BPDU(Bridge Protocol Data Unit)라는 프로토콜을 통해 스위치 간에 정보를 전달하고 정보(ID, MAC Address 등)를 수집하게 된다. 이를 통해 전체 네트워크 트리를 만들어 루프 구간을 확인할 수 있다.

 

이미 스패닝 트리 프로토콜이 동작하고 있는 스위치에서는 루프를 막기 위해서 새 스위치를 달면 바로 차단 상태로 변경한다. 그리고 루프 상태가 아닌지 확인하는 과정을 거치고 포워딩 상태로 변경하는데 이 과정의 상태를 4가지로 나눌 수 있다.

 

Blocking 차단한 상태
상대방이 보내는 BPDU를 기다리게 된다.
Listening 차단 해제 상태로 변경되기 위해 준비하는 상태
자신의 BPDU를 상대방에게 전송한다.
Learning 해당 포트를 포워딩하기로 결정한 상태
실제로 패킷 포워딩이 일어날 때 곧바로 스위치가 동작할 수 있도록 MAC 주소를 학습한다.
Forwarding 패킷을 포워딩하는 단계
정상적인 통신이 가능하다.

 

이러한 4가지 과정에서 스위치 대기 시간이 필요한데 최소 50초가 소요된다.

기본 스패닝 트리 프로토콜 상태 변화

 

* 스위치 자체 포트에 이상이 있을 경우에는 리스닝부터 상태 변화가 이루어지게 된다! 최소 30초 소요

 

 

스패닝 트리 프로토콜은 이름에 걸맞게 루프를 없애기 위해서 나무가 뿌리에서 가지로 뻗어나가는 것처럼 토폴로지를 구성한다. 

* 토폴로지: 네트워크에서 장치들 간의 물리적 또는 논리적 연결 구조

 

네트워크에서 뿌리가 되는 가장 높은 스위치를 뽑고, 해당 스위치를 통해 모든 BPDU를 교환하도록 한다. 이 스위치를 루트 스위치 또는 루트 브리지라고 부른다.

모든 스위치는 연결될 때 자신이 루트 스위치라고 인식하여 동작하게 되면서 자신의 BPDU를 보내면서 본인이 루트 스위치라고 소문내는데, 다른 스위치의 BPDU가 들어오면 서로 브릿지 ID 값을 비교하게 된다. → ID 값이 적은 스위치를 루트 스위치로 선정한다. 

 

 

 

* 백업 경로를 활성화하는 데 최소 50초나 걸리는 STP의 문제를 해결하기 위한 RSTP(Rapid Spanning Tree Protocol), 최적의 경로를 찾아 빠르게 통신할 수 있는 MST(Multiple Spanning Tree)도 존재한다.