CS/네트워크

[후니의 쉽게 쓴 네트워킹] 6장 스위치를 켜라!

12.tka 2022. 12. 10. 16:14
728x90
스패닝 트리(Spanning Tree)

 

스위치나 브리지 구성에서 출발지부터 목적지까지의 경로가 2개 이상 존재할 때 1개의 경로만을 남겨두고 나머지는 모두 끊어두었다가, 사용하던 경로에 문제가 발생하면 끊어두었던 경로를 하나씩 살리는 프로토콜이다. 이를 통해 스위치나 브리지에서 발생하는 루핑을 막을 수 있다.

 

스패닝 트리 프로토콜을 이해하기 전에 먼저 2가지 개념을 이해해야 한다.

 

첫 번째는 브리지 ID이다.

  • 브리지 ID란, 브리지나 스위치들이 통신할 때 서로를 확인하기 위해 하나씩 가지고 있는 번호라고 생각하면 된다.
  • 16비트의 브리지 우선순위(Bridge Priority)와 48비트의 맥 어드레스로 구성되어 있다.
  • 스위치 ID가 아니라 브리지 ID라고 부르는 특별한 이유는 없다. 스패닝 트리 프로토콜에서 브리지와 스위치의 차이가 없기 때문에 예전부터 사용하던 브리지 ID를 스위치에도 그대로 적용하고 있다고 한다.

두 번째는 Path Cost이다.

  • 하나의 스위치에서 다른 스위치로 가는 데 드는 비용을 말한다.
  • 낮은 값이 더 높은 우선순위를 가진다.
  • 소수점이 나오지 않도록 하기 위해서 각 속도마다 정해진 Past Cost 값이 있다. (ex, 4 Mbps의 Past Cost는 250)

2가지 개념을 이해했으니 이제 본격적으로 스패닝 트리 프로토콜에 대해서 알아보자. 스패닝 트리 프로토콜은 복잡한 스위치의 루핑을 방지하기 위한 복잡한 프로토콜처럼 보이지만, 기본적인 동작만 이해하면 아주 단순 명료하다. 기본적인 동작은 다음과 같다.

  1. 네트워크당 하나의 루트 브리지를 갖는다.
  2. 루트 브리지가 아닌 나머지 모든 브리지는 무조건 하나씩의 루프 포트를 갖는다.
  3. 세그먼트당 하나씩의 데지그네이티드 포트(Designated Port)를 갖는다.

첫 번째로 네트워크당 하나의 루트 브리지를 갖는다고 말했다. 여기서 말하는 네트워크는 스위치나 브리치로 구성된 하나의 네트워크를 말한다. 따라서 라우터에 의해 나누어지는 브로드캐스트 도메인이 하나의 네트워크라고 생각하면 된다. 그렇다면 루트 브리지는 무엇일까? 대장 브리지이다. 즉 스패닝 트리 프로토콜을 수행할 때 기준이 되는 브리지(스위치)이다. 참고로 대장 브리지는 무조건 낮은 BID를 갖는 녀석이 된다.

 

두 번째, 루트 브리지가 아닌 나머지 모든 브리지를 Non Root Bridge라고 하는데, 이 Non Root Bridge 당 하나씩의 루트 포트를 가져야 한다. 루트 포트란, 루트 브리지에 가장 빨리 갈 수 있는 포트를 말한다. 즉 루트 브리지 쪽에 가장 가까운 포트라고 볼 수 있다. 위에서 말했듯이 네트워크당 하나씩의 루트 브리지가 있으므로 루트 브리지를 제외한 나머지 모든 브리지는 자동으로 Non Root Bridge가 된다. 따라서 나머지 브리지들은 루트 브리지 쪽으로 가장 가까이 있는 루트 포트를 하나씩 지정해 주어야 한다.

 

세 번째, 세그먼트당 하나씩의 Designated Port를 갖는다. 여기서 세그먼트란, 브리지 또는 스위치 간에 서로 연결된 링크라고 생각하면 된다. 즉 브리지나 스위치가 서로 연결되어 있을 때 이 세그먼트에서 반드시 한 포트는 Designated Port로 선출되어야 한다. 루트 브리지까지의 Past Cost, 즉 세그먼트 상에서 Root Path Cost를 비교해서 더 작은 Root Past Cost를 가진 포트가 Designated Port로 선출된다.

 

스패닝 트리 프로토콜에서는 루트 포트나 데지그네이티드 포트가 아닌 나머지 모든 포트는 다 막아버린다. 즉 루트 포트나 데지그네이티드 포트를 뽑는 목적은 어떤 포트를 살릴지 결정하기 위한 것이다.

 

지금까지 스패닝 트리 프로토콜에서 어떤 일이 일어나는지 알아보았다. 어떤 일이 벌어질 때 순서를 정하는 방법은 다음과 같다.

  1. 누가 더 작은 Root BID를 가졌는가?
  2. 루트 브리지까지의 Path Cost 값은 누가 더 작은가?
  3. 누구의 BID(Sender BID)가 더 낮은가?
  4. 누구의 포트 ID가 더 낮은가?

브리지(스위치)는 스패닝 트리 정보를 주고받기 위해서 특수한 프레임을 사용하는데, 이를 BPDU(Bridge Protocol Data Unit)라고 한다. 여기에는 Root BID, Root Past Cost, Sender BID, Port ID 등의 정보가 담겨있다.

 

스패닝 트리 프로토콜의 상태 변화도 알아보자.

  • Disabled: 포트 고장 혹은 ShutDown 상태 (데이터 전송 x, 맥 어드레스 배우기 x, BPDU 통신 x)
  • Blocking: 스위치 맨 처음 켜거나 Disabled 포트를 관리자가 다시 살렸을 때 (데이터 전송 x, 맥 어드레스 배우기 x, BPDU 통신 o)
  • Listening: 블로킹 상태 스위치 포트가 루트 포트나 데지그네이티드 포트로 선정 (데이터 전송 x, 맥 어드레스 배우기 x, BPDU 통신 o)
  • Learning: 리스닝 상태 스위치 포트가 포워딩 디폴트 시간 동안 상태 유지 (데이터 전송 x, 맥 어드레스 배우기 o, BPDU 통신 o)
  • Forwarding: 스위치 포트가 러닝 상태에서 포워딩 디폴트 시간 동안 상태 유지 (데이터 전송 o, 맥 어드레스 배우기 o, BPDU 통신 o)

지금까지 스패닝 트리에 대해서 간략하게 알아보았는데 사실 직접 문제를 풀어보는 게 가장 이해하는데 큰 도움이 되는 것 같다. 이론만 보면 어렵게 느껴지지만 문제를 풀어보면 비교적 쉽게 이해할 수 있다.

 

VLAN (Virtual Lan)

 

VLAN은 한 대의 스위치를 마치 여러 대의 분리된 스위치처럼 사용하고, 또 여러 개의 네트워크 정보를 하나의 포트를 통해 전송할 수 있도록 한다. 스위치에서 지원하는 기능이고 허브나 브리지에서는 지원하지 않는다. 나누어진 VLAN 간의 통신은 라우터를 통해서만 가능하다. (브로드캐스트 도메인이 나누어진 것이기 때문에)

 

 

728x90