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

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

by 네트워크 엔지니어 환영 2021. 10. 15.
반응형
이전 문서에서는 포트의 '역할(Role)'에 대해서 정의했다면 이 문서에서는 포트의 '상태(State)'에 대해 알아봅니다. 스패닝 트리 내에서 포트는 '역할'과' 상태'를 모두 갖습니다. 이 점을 반드시 기억해야 이해가 쉽습니다.

지난 문서에서 Spanning Tree Protocol(이하 스패닝 트리 프로토콜)이 활성화되면 각 포트는 '역할(Role)'을 갖게 된다고 말씀드렸습니다. 'Root Port(이하 루트 포트)', 'Designated Port(이하 지정 포트)', 'Alternated Port(이하 블락 포트)'가 바로 그것입니다. 루트 포트는 Root Bridge(이하 루트 브릿지)로 향하는 가장 가까운 포트를 의미하고, 지정 포트는 데이터를 전달할 수 있는 포워딩 포트, 블락 포트는 논리적인 차단된 포트이지요.

포트의 역할이 할당되고 나서 맡은 역할로 변경되기까지 일련의 과정을 거쳐야 합니다. 즉 스위치가 켜지고 나서 POST(Power on self test)를 거치고 여러 스위치와 연결되며 스패닝 트리 프로토콜이 활성화된 후, 포트의 역할을 결정하며 해당 역할로 나아가기 위해 포트는 몇 가지의 상태 변화를 겪게 됩니다. 즉 루트 포트 / 지정 포트처럼 BPDU와 데이터를 송수신하는 포트로 결정되었다고 해서 즉각적으로 포트가 '전송'의 역할을 맡는 것이 아니고, BPDU만을 받는 블락 포트로 결정되었다고 해서 즉시 '차단'의 역할을 맡는 것이 아닙니다. 스패닝 트리 프로토콜은 네트워크 내 브로드캐스트 폭풍을 차단하는 중요한 역할을 맡고 있는 만큼 각 역할로 가는 과정 또한 신중하게 판단합니다.

위 목표를 실현하기 위해 정해진 포트의 역할, 다시 말해 전송 혹은 차단으로 향하기까지의 과정을 상태(State)로 표현하여 나누고 과정마다 맡은 역할로 향하기 위한 필요한 기능을 허용 혹은 차단합니다. 그 기능은 아래 목록과 같습니다. 그리고 상태는 아래 3가지 기능과 밀접한 관련이 있습니다. 어느 상태이냐에 따라서 허용된 기능의 가짓수가 다르죠.

 ① BPDU 송/수신
 ② MAC 주소 학습
 ③ 데이터 전송

포트의 정해진 역할로 가는 과정을 위 3가지로 표현해보겠습니다. 먼저 BPDU를 송수신(①)하여 서로의 우위를 정하고 포트의 역할을 결정한 후, 데이터 전송이 가능한 역할(루트 포트 / 지정 포트)이라면 MAC 주소 학습(②)이 가능한 상태로 변경하고 최종적으로 데이터 전송을 실시할 수 있도록 허용(③)합니다. 그게 아닌 블락 포트의 역할을 맡아야 한다면 어느 상태이든 즉시 MAC 주소 학습을 중단하고 데이터 전송을 차단합니다.(① 허용, ②③ 차단) 그리고 위 3가지 요소의 순차적 허용 혹은 차단 과정은 포트의 5가지 상태(State)를 통해 구분 / 변경됩니다. 

 

포트의 상태와 정의

포트 상태
<포트의 다섯 가지 상태>

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

Listening state(LSN)

항목 가능 여부
BPDU 송/수신 O
MAC 주소 학습 X
데이터 전송 X

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

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

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

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

Learning state(LRN)

항목 가능 여부
BPDU 송/수신 O
MAC 주소 학습 O
데이터 전송 X

학습 상태는 청취 상태에서 전송 상태로 가기 전에 거치는 단계로 데이터를 전송하기 위한 MAC 주소 학습이 이루어지는 단계입니다. 청취 상태처럼 학습 상태를 15초간 유지하면 전송 상태로 변경됩니다. 

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

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

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

Forwarding state(FWD)

항목 가능 여부
BPDU 송/수신 O
MAC 주소 학습 O
데이터 전송 O

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

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

Blocking state(BLK)

항목 가능 여부
BPDU 송/수신 O
MAC 주소 학습 X
데이터 전송 X

차단 상태는 말그대로 BPDU 수신을 제외한 MAC 주소 학습과 데이터 전송이 불가능한 상태를 의미합니다. 즉 블락 포트로서의 역할을 다 할 수 있는 상태임을 의미하죠. 차단 상태는 위에서 언급한 것처럼 청취 상태에서도, 학습 상태에서도, 전송 상태에서도 그 즉시 변경이 가능합니다. 청취 / 학습 상태는 각기 학습 / 전송 상태로 가기 위해 15초를 기다리지만 차단 상태는 기다릴 필요 없이 즉시 변경된다는 특징을 가지고 있습니다. 그만큼 스패닝 트리 프로토콜은 루프 방지의 목적을 위해 존재하며 루프 발생 가능성을 차단할 수 있다면 주저하지 않고 데이터 송/수신을 차단하는 것을 알 수 있죠.

차단 상태(블락 포트)는 필요에 따라 전송 상태(루트 포트 & 지정 포트)로 변경될 수 있습니다. 물론 MAC 주소 학습과 데이터 전송이라는 단계를 차례로 거쳐야 하기 때문에 차단 상태가 거쳐갈 수 있는 상태는 청취 상태가 유일합니다. 그래야 청취 / 학습 상태를 거쳐 전송 상태로 이동할 수 있습니다.

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

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

다음 문서에서는 위 2가지 상황에서의 포트 상태 변화를 구체적인 사례와 함께 확인해보도록 하겠습니다. 또한 포트가 청취 상태에서 시작해 전송 상태로 변하는 과정도 함께 살펴보겠습니다. 백문이 불여일견인 법이죠! (분량 조절 실패한 건 안 비밀입니다.)

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

 

댓글