본문 바로가기
Network Infra 쉽게 이해하기/L2 Network 쉽게 이해하기

Spanning Tree Protocol(STP) 쉽게 이해하기 #1

by 네트워크 엔지니어 환영 2021. 2. 20.
반응형
이 글에서는 Interface(인터페이스), Port(포트) 이 두 단어를 혼용합니다. 의미는 동일합니다.

백본 스위치

backbone
1. 척추, 등뼈 2. 근간, 중추 3. 기개, 근성

- 출처 : 네이버 백과사전 -

Backbone(이하 백본)의 사전적 정의는 척추입니다. 인간의 신체에서 보면 손과 발, 눈, 귀 등에서 수집된 정보는 백본(척추)을 통해 뇌로 가고 뇌에서 각 신체로 하달하는 명령 또한 백본(척추)을 통해 갑니다. 백본(척추)이 없다면 뇌와 신체 기관은 서로 통신을 할 수 없게 되고 사람은 식물과 다름없는 상태가 되지요.

<네트워크 인프라 구성의 한 예시>

네트워크 또한 마찬가지입니다. 위의 그림처럼 Cisco 스위치로 네트워크를 구축한 10층짜리 건물이 있다고 가정해봅시다. 일반적으로 네트워크 인프라를 구축할 때에는 중앙 서버실에 라우터, 내부 리소스 보호를 위한 방화벽, 웹방화벽, IPS 등이 설치됩니다. 또한 1층부터 10층까지 사무실 사용자들을 위한 L2 스위치가 설치되죠. 하단의 빨간 박스에 해당합니다. 그리고 사용자들의 트래픽은 L2 스위치를 통해 백본 스위치로 집결한 뒤 IPS, 방화벽, 외부 라우터 등을 통과한 후 외부 인터넷으로 나아갑니다. 즉 1층~10층 스위치에서 온 트래픽이 집결하는 첫 장소, 외부에서 온 트래픽이 1층 ~ 10층 스위치에 연결된 PC로 이동하기 위한 집결지가 백본 스위치인 것입니다. '백본'의 사전적 의미와 동일하죠? 

 

백본 스위치의 필요성과 이중화 

백본 스위치의 필요성은 여기에서 그치지 않습니다. 백본 스위치는 VLAN 간 통신을 가능케하는 Inter-VLAN Routing을 지원하여 VLAN으로 분할된 네트워크간 통신을 담당합니다. 또한 'DMZ' Zone처럼 외부에서도 진입이 가능한 곳도 내부에서 진입할 수 있도록 해줍니다. 백본 스위치가 존재하지 않는다면 수많은 L2 스위치들에 연결된 사용자들은 외부 인터넷을 사용할 방법도, 서로에게 통신할 방법도 없으며, 내부의 다른 네트워크 구역에도 도달할 수 없습니다. 말그대로 '척추'인 것이죠. 이러한 중요성 때문에 백본 스위치는 비교적 성능이 좋은 L3 스위치가 사용됩니다. Cisco 社의 Catalyst 스위치의 경우, 6500 시리즈나 9400 시리즈 등이 사용되는 것을 많이 보았습니다. 

또한 백본 스위치를 둘 때는 거의 대부분의 경우 이중화를 합니다. 백본 스위치를 한 대가 아닌 두 대를 두고 한 대가 장애 상황에 빠져 제기능을 수행하지 못할 경우, 나머지 한 대가 기능을 대행하도록 하는 것이죠. 혹은 물리적인 장비 2대를 논리적으로 엮어서 하나의 장비처럼 운용하기도 합니다. 백본 스위치의 중요성이 실감 나는 부분이죠?

아래 그림 두 개는 이중화한 백본 스위치와 백본 스위치에 연결된 1층의 스위치 두 대를 표현한 것입니다. 백본 스위치 이하의 그림 중 1층에 위치한 스위치 두 대와 백본 스위치 두 대를 빠짐없이 연결하여 표현하였습니다. 그리고 백본 스위치 두 대와 1층 스위치 두 대는 VLAN 3개를 동일하게 가지고 있습니다. VLAN 10, VLAN 20, VLAN 30이 그것입니다.

<빨간색 박스의 백본 스위치와 1층 스위치를 부분 확대한 그림(아래와 동일)>
<백본 스위치와 1층 스위치(위와 동일)>

위 그림을 보니 스위치들이 박스형 구조를 이루고 있습니다. 즉 연결이 끊어질 수 있는 모든 경우의 수를 생각하여 서로를 연결했기 때문이죠. 그런데 말입니다. Layer 2에서 동작하며 Ethernet Frame(이하 이더넷 프레임)을 전송하는 4대의 스위치가 박스형 구조라... 무언가가 떠오르지 않으신가요?

 

Broadcast Storm(브로드캐스트 폭풍)

Broadcasting(브로드캐스팅)은 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식을 의미한다.

- 출처 : 위키백과 -
Broadcast Storm(이하 브로드캐스트 폭풍)은 컴퓨터 네트워크에서 브로드 캐스트 및 멀티 캐스트 트래픽이 누적되는 것입니다. 과도한 양의 브로드 캐스트 트래픽은 "브로드 캐스트 폭풍"을 구성한다.

- 출처 : 위키백과 -

브로드캐스트는 위키백과의 정의처럼 송신자가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식입니다. 브로드캐스트를 사용하는 대표적인 프로토콜은 ARP(Address Resolution Protocol)가 있죠. 아래 그림과 함께 살펴보겠습니다.

<백본 스위치와 1층 스위치>

(VLAN 10 : 10.10.10.x/24, VLAN 20 : 10.10.20.x/24, VLAN 30 : 10.10.30.x/24)

위에서 봤던 그림과 비교해 그림이 약간 달라졌습니다. 스위치의 인터페이스에 녹색 불빛이 들어와있습니다. 각 스위치의 링크(인터페이스)가 살아있고 데이터 통신이 가능하다는 뜻입니다. 이 상태에서 사용자가 인터넷을 사용하기 위해 PC 1을 설치합니다. 또한 IP 주소도 10.10.10.1/24로 부여했습니다. 이 IP 대역 10.10.10.x/24은 VLAN 10에 해당합니다.

<스위치 1에 연결된 PC(10.10.10.1/24)>

PC까지 연결되었습니다. 그런데 뭔가 이상하지 않으신가요? 스위치의 인터페이스 색이 녹색이 아닌 짙은 녹색입니다. 게다가 PC에서 다른 PC로 Ping을 쏴도 아무런 응답이 오지 않습니다. 어떻게 된 일일까요? 원인은 바로 Broadcast(GARP)에 있습니다.

GARP(Gratuitous ARP)

네트워크 상의 다른 장비들의 ARP 캐쉬를 갱신 또는 중복방지를 위해, 자신의 하드웨어 주소 및 IP 주소를 Broadcasting(브로드캐스팅) 하여주는 간단한 프로토콜.

- 출처 : 정보통신기술용어해설(http://ktword.co.kr/)>

PC를 스위치에 연결하면 PC는 이더넷 프레임(GARP)Broadcasting(이하 브로드캐스트)하여 자신이 사용 중인 IP 주소와 MAC 주소를 동일한 네트워크 상에 있는 네트워크 장비와 호스트에게 전달합니다. 자신이 이 주소를 사용하고 있으니 알아 두라는 뜻이죠. 이때 아래 그림처럼 목적지 MAC 주소를 'ff:ff:ff:ff:ff:ff'로 설정합니다. 즉 모든 네트워크 장비와 호스트에게 전달하겠다는 뜻이지요.

<GARP의 이더넷 프레임 구성(출처 : https://www.packetflow.co.uk/)>

PC가 이더넷 프레임(GARP)를 브로드 캐스팅하여 1st Floor Switch 1에 전달하였습니다. 그다음에는 어떻게 되는지 살펴보면 다음과 같습니다. (Backbone 1 = 백본 스위치 1, Backbone 2 = 백본 스위치 2, 1st Floor Switch 1 = 일반 스위치 1, 1st Floor Switch 2 = 일반 스위치 2)

1. 이더넷 프레임(GARP)의 목적지가 'ff:ff:ff:ff:ff:ff'임을 확인한 일반 스위치 1은 이더넷 프레임이 들어온 포트를 제외한 모든 포트로 전달.(백본 스위치 1과 일반 스위치 2로 전달)

2. 이더넷 프레임을 전달받은 백본 스위치 1과 일반 스위치 2가 전달받은 포트를 제외한 모든 포트로 전달.(백본 스위치 2로 전달)

3. 백본 스위치 1과 일반 스위치 2에게 이더넷 프레임을 전달받은 백본 스위치 2가 전달받은 포트를 제외한 모든 포트로 전달.(백본 스위치 1과 일반 스위치 1로 전달)

4. 백본 스위치 1과 일반 스위치 1에게서 이더넷 프레임을 전달받은 일반 스위치 1은 전달받은 포트를 제외한 모든 포트로 전달(백본 스위치 1, 일반 스위치 2와 PC로 전달)

5. 이더넷 프레임을 전달받은 백본 스위치 1과 일반 스위치 2가 전달받은 포트를 제외한 모든 포트로 전달.(백본 스위치 2로 전달) -- 2번과 동일

6. 백본 스위치 1과 일반 스위치 2에게 이더넷 프레임을 전달받은 백본 스위치 2가 전달받은 포트를 제외한 모든 포트로 전달.(백본 스위치 1과 일반 스위치 1로 전달) -- 3번과 동일

7. 백본 스위치 1과 일반 스위치 1에게서 이더넷 프레임을 전달받은 일반 스위치 1은 전달받은 포트를 제외한 모든 포트로 전달(백본 스위치 1, 일반 스위치 2와 PC로 전달) -- 4번과 동일

8. 무한 반복....

VLAN 10의 네트워크에 소속된 스위치들은 이더넷 프레임을 무한히 전달하고 받는 과정을 반복합니다. 그리고 이 과정은 매우 빠른 속도로 진행됩니다. 스위치는 이 이더넷 프레임을 처리하기 위해 자신이 가진 모든 리소스를 소모하게 되고 다른 작업에 신경 쓸 여유가 없어집니다. 그렇게 되면 정상적인 통신이 불가능해집니다. 이더넷 프레임이 끊임없이 휘몰아치는 이 현상을 브로드캐스트 폭풍이라고 합니다. 보통 Loop(루프)라고 편하게 부르며 이러한 상황이 나타나면 '루프가 발생했다'고 합니다. 

<브로드캐스트 폭풍의 발생>

뿐만 아니라 ARP의 경우, 스위치는 동일한 이더넷 프레임을 양쪽에서 받기 때문에 MAC Address Table을 유지하는데 어려움을 겪게 됩니다. ARP Request가 양쪽에서 들어오기 때문에 MAC 주소가 이 포트에 연결되어있다고 테이블에 기록했다가 저 포트에 연결되어있다고 기록하니 혼란이 발생할 수밖에 없죠. 

'뫼비우스의 띠'와 같은 브로드캐스트 폭풍을 해결하기 위해서는 순환 구조를 끊는 방법밖에 없습니다. 즉 인터페이스 하나를 차단해 스위치간 연결을 끊어서 순환 구조를 봉쇄하는 것이죠. 그리고 이러한 순환 구조를 끊기 위해 스위치들이 일련의 협상과정을 거쳐 안정된 네트워크를 유지하도록 가능케하는 프로토콜을 Spanning Tree Protocol(이하 스패닝 트리 프로토콜)이라 합니다.

 

Spanning Tree Protocol란 무엇이며, 왜 필요한가?

Spanning Tree Protocol(스패닝 트리 프로토콜)은 래디아 펄먼이 고안한 알고리즘에 기반한 OSI 2계층 프로토콜로 브리지 랜에서 루프 발생을 방지하기 위해 사용된다.

- 출처 : 위키백과 -

스패닝 트리 프로토콜은 이더넷 프레임을 주고 받는 계층인 OSI 2 계층의 프로토콜로 루프 발생 방지를 위해 만들어졌습니다. 루프가 발생할 수밖에 없는 구조에서는 반드시 스패닝 트리 프로토콜을 활성화시켜야 하며 Cisco에서 생산되는 스위치들은 기본적으로 스패닝 트리 프로토콜이 활성화되어있습니다. 그리고 각 VLAN마다 루프가 발생하는 것을 막기 위해 VLAN마다 스패닝 트리 프로토콜을 활성화시키는데요. 이를 PVST(Per VLAN Spanning Tree)라고 부릅니다. 시스코 고유의 프로토콜이죠. 위의 그림에 대입하여 보면 VLAN 10, VLAN 20, VLAN 30마다 별도의 스패닝 트리 프로토콜을 활성화시킨다고 볼 수 있겠네요.

스패닝트리 프로토콜을 통해 실현하고자 하는 궁극적인 목표는 루프 발생 차단입니다. 이를 실현하기 위해 스위치들은 자신들이 갖고 있는 인터페이스 중 하나를 Block(이하 블락)시키고자 협상을 합니다. 그래야 이더넷 프레임이 끊임없이 돌지 않고 차단된 인터페이스에서 막히는 것이죠. 하지만 자신의 인터페이스를 막고 싶은 스위치가 어디 있겠습니까? 사람도 공동체의 이익을 위해 협상을 벌일 때 자신이 손해보지 않기를 바라죠. 스위치도 똑같습니다. 자신의 인터페이스를 막고 싶어 하지 않습니다. 그래서 협상을 벌이게 되죠.

<루프 발생 차단을 위한 인터페이스 블락>

스패닝 트리 프로토콜의 협상 과정은 크게 두 개로 나눌 수 있습니다. Root Switch 선정Port 선정이 바로 그것입니다.

1. Root Switch, Non Root Switch 선출
2. Root / Designated / Alternated Port 선출

인터페이스를 차단하려면 어떤 스위치의 인터페이스를 차단해야 할지 정해야겠죠? 그래서 먼저 가장 힘센 스위치(?)를 정해야 합니다. 이를 Root Switch(이하 루트 스위치)라 하며 루트 스위치는 인터페이스를 블락하지 않아도 됩니다. 루트 스위치로 선정되지 못 한 스위치들은 이 루트 스위치를 바라보며 자신이 루트 스위치와 얼마나 가까운 지 경쟁합니다. 루트 스위치와의 친분이 가장 적은(?) 스위치는 인터페이스를 블락해야 하는 불행을 겪어야 하죠.

스위치의 서열이 정해지고 나면 이번엔 스위치 인터페이스의 서열을 정해야 합니다. 스위치마다 어떤 인터페이스가 루트 스위치에 가장 가까운 지 경쟁합니다. 그리고 가장 경쟁력이 떨어지는 스위치의 가장 경쟁력이 떨어지는 포트가 결국 블락될 운명에 놓이게 되죠. 루트 스위치와 가장 가까운 포트를 Root Port(이하 루트 포트), 차단될 운명에 놓인 포트를 Alternated Port(이하 블락 포트) 그리고 그 이외의 포트를 Designated Port(이하 지정 포트, 발음이 어렵죠?)라 합니다. 

<1st Floor Switch 2의 포트가 차단되어 순환 구조가 사라진 모습>

이 일련의 과정을 거치면 순환 구조가 사라지고 더 이상 이더넷 프레임이 빙빙 돌지 않게 됩니다. 스패닝 트리 프로토콜의 궁극적인 목적을 달성하는 것이죠. 다음 문서인 스패닝 트리 쉽게 이해하기 #2와 #3에서는 이 과정에 대해 설명합니다. 감사합니다!

반응형

댓글