IT환경에서는 SPoF(Single Point Of Failure: 단일 장애점)로 인한 장애를 피하기 위해 노력하고 있다
SPoF: 하나의 시스템이나 구성요소에서 고장이 발생했을때 전체 시스템의 작동이 멈추는 요소
스위치 한대로 구성했을때 그 스위치에 장애가 발생하면 전체 네트워크에 장애가 발생
이런 SPoF를 피하기 위해 스위치 두 대로 네트워크를 디자인해도 두 대 이상의 스위치로 패킷이 네트워크를 따라 계속 전송이 되어서 네트워크를 마비 시킬 수 있다
-> 이것을 루프(Loop)라고 한다, 예방하기 위해선 별도의 메커니즘이 필요
루프: 네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 상황을 말함
루프상황이 발생하면 네트워크가 마비되고 통신이 안됨 대부분 브로드캐스트 스톰(Storm)으로 인한 문제이다
브로드캐스트 스톰
2.1.1. 루프 구조로 네트워크가 연결된 상태에서 단말에서 브로드캐스트 발생하면 유입된 포트를 제외한 모든 포트로 플러딩
2.1.2. 플러딩된 패킷은 다른 스위치로 보내지고 유입된 포트를 제외한 모든 포트로 다시 플러딩 하는것
2계층 헤더에서는 이런 3계층의 TTL(Time to Live)와 같은 라이프타임 메커니즘이 없음
2.1.1.1. 네트워크에 접속된 단말의 속도가 느려지고 CPU 사용률이 높아짐
2.1.1.2. 네트워크 접속 속도가 느려짐
2.1.1.3. 스위치에 모든 LED들이 동시에 빠른 속도로 깜빡임
루프 구조에서는 브로드캐스트 뿐만아니라 유니캐스트 문제도 일어남
스위치에 학습된 주소의 포트가 계속 변경되어 스위치가 정상동작하지 못하고 패킷을 플러딩하게됨
2.2.2.1. 스위치 설정에 따라 경고 메시지를 관리자에게 얼려줌
2.2.2.2. 플래핑 현상을 학습하지 않도록 자동조치
2.2.2.3. 루프 구성 포트중 하나의 포트만 사용하지 못하도록 셧다운
스패닝 트리 프로토콜 (Spanning Tree Protocol): 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 메커니즘
3.1. 루프를 예방하기 위해선 스위치가 어떻게 연결되어있는지 알아야함
3.2. 스위치 간에 정보를 전달하는 방법이 필요하다
3.3. BPDU(Bridge Protocol Data Unit)라는 프로토콜을 통해 스위치간에 정보를 전달
STP는 루프를 막기위해 스위피 포트에 신규 스위치가 연결되면 바로 트랙이 흐르지 않도록 차단함
확인을 위해 BPDU를 기다려 학습하고 구조를 파악한뒤 트래픽을 흘리거나, 루프 구조인 경우 차단 상태를 유지
3.1.1.1. 패킷을 차단한 상태로 상대가 보내는 BPDU를 기다림
3.1.1.2. MAX Age(20초) 동안 BPDU를 받지 못하거나 후순위 BPDU를 받으면 리스닝 상태로 변경
3.1.1.3. 기본 교환 주기 2초, 10번 BPDU를 기다림
3.1.2.1. 해당 포트가 전송 상태로 변경되는 것을 결정하고 준비하는 단계
3.1.2.2. 자신의 BPDU정보를 상대방에게 전송하기 시작
3.1.2.3. 총 15초 동안 대기
3.1.3.1. 포트를 포워딩하기로 결정하고 실제로 패킷 포워딩이 일어날때 곧바로 동작하도록 MAC 주소를 러닝하는 단계
3.1.3.2. 총 15초 동안 대기
3.1.4.1. 패킷을 포워딩하는 단계
3.1.4.2. 정상적인 통신이 가능함
RSTP(Rapid Spanning Tree Protocol): STP가 시간이 너무 오래걸리는 문제를 해결하디 위해 개발
- 2~3초 절체 시간이 짧아 일반적인 TCP 기반 애플리케이션 세션을 유지 가능함
- 트폴로지가 변경이 일어난 스위치 자신이 모든 네트워크에 토폴로지 변경을 직접 전파 할 수 있음