[Network] Spanning Tree Protocol(STP) #2
본문 바로가기
IT 이야기/공부합시다

[Network] Spanning Tree Protocol(STP) #2

by 찬찬이 아빠 2023. 7. 5.
반응형

개인적으로 네트워크 공부를 위해 정리한 내용들입니다.

함께 공부하자는 취지로 내용을 공유합니다.


  • 포트의 역할이 할당되고 나서 맡은 역할로 변경되기까지 일련의 과정을 거쳐야 함 
  • 즉 스위치가 켜지고 나서 POST(Power on self test)를 거치고, 여러 스위치와 연결되며 스패닝 트리 프로토콜이 활성화된 후, 포트의 역할을 결정하며 해당 역할로 나아가기 위해 포트는 몇 가지의 상태 변화를 겪게 됨
  • 루트 포트 / 지정 포트처럼 BPDU와 데이터를 송수신하는 포트로 결정되었다고 해서 즉각적으로 포트가 '전송'의 역할을 맡는 것이 아니고, BPDU만을 받는 블락 포트로 결정되었다고 해서 즉시 '차단'의 역할을 맡는 것이 아님
  • 스패닝 트리 프로토콜은 네트워크 내 브로드캐스트 폭풍을 차단하는 중요한 역할을 맡고 있는 만큼 각 역할로 가는 과정 또한 신중하게 판단
  • 위 목표를 실현하기 위해 정해진 포트의 역할, 다시 말해 전송 혹은 차단으로 향하기까지의 과정을 상태(State)로 표현하여 나누고 과정마다 맡은 역할로 향하기 위한 필요한 기능을 허용 혹은 차단
  • 상태는 아래 3가지 기능과 밀접한 관련이 있음
① BPDU 송/수신
② MAC 주소 학습
③ 데이터 전송
  • 먼저 BPDU를 송수신(①)하여 서로의 우위를 정하고 포트의 역할을 결정
  • 데이터 전송이 가능한 역할(루트 포트 / 지정 포트)이라면 MAC 주소 학습(②)이 가능한 상태로 변경
  • 최종적으로 데이터 전송을 실시할 수 있도록 허용(③)
  • 그게 아닌 블락 포트의 역할을 맡아야 한다면 어느 상태이든 즉시 MAC 주소 학습을 중단하고 데이터 전송을 차단(① 허용, ②③ 차단)
  • 위 3가지 요소의 순차적 허용 혹은 차단 과정은 포트의 5가지 상태(State)를 통해 구분 / 변경됨 

1. 포트의 상태와 정의

포트의 다섯 가지 상태

  • 비활성 상태 : 포트의 고장난 상태 혹은 포트의 Disable(Shutdown), 케이블이 연결되지 않은 상태를 의미
    • Disabled state(이하 비활성 상태)
  • 나머지 4개 상태(청취, 학습, 전송, 차단) : 전송 상태 혹은 BPDU만을 수신하는 상태와 관련이 있기 때문에 다소 복잡 
    • Forwarding state(이하 전송 상태, FWD)
    • Listening state(이하 청취 상태, LSN)
    • Learning state(이하 학습 상태, LRN)
    • Blocking state(이하 차단 상태, BLK)

(1) Listening state(LSN)

항목 가능 여부
BPDU /수신 O
MAC 주소 학습 X
데이터 전송 X
  • 청취 상태는 포트 상태의 출발점
  • 스위치가 켜지고 다른 스위치와 연결되어 포트가 활성화되면 청취 상태부터 시작
  • 청취 상태를 유지한다는 것은 이 포트가 데이터를 송수신하는 포트가 될 확률이 높다는 것을 의미
  • 다시 말해 다른 스위치와의 협상에서 해당 포트의 역할이 루트 포트 혹은 지정 포트로 결정되면 청취 상태를 유지
  • 15초가 흐르면 청취 상태는 학습 상태로 변경
  • 데이터와 BPDU를 송수신할 수 있는 전송 상태(루트 포트 혹은 지정 포트)로 나아가기 위해 다음 단계로 나아가는 것
  • 포트의 역할이 지정 포트이면 BPDU를 송신하기 시작

전송 상태로 나아가기 위해 학습 상태로 이동하는 포트

  • 하지만 청취 상태를 유지하던 중 다른 스위치와의 협상에서 해당 포트가 블락 포트로 사용되기로 결정되었다면 즉시 차단 상태로 변경
  • 학습 상태로 변경되기까지 15초가 걸리는 것과는 다르게 차단 상태로의 변경은 즉시 실시됨

포트의 역할이 '블락 포트'로 결정되어 차단 상태로 변경되는 포트

(2) Learning state(LRN)

항목 가능 여부
BPDU /수신 O
MAC 주소 학습 O
데이터 전송 X
  • 학습 상태는 청취 상태에서 전송 상태로 가기 전에 거치는 단계로 데이터를 전송하기 위한 MAC 주소 학습이 이루어지는 단계
  • 청취 상태처럼 학습 상태를 15초간 유지하면 전송 상태로 변경

청취 상태에서 시작해 학습 상태를 거쳐 전송 상태로 변경되는 포트

  • 하지만 학습 상태에서 포트의 역할이 블락 포트로 변경되었다면 즉시 차단 상태로 변경

학습 상태 유지 중 포트의 역할이 '블락 포트'로 결정되어 차단 상태로 변경되는 포트

(3) Forwarding state(FWD)

항목 가능 여부
BPDU /수신 O
MAC 주소 학습 O
데이터 전송 O
  • 전송 상태는 MAC 주소 학습이 끝난 상태에서 데이터 전송이 가능한 상태임을 의미
  • 루트 포트 / 지정 포트로서의 역할을 다 할 수 있는 상태임을 의미
  • 하지만 전송 상태도 포트의 역할 변화로 인해 블락 포트로 역할이 변경된다면 즉시 차단 상태로 변경

전송 상태 중 포트의 역할이 '블락 포트'로 결정되어 차단 상태로 변경되는 포트

(4) Blocking state(BLK)

항목 가능 여부
BPDU /수신 O
MAC 주소 학습 X
데이터 전송 X
  • 차단 상태는 말그대로 BPDU 수신을 제외한 MAC 주소 학습과 데이터 전송이 불가능한 상태를 의미
  • 즉 블락 포트로서의 역할을 다 할 수 있는 상태임을 의미
  • 차단 상태는 위에서 언급한 것처럼 청취 상태에서도, 학습 상태에서도, 전송 상태에서도 그 즉시 변경이 가능
  • 청취 / 학습 상태는 각기 학습 / 전송 상태로 가기 위해 15초를 기다리지만 차단 상태는 기다릴 필요 없이 즉시 변경된다는 특징을 가지고 있음
  • 그만큼 스패닝 트리 프로토콜은 루프 방지의 목적을 위해 존재하며 루프 발생 가능성을 차단할 수 있다면 주저하지 않고 데이터 송/수신을 차단
  • 차단 상태(블락 포트)는 필요에 따라 전송 상태(루트 포트 & 지정 포트)로 변경될 수 있음
  • 물론 MAC 주소 학습과 데이터 전송이라는 단계를 차례로 거쳐야 하기 때문에 차단 상태가 거쳐갈 수 있는 상태는 청취 상태가 유일
  • 그래야 청취 / 학습 상태를 거쳐 전송 상태로 이동할 수 있음

전송 상태로 변경되기 위해 청취 상태로 이동하는 포트

  • 블락 포트가 아닌 다른 역할의 포트가 비활성화되어 스패닝 트리 내 데이터 전송 경로가 사라졌을 때의 반응
  • 다시 말해 스위치간 연결이 끊어져(포트가 비활성화되어) 차단 상태를 전송 상태로 만들지 않고서는 데이터 전송이 불가능한 상황을 의미
  • 이때 '블락 포트를 보유한 스위치의 포트가 비활성화되었을 때'와 '블락 포트를 보유하지 않은 스위치의 포트가 비활성화되었을 때'의 차단 상태 반응은 다름

스패닝 트리 프로토콜이 활성화된 4대의 스위치의 역할과 상태

 

 루트 포트 지정 포트 : 청취 상태 학습 상태 전송 상태
 블락 포트 : 청취 & 학습 & 전송 상태 차단 상태


2. 스위치 간 직접 연결이 끊어졌을 때

  • 여기서 '직접 연결'은 블락 포트를 보유한 스위치와 인접한 스위치의 링크가 끊어진 상태
  • 다시 말해  블락 포트를 활성화시키지 않고서는 통신이 더 이상 불가능한 상황

블락 포트를 보유한 스위치와 인접 스위치의 링크 단절

  • 블락 포트를 보유한 스위치에서 루트 스위치로 갈 수 있는 가장 최단 경로이자 전송 경로인 루트 포트가 링크 단절로 비활성화된 상태
  • 데이터 송수신이 불가능한 블락 포트를 보유한 상태에서 통신을 하기 위해서는 블락 포트루트 포트로 전환하는 수밖에 없음
  • 그렇기 때문에 스위치는 블락 포트의 역할을 즉시 루트 포트로 전환
  • 이게 가능한 이유는 다른 스위치도 아닌 블락 포트를 보유한 자기자신의 루트 포트가 비활성화되었기 때문에 어느 스위치보다 단절 상황을 빠르게 인지할 수 있기 때문
  • 그렇기에 자신의 블락 포트를 즉시 루트 포트로 전환하여 장애 상황을 회피하려고 하는 것
  • 하지만 상태가 차단에서 즉시 전송으로 변경되는 것은 아님
  • 지난 문서에서 언급한 것처럼 블락 포트루트 포트로 변하기 위해서는 청취 상태(15초)와 학습 상태(15초)를 거쳐야 하기 때문
  • 두 단계를 거쳐야 비로소 전송 상태로 전환됨

청취, 학습 상태를 거쳐 전송 상태로 전환되는 블락 포트

이를 다르게 말하면 링크 단절 후 30초간은 통신이 되지 않는다는 것을 의미하고, 네트워크에서 30초간의 통신 단절은 꽤 긴 시간임


3. 스위치 간 간접 연결이 끊어졌을 때

  • 여기서 '간접 연결'은 블락 포트를 보유한 스위치와 인접 스위치의 링크가 아닌 다른 스위치와 인접 스위치의 링크가 단절된 상태를 의미

블락 포트를 보유한 스위치는 자신이 아닌 다른 스위치의 링크가 끊어졌을 때(포트가 비활성화되었을 때) 어떻게 행동하는지 보겠습니다.

루트 브릿지와 인접 스위치의 링크 단절

  • Root Bridge(이하 루트 브릿지)와 인접 스위치의 링크가 단절된 상태
  • 루트 브릿지로 향하는 가장 빠른 길이 단절된 상태이므로 전체적인 상황을 보았을 때, 블락 포트를 보유한 스위치의 블락 포트를 루트 포트로 변경해야 통신이 가능
  • 이 때 링크가 단절된 스위치(Bridge ID 4096)는 루트 브릿지와 링크가 끊어진 상태이므로 루트 스위치에게서 더 이상 BPDU를 전달받을 수 없는 상황
  • 지정 포트의 역할에는 루트 브릿지가 전달하는 BPDU를 송신하는 것도 존재
  • 그러나 위 상황에서는 링크가 단절된 스위치(Bridge ID 4096)로 가는 스위치(Bridge ID 8192)의 포트 역할루트 포트이기에 BPDU를 전달하지 않으므로 BPDU를 받지 못함
  • 이에 링크가 단절된 스위치(Bridge ID 4096)은 루트 스위치가 다운되었다는 판단 아래 자신이 루트 브릿지임을 주장하는 후순위 BPDU(루트 브릿지보다 우선순위가 뒤떨어지는 Bridge ID를 갖는 BPDU)를 전송하기 시작

자신이 루트 브릿지임을 주장하는 링크가 단절된 스위치

  • 링크가 단절되었을 뿐 스위치가 다운된 것은 아님
  • 자신이 루트 브릿지임을 주장하는 후순위 BPDU를 전달받은 스위치(Bridge ID 8192)는 링크가 단절된 스위치(Bridge ID 4096)를 루트 브릿지로 판단하지 않고 잠자코 후순위 BPDU를 받음
  • 그리고 후순위 BPDU를 10번 받으면서(총 20초, BPDU 전송 간격 2초) 블락 포트를 통해 루트 브릿지가 전송하는 BPDU가 여전히 들어오고 있음을 확인한 스위치(Bridge ID 8192)는 루트 브릿지와 인접 스위치(Brigde ID 4096)의 링크가 단절되었음을 알게 됨
  • 스위치(Bridge ID 8192)는 블락 포트의 역할을 루트 포트로 전환하여 통신 준비를 시작
  • (청취 상태 15초, 학습 상태 15초) 링크가 단절된 스위치로 향하는 기존의 루트 포트지정 포트로 전환
  • 루트 브릿지가 전송하는 BPDU를 링크가 단절된 스위치(Brigde ID 4096)에게 고스란히 전달
  • 이미 우선순위가 높은 루트 브릿지가 건재하므로 루트 브릿지가 될 생각하지 말라고 알려줌
  • 이에 링크가 단절된 스위치(Bridge ID 4096)는 루트 브릿지가 살아있음을 알고 더 이상 후순위 BPDU를 전송하지 않으며 자신의 지정 포트루트 포트로 전환

지정 포트를 루트 포트로 바꾸며 루트 브릿지임을 포기하는 스위치(Bridge ID 4096)

  • 루트 브릿지와 인접 스위치의 링크가 단절된 이후, 후순위 BPDU를 받는 20초에 더해 청취 상태 15초와 학습 상태 15초를 거쳐 총 50초가 지난 후에야 블락 포트가 루트 포트로 전환
  • 네트워크에서 50초간의 통신 단절은 꽤 긴 시간임 

4. 끊어졌던 스위치 간 연결이 다시 연결되었을 때

  • 아래 그림과 같이 단절되었던 링크가 부활하면서 루트 브릿지와 링크가 단절된 스위치(Bridge ID 4096)가 다시 연결됨

단절된 링크가 되살아난 상태

  • 링크가 되살아났으니 연결이 끊어졌던 두 스위치 사이의 포트가 활성화됨
  • 그리고 서로 BPDU를 주고받으며 각 포트의 역할(루트 브릿지 : 지정 포트, 하단 스위치 : 루트 포트)을 결정한 뒤 두 포트 모두 청취 상태로 전환
  • 그리고 30초를 기다려 전송 상태로 변경
  • 한편 블락 포트(차단 상태)에서 루트 포트(전송 상태)로 전환되었던 스위치(Bridge ID 8192)는 링크가 단절되었던 스위치를 통해 BPDU를 전달받고 링크가 되살아났음을 알아차림
  • 그리고 루트 포트를 즉시 블락 포트(차단 상태)로 전환

원래 상태로 돌아가는 각 스위치

  • 루프가 발생할 수 있는 구조가 되면 블락 포트를 맡아야 할 포트는 즉시 차단된다는 점
  • 그런데 비활성 상태에서 각각 루트 포트지정 포트의 역할을 맡아 상태가 변환되는 포트들은 청취 상태와 학습 상태를 거쳐 전송 상태로 전환
  • 다시 말하면 30초간 통신이 되지 않는 장애 상황에 놓임을 의미

상황 복구 중 오히려 장애 상황에 놓인 스위치들

  • 위에서 각 상황을 설명하면서 30초와 50초는 네트워크에서 꽤 긴시간
  • 장애 상황을 대처함에 있어서 긴 시간을 기다려야 하는 것도 문제인데 장애 상황을 복구함에도 30초간 통신 중단이라는 상황에 놓인다는 것은 정말 치명적인 단점이 아닐 수 없음

5. 정보 출처

https://aws-hyoh.tistory.com/156

 

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

이전 문서에서는 포트의 '역할(Role)'에 대해서 정의했다면 이 문서에서는 포트의 '상태(State)'에 대해 알아봅니다. 스패닝 트리 내에서 포트는 '역할'과' 상태'를 모두 갖습니다. 이 점을 반드시 기

aws-hyoh.tistory.com

https://aws-hyoh.tistory.com/173

 

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

스패닝 트리 내에서 포트는 '역할(Role)'과' 상태(State)'를 모두 갖습니다. 이 점을 반드시 기억해야 이해가 쉽습니다. 지난 문서에서는 포트의 상태의 정의와 전송(루트 포트, 지정 포트) 상태 / 차

aws-hyoh.tistory.com

반응형

'IT 이야기 > 공부합시다' 카테고리의 다른 글

[Network] 서버 부하 분산 쉽게 이해하기  (0) 2023.09.19
[Network] Port와 TCP/IP  (0) 2023.07.05
[Network] Spanning Tree Protocol(STP) #1  (0) 2023.07.04
[Network] VLAN  (0) 2023.06.29
[Network] LAN, MAC, ARP  (0) 2023.06.28

댓글