SPoF(Single Point of Failure)로 인한 장애를 피하기 위해 다양한 노력을 한다. SPoF란 하나의 시스템이나 구성 요소에서 고장이 발생했을 때 전체 시스템의 작동이 멈추는 요소를 말한다.
네트워크에서 이러한 문제를 해결하기 위해 이중화, 다중화된 네트워크를 디자인하고 구성한다.
네트워크를 스위치 하나로 구성하면 스위치 장애가 발생시 전체 네트워크에 영향을 주기 때문에 스위치 두 대로 디자인하는 경우가 있는데 이는 패킷이 네트워크를 따라 계속 전송되므로 네트워크 루프가 발생할 수 있다.
루프란?
루프는 말 그대로 네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 상황을 말한다.
네트워크 루프가 발생한다면 네트워크가 마비되고 통신이 안되는 상황이 오는데 원인 대부분이 브로드캐스트 스톰으로 인한 문제이다.
브로드캐스트 스톰
- 루프 구조로 네트워크가 연결된 상태에서 단말에서 브로드캐스트를 발생시킴
- 스위치는 이 패킷을 패킷이 유입된 포트를 제외한 모든 포트로 플러딩
- 플러딩 된 패킷은 다른 스위치로도 보내지고 이 패킷을 받은 스위치는 패킷이 유입된 포트를 제외한 모든 포트로 다시 플러딩
위와 같이 루프 구조에서 패킷이 계속 돌아가는데 이를 브로드캐스트 스톰이라고 한다.
3 계층 헤더에는 TTL(Time to Live)라는 패킷 수명을 갖고 있지만 스위치가 확인하는 2 계층 헤더에는 이런 라이프타임 메커니즘이 없기 때문에 루프가 발생하여 패킷이 죽지않고 계속 살아남아 패킷 하나가 전체 네트워크 대역폭을 차지할 수 있다.
결국 스위치와 네트워크에 연결된 단말 간 통신이 거의 불가능한 상태가 되는 것이다.
스위치 MAC 러닝 중복 문제
루프 구조에서는 유니캐스트도 문제를 일으킨다. 스위치는 출발지 MAC 주소를 학습하는데 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 달라 MAC 주소를 정상적으로 학습할 수 없다.
MAC 주소 테이블은 하나의 MAC 주소에 대해 하나의 포트만 학습할 수 있으므로 동일한 MAC 주소가 여러 포트에서 학습되면 테이블이 반복 갱신되어 정상적으로 동작하지 않는다. 이를 MAC 어드레스 플래핑(MAC Address Flapping)이라 한다.
이런 현상을 예방하기 위해 스위치 설정에 따라 경고 메시지를 관리자에게 알려주거나 수시로 일어나는 플래핑 현상을 학습하지 않도록 자동으로 조치한다.
또 다른 방법 중 하나는 루프 구성 포트 중 하나의 포트만 사용하지 못하도록 셧다운 하는 방법이 있다.
허나 SPoF를 예방하기 위해 다수의 스위치를 디자인했는데 다시 수동으로 셧다운 시킨다면 이는 바람직하지 않다.
그래서 루프를 자동 감지해 포트를 차단하고 장애 때문에 우회로가 없을 때 차단된 포트를 스위치 스스로 다시 풀어주는 스패닝 트리 프로토콜이 개발되었다
STP란?
스패닝 트리 프로토콜(Spanning Tree Protocol)이란 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 메커니즘이다. 용어 그대로 잘 뻗은 나무처럼 뿌리부터 가지까지 루프가 생기지 않도록 유지하는 것이 목적이다.
우선 첫번째로 전체 스위치가 어떻게 연결되는지 알아야 한다.
이를 위해 스위치는 BPDU(Bridge Protocol Data Unit)라는 프로토콜을 통해 스위치 간에 정보를 전달하고 이렇게 수집한 정보를 이용해 전체 네트워크 트리를 만들어 루프 구간을 확인한다.
스위치 포트의 상태 및 변경과정
STP는 동작 중인 스위치에서는 루프를 막기 위해 스위치 포트에 신규 스위치가 연결되면 바로 트래픽이 흐르지 않도록 차단한다. 그리고 해당 포트로 트래픽이 흘러도 되는지 확인하기 위해 BPDU를 기다려 학습하고 구조를 파악한 후 트래픽을 흘리거나 루프 구조인 경우, 차단을 유지한다.
차단 상태에서 트래픽이 흐를 때까지 스위치 포트의 상태는 4가지로 구분된다.
- Blocking
- 패킷 데이터를 차단한 상태로 상대방이 보내는 BDPU를 기다린다.
- Max Age 기간 동안 BDPU를 받지 못하거나 후순위를 받으면 리스닝 상태로 변경
- 기본 교환 주기는 2초며 10번의 BDPU를 기다린다.
- Listening
- 해당 포트가 전송 상태로 변경되는 것을 결정하고 준비하는 단계
- 자신의 BDPU 정보를 상대에게 전송
- 총 15초 동안 대기
- Learning
- 포트를 포워딩하기로 결정하고 실제로 패킷 포워딩이 일어날 때 스위치가 바로 동작하도록 MAC 주소를 러닝
- 총 15초 동안 대기
- Forwarding
- 패킷을 포워딩하는 단계, 정상적인 통신 가능
만약 새로운 스위치를 붙인다면 통신하는데 총 50초가 소요된다는 것이다. 이때 스위치를 연결하는 경우뿐만 아니라 일반 단말을 연결하더라도 동일한 시간이 필요하다.
STP 동작 방식
STP는 루프를 없애기 위해 나무가 뿌리에서 가지로 뻗어나가는 것처럼 토폴로지를 구성한다.
토폴로지(topology) : 컴퓨터 네트워크의 요소들(링크, 노드 등)을 물리적으로 연결해 놓은 것, 또는 그 연결 방식
네트워크상에서 뿌리가 되는 가장 높은 스위치를 선출하고 그 스위치를 통해 모든 BPDU가 교환되도록 하는데 그 스위치를 루트 스위치라고 부른다.
모든 스위치는 처음에 자신을 루트 스위치로 인식해 동작한다. 새로운 스위치가 들어오면 서로 교환된 BPDU에 들어 있는 브릿지 ID 값을 비교한다. ID값이 더 적은 스위치를 루트로 정하고 루트로 선정된 스위치가 BPDU를 다른 스위치 쪽으로 보낸다.
동작 과정은 다음과 같다.
- 하나의 루트 스위치를 선정
- 전체 네트워크에 하나의 루트 스위치 선정
- 자신을 대표 스위치로 적은 BPDU를 옆 스위치로 전달
- 루트가 아닌 스위치 중 하나의 루트 포트를 선정
- 루트 브릿지로 가는, 경로가 가장 짧은 포트를 루트 포트라고 한다.
- 루트 브릿지에서 보낸 BPDU를 받는 포트
- 하나의 세그먼트에 하나의 지정 포트를 선정
- 스위치와 스위치가 연결되는 포트는 하나의 지정 포트를 선정
- 스위치 간의 연결에서 이미 루트 포트로 선정된 경우, 반대쪽이 지정 포트로 선정되어 양쪽 모두 포워딩 상태
- 스위치 간의 연결에서 아무도 루트 포트가 아닐 경우, 한쪽은 지정 포트, 다른 한쪽은 대체 포트가 되어 차단 상태
- BPDU가 전달되는 포트
향상된 STP(RSTP, MST)
STP는 루프를 예방하기 위해 같은 네트워크에 속한 모든 스위치까지 BPDU가 전달되는 시간을 고려한다. 그러다 보니 블로킹 포트가 포워딩이 될 때까지 30~50초가 소요된다. TCP 기반 애플리케이션에서 30초를 기다리지 못하다 보니 통신이 끊길 수 있다. 그래서 향상된 STP가 등장하였다
RSTP(Rapid Spanning Tree Protocol)
STP는 이중화된 스위치 경로 중 정상적인 경로에 문제가 발생할 경우, 백업 경로를 활성화하는데 30~50초가 걸린다. 이는 시간이 오래 걸리기 때문에 RSTP가 개발되었다. RSTP는 2~3초로 시간이 짧아 TCP 애플리케이션이 세션을 유지할 수 있게 된다.
STP는 일반 토폴로지 변경과 관련된 두 가지 메시지(TCN, TCA)만 있지만 RSTP는 8개 비트를 모두 활용한다.
기존 STP에서는 토폴로지가 변경되면 말단 스위치에서 루트 브릿지까지 변경 보고를 보내고 루트 브릿지가 그에 대한 연산을 다시 완료하고 이후 변경된 토폴로지 정보를 말단 스위치까지 보내는 과정에다가 네트워크에 있는 모든 스위치까지 전파되는 예비 시간까지 더하면 오래 걸리는 시간이다.
하지만 RSTP는 토폴로지 변경이 일어난 스위치 자신이 모든 네트워크에 토폴로지 변경을 직접 전파할 수 있다.
이로서 RSTP는 빠른 시간 내에 토폴로지 변경을 감지, 복구할 수 있어 애플리케이션 세션이 끊기지 않아 보다 안정적으로 네트워크를 운영하는데 도움이 된다.
MST
일반 스패닝 트리 프로토콜은 CST(Common Spanning Tree)라고 부른다. VLAN 개수가 많더라도 한 개의 트리만 동작하게 되는데 이는 스위치의 관리 부하를 감소시키지만 루프가 생기는 토폴로지에서 한 개의 포트와 회선만 활성화되므로 자원을 효율적으로 활용할 수 없다.
또한 VLAN마다 최적의 경로가 다를 수 있는데 하나의 포트만 사용하면 멀리 돌아 통신할 수도 있다.
이 문제를 해결하기 위해 PVST(Per Vlan Spanning Tree)가 개발되었고 VLAN마다 다른 스패닝 트리 프로세스가 동작하므로 VLAN마다 별도의 경로와 트리를 만들 수 있게 되었다.
허나 PVST는 모든 VLAN마다 별도의 스패닝 트리를 유지해야 하므로 많은 부담이 되었다.
그래서 CST, PVST의 단점을 보완하기 위해 MST(Multiple Spanning Tree)가 개발되었다.
MST는 여러 개의 VLAN을 그룹으로 묶고 그 그룹마다 별도의 스패닝 트리를 동작한다. 이 경우 PVST보다 적은 스패닝 트리 프로토콜 프로세스가 돌게 되고 로드 셰어링 기능도 함께 사용할 수 있다.
로드 셰어링(Road Sharing) : 부하를 고루 분담시켜 한 곳에 과다하게 집중되는 것을 막는다는 일반적인 용어
'CS > 네트워크' 카테고리의 다른 글
라우팅 설정 방법 (0) | 2022.06.30 |
---|---|
라우터(L3 스위치 : 3계층 장비)란? (0) | 2022.06.24 |
VLAN(Virtual Local Area Network) (0) | 2022.06.21 |
스위치(switch)란? (0) | 2022.06.21 |
서브넷과 게이트웨이 (0) | 2022.06.03 |