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

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

by 네트워크 엔지니어 환영 2024. 4. 10.
반응형

오랜만에 돌아온 Spanning Tree Protocol(이하 스패닝 트리 프로토콜)에 대한 이야기입니다. 과거 Spanning Tree Protocol(STP) 쉽게 이해하기 #4 문서의 마지막 문단에서 다음과 같이 언급하며 스패닝 트리 프로토콜에 대한 이야기를 마무리 지었습니다.

스위치 장애 상황을 설명하면서 30초와 50초는 네트워크에서 꽤 긴 시간이라고 말씀드린 것 기억하시나요? 장애 상황을 대처함에 있어서 긴 시간을 기다려야 하는 것도 문제인데 장애 상황을 복구함에도 30초간 통신 중단이라는 상황에 놓인다는 것은 정말 치명적인 단점이 아닐 수 없습니다.

출처: Spanning Tree Protocol(STP) 쉽게 이해하기 #4
[네트워크 엔지니어 환영의 기술블로그:티스토리]

스패닝 트리 프로토콜 동작 과정에 따라 30초간 차단 상태에 들어간 스위치간 연결

Spanning Tree Protocol(STP) 쉽게 이해하기 #4에서 스패닝 트리 프로토콜을 설명했던 그림을 다시 가져왔습니다. :) 위 그림에선 "전환 중...(원상복구)" 말풍선이 그려진 왼쪽 링크(왼쪽 X 표시)가 끊어졌다 붙었을 때의 상황을 보여주고 있죠. 왼쪽 링크가 재연결되기 전까지는 "즉시 차단" 말풍선(오른쪽 X 표시)이 그려진 오른쪽 링크를 통해 통신을 이어갑니다. 그러던 와중 왼쪽 링크가 살아나며 오른쪽 링크는 스패닝 트리 프로토콜의 동작 과정에 의해 차단 상태로 즉시 변경되며 블락 포트로서 역할을 합니다. 왼쪽 링크의 포트는 루트 포트의 역할을 하며 청취 상태(15초)와 학습 상태(15초)를 거친 뒤에야 전송 상태로 전환하게 되죠. 스패닝 트리의 동작 과정입니다.

이 부분에서 한 가지 문제가 발생합니다. 현업에서는 1초도 꽤 긴 시간에 해당하죠. 1초라는 짧은 시간 이내에도 수많은 트래픽이 스위치를 통해 흐를 수 있습니다. 특히 24시간 서비스를 제공하는 회사(포털 사이트, 쇼핑 / 배달 앱 등)의 스위치에서 1초간 통신 차단은 일시적 장애로 이어질 수 있습니다. 하물며 스패닝 트리 프로토콜의 동작 과정에서 스위치 간의 연결이 30초 혹은 50초나 단절된다는 것은 굳이 말이 필요 없는 심각한 장애 상황에 해당합니다. 이를 해결하기 위하여 스패닝 트리 프로토콜의 가장 큰 단점인 스위치 간 링크의 단절(혹은 재연결) 시 30초에서 50초까지 걸리는 통신 중단 시간을 최대한 줄이는 것에 초점을 맞춘 개선된 스패닝 트리 프로토콜 개발이 시작되었습니다. 그것이 바로 Rapid Spanning Tree Protocol입니다. 이름에서부터 어떤 점이 빨라진(Rapid) 프로토콜인지 알 수 있지요. 여담으로 스패닝 트리 프로토콜이 활성화된 네트워크 환경에 변화가 발생하였을 때, 통신 가능한 네트워크로 재구성되는 데 걸리는 시간을 Convergence Time(이하 컨버전스 타임)이라고 부릅니다. 

 

Rapid Spanning Tree Protocol이란?

Rapid Spanning Tree Protocol(이하 RSTP)는 컨버전스 타임을 줄여 스위치 간 링크의 중단 시간을 최소화하기 위해 스패닝 트리 프로토콜을 개정하여 만든 개정판 스패닝 트리 프로토콜입니다. 여기서 컨버전스 타임은 위에서 언급한 30초 혹은 50초, 다시 말해 직접 링크 혹은 간접 링크의 단절 및 재연결로 인한 중단뿐만 아니라 초기 토폴로지 구성 과정에서 스위치 간 링크가 연결되며 스패닝 트리 프로토콜의 동작 과정 간 상태가 변경되는 시간(청취 및 학습 상태) 또한 해당합니다. 스패닝 트리 프로토콜이 활성화된 토폴로지에서는 청취 및 학습 상태에서도 각각 15초가 소요되지요. 그 시간도 줄일 수 있다는 의미입니다. 다시 말해 RSTP는 초기 토폴로지 구성 과정에서의 발생하는 컨버전스 타임(청취 및 학습 상태)과 스위치 단절 간 발생 후 복구되는 과정에서 발생하는 컨버전스 타임(간접 / 직접 링크 끊김)을 줄이는 것에 초점을 둔 프로토콜이죠.

동작 과정 1> Root Switch(Root Bridge), Non Root Switch 선출
동작 과정 2> Root / Designated / Alternated Port(이하 루트 / 지정 / 블락 포트) 역할 선출
동작 과정 3> 지정된 역할에 맞는 포트 상태 변경(청취 / 학습 / 전송 / 차단)
동작 과정 4> 링크 끊김 발생 시 포트 상태 변경

위 박스에서는 스패닝 트리 프로토콜이 토폴로지 구성 및 변경 시 진행하는 4가지 동작 과정에 대해 서술하고 있습니다. RSTP의 변경점인 컨버전스 타임이 단축되는 구간이 바로 위 4가지 동작 과정 중 동작 과정 3 / 4에 해당합니다. 포트 상태 변경에서 소요되는 시간을 최대한 단축(Rapid)하여 원활한 토폴로지 변경을 가능케 한 것이 바로 RSTP인 것입니다. 개선된 프로토콜의 이름에 왜 "Rapid"라는 단어가 들어가는지 감이 오시나요? 

RSTP의 정의와 개선된 점에 대해 알아보았으니 이제 RSTP는 어떤 방법으로 컨버전스 타임을 줄이는지 살펴보겠습니다. Spanning Tree Protocol(STP) 쉽게 이해하기 #2에서 언급한 것처럼 스패닝 트리 프로토콜은 BPDU(Bridge Protocol Data Unit)이라는 이더넷 프레임을 활용하여 Root Bridge ID, Path Cost, Port ID 등 경로 구성에 중요한 역할을 하는 정보를 스위치 간 교환한다고 언급했습니다. 교환된 정보를 통해 어떤 스위치가 루트 브릿지가 될지, 어떤 포트가 루트 포트, 지정 포트, 차단 포트가 되어야 할지 정할 수 있죠.

STP와 마찬가지로 RSTP도 BDPU를 사용하여 정보 교환을 실시합니다. Bridge ID, Path Cost, Port ID 등 경로 구성에 중요한 역할을 하는 BPDU 정보를 교환하고 어느 스위치가 루트 브릿지가 될 것인지, 스위치의 어느 포트가 루트 포트, 지정 포트, 차단 포트가 될 것인지를 결정합니다. BPDU라는 이더넷 프레임을 교환하는 것은 동일하지만 RSTP는 몇 가지 필드와 정보가 추가된 BPDU를 사용합니다. 아래 그림에서 RSTP의 BPDU 구성요소를 보실 수 있습니다.

BPDU의 구성(출처 : 피터 전님의 랜 스위칭)

그중에서도 살펴볼 것은 바로 BPDU Flag(위 그림의 붉은색 박스, 이하 BPDU 플래그) 필드입니다. BPDU 플래그는 토폴로지의 변화를 나타내는 필드값으로 토폴로지가 변화했음을 알리는 TC(Topology Change), 제안, 포트 역할, 학습 상태, 전송 상태, 동의, 토폴로지 변화를 알리는 BPDU를 수신했음을 응답하는 TCA 등이 있습니다. 여담으로 STP 또한 동일 BPDU 플래그 필드를 보유하지만 0번과 7번 이외에는 사용하지 않습니다.

BPDU 플래그 필드의 구성(출처 : 피터 전님의 랜 스위칭)

BPDU 플래그 필드의 8개 비트 중 가장 중요한 역할을 하는 것은 1번과 6번, 제안과 동의입니다. 제안과 동의는 RSTP가 STP에 비해 짧은 컨버전스 타임을 가질 수 있도록 돕는 결정적인 역할을 합니다. 그렇다면 제안과 동의가 컨버전스 타임 축소에 어떻게 역할을 하는 것일까요? 앞서 말씀드린 것처럼 STP와 RSTP를 사용하는 토폴로지의 스위치는 모두 BPDU 정보(Bridge ID, Path Cost, Port ID)를 활용하여 서로의 우위를 확인하고 우위에 따라 역할과 상태를 정하는데요. RSTP는 1번과 6번 비트, 제안과 동의 비트를 활용해 상태 변경에 정해진 시간을 기다리지 않고 인접 스위치와 협상하여 적극적으로 서로의 역할과 상태를 정합니다.

예를 들어 스위치 2대가 있고 연결을 시도할 때, 링크가 활성화됨과 동시에 서로의 BPDU 정보를 확인합니다. 자신의 BPDU 정보가 좀 더 우세하다는 것을 확인한 스위치(이하 우세 스위치, 아래 그림 내 왼쪽)는 자신과 상대 스위치(이하 열세 스위치, 아래 그림 내 오른쪽)의 역할에 맞는 상태로 즉시 나아가기 위해 상대 스위치에 제안을 합니다. 자신의 포트 역할을 지정 포트로, 열세 스위치의 포트 역할을 루트 포트로 정함과 동시에 청취 및 학습 상태를 생략하고 즉시 전송 상태를 활성화시키기 위함이지요.

BPDU 우세 스위치 : 내 BPDU 정보가 더 우세하니 내 포트 역할이 지정 포트다. 네 포트의 역할을 루트 포트가 되는 것이 적절하니 청취(15초) 및 학습(15초) 상태를 거치지 말고 즉시 전송 상태로 변경할 것을 제안한다.

우세한 BPDU 정보를 내세워 루트 브릿지에 더 지정 포트 역할을 할 것임을 알리는 우세 스위치

우세 스위치가 전달한 BPDU 정보(Bridge ID : 0, 루트 브릿지)와 함께 제안을 받은 열세 스위치는 자신의 BPDU 정보(Bridge ID : 4096)가 우위에서 자신이 밀린다는 것을 알게 됩니다. 그리고 우세 스위치의 제안에 대해 동의하며 BPDU를 전송하며 우세 스위치를 향하는 포트를 루트 포트로 전환하게 되지요.

BPDU 열세 스위치 : 내 BPDU 정보가 열세임을 인정한다. 내 포트의 역할을 루트 포트로 함과 동시에 청취(15초) 및 학습(15초) 상태를 거치지 않고 즉시 전송 상태로 변경하는 것에 동의한다.

우세 스위치의 제안을 받아들여 자신의 포트 역할을 루트 포트로 정하는 열세 스위치

우세 스위치와 열세 스위치는 서로의 BPDU 정보를 비교하고 "제안과 동의"라는 행동을 통해 적극적으로 서로의 역할을 정하기에 청취 상태와 학습 상태를 거치지 않는 것을 볼 수 있습니다. STP에서 데이터 전송을 차단한 채 30초의 시간을 기다리며 역할과 상태를 정하는 것보다 훨씬 빠르고 효과적이죠. 제안과 동의가 사실상 STP와 RSTP를 가르는 가장 큰 차이점이라고 볼 수 있습니다.

 

RSTP 포트 상태와 링크

스위치와 스위치, 스위치와 서버를 연결하는 링크는 Full-duplex(이하 풀 듀플렉스)임을 전제로 합니다. RSTP에서는 풀 듀플렉스로 동작하는 링크를 Point-to-point라 지칭합니다.

RSTP가 STP와 다른 점은 제안과 동의 비트뿐만 아니라 2가지 요소가 더 있습니다. 바로 포트 상태와 링크 타입인데요. STP와 어떤 차이점을 가지는지 확인해 보겠습니다. 먼저 첫 번째 요소인 포트 상태입니다. RSTP는 STP와 달리 학습(LRN), 전송(FWD), 차단(BLK) 3가지 상태만을 사용합니다. 먼저 학습(LRN) 상에서는 MAC 주소를 학습함과 동시에 역할이 지정 포트일 경우, 열세 스위치를 향해 BPDU를 지속적으로 전송합니다. 전송(FWD) 상태에서는 데이터를 전송할 수 있는 상태를, 차단(BLK) 상태는 데이터 송수신을 차단하지만 BPDU는 계속 수신하는 상태를 의미하죠. STP와의 차이점은 바로 청취 상태를 사용하지 않는다는 점입니다. 상태별 대기시간을 중요하게 생각하지 않는 RSTP의 특성을 생각해 보았을 때, 청취가 빠진 것은 어찌 보면 합리적이라는 생각이 듭니다. STP처럼 청취(15초), 학습(15초) 상태를 사용하지 않고 제안과 동의를 통해 빠르게 협상하니 청취 상태를 사용하지 않고 실질적으로 필요한 MAC 주소 학습 단계인 학습 상태만을 사용하는 것이죠. 

두 번째 요소는 링크 타입입니다. 링크 타입이란 RSTP가 활성화된 스위치와 연결된 단말의 종류가 무엇인지에 따라 스위치 포트의 링크 타입을 나누는 것을 의미합니다. 연결 단말에는 스위치나 서버, PC 등이 해당될 수 있습니다. 링크 타입에 따라 RSTP를 활용해 토폴로지를 구성할 것인지, STP를 활용해 토폴로지를 구성할 것인지 결정합니다. 그렇다면 왜 링크 타입을 나누는 것일까요? 지속적으로 언급하는 것처럼 RSTP는 BPDU 정보 내에 제안과 동의라는 두 가지 비트를 포함시켜 포트 역할에 대한 빠른 협상하는 프로토콜이기 때문입니다. 다시 말해 제안과 동의 비트가 담긴 BPDU를 이해하고 활용할 수 없는 단말이라면 RSTP를 사용할 수 없습니다. STP를 사용하는 스위치도 제안과 동의 비트를 이해할 수 없지요. 그러므로 STP 사용 스위치, PC 등은 별도의 타입을 두고 STP 동작 과정을 따르게 하거나, Port Fast(이하 포트 패스트)를 통해 즉시 연결되도록 하는 것입니다.그리고  RSTP의 링크 타입은 3가지로 나뉩니다. Link(이하 링크), Edge(이하 엣지), Peer(이하 피어)입니다. 

링크는 RSTP를 사용할 수 있는 스위치와 스위치가 연결되었을 때의 링크 타입입니다. 그렇기에 제안과 동의를 통해 토폴로지 구성이 가능하고 제안과 동의를 통해 스위치 간 포트 상태가 즉시 전송 상태로 변경됩니다. Cisco社 스위치에서는 링크 타입을 Point-to-point (P2P) Link로 표기합니다. 여담으로 풀 듀플렉스가 아닌 Half-duplex(이하 하프 듀플렉스)에서의 링크는 Shared Link(이하 셰어드 링크)라 부르며 RSTP가 동작하지 않고 STP로 동작합니다. 허브 또한 하프 듀플렉스이기에 STP로 동작하는 것이지요.

엣지는 RSTP뿐만 아니라 STP를 이해하지 못하는 단말인 PC와 서버 등이 연결되었을 때의 링크 타입입니다. 그렇기 때문에 STP와 마찬가지로 포트 패스트(Cisco Nexus Series Config : type edge) 설정을 해주어야 즉시 전송 상태로 변경됩니다. 포트 패스트가 설정된 엣지 포트를 Cisco社 스위치에서는 Point-to-point(P2P) Edge로 표기됩니다.

마지막으로 피어입니다. 피어는 RSTP가 아닌 STP가 활성화된 스위치와 연결되었을 때의 링크 타입입니다. 다시 말해 상대 스위치가 RSTP가 아닌 STP를 활용하기에 제안과 동의 비트를 이해할 수 없다는 뜻이 됩니다. 이 경우에는 STP를 활용하여 상대 스위치와 토폴로지를 구성합니다. 청취(15초)와 학습(15초) 상태를 모두 거쳐야 하며, 링크 장애 시에도 30초와 50초를 모두 준수하는 것이죠. 지금까지 설명한 내용을 토대로 RSTP 활용이 가능한 경우는 아래와 같습니다. 

1. Point-to-point(P2P) Link : RSTP 사용 가능
2. Point-to-point(P2P) Edge : RSTP 사용 가능(포트 패스트 / 엣지 포트 설정 Only)
3. Point-to-point(P2P) Peer : RSTP 사용 불가능

 

지금까지 RSTP가 탄생할 수밖에 없었던 이유와 RSTP의 정의, 그리고 RSTP가 갖는 특징에 대해 알아보았습니다. RSTP의 이전 버전인 STP부터 구성 과정이 꽤 복잡한 편이기 때문에 RSTP에 대해 공부하고자 하신다면 STP의 기본부터 단단히 잡고 오시는 것이 좋습니다. 다음 문서에서는 상세한 토폴로지 구성 순서와 함께 토폴로지 단절 시 RSTP의 대응에 대해 알아보도록 하겠습니다. 

반응형

댓글