IT·테크/인프라

RSTP — 제안·동의 BPDU로 컨버전스 시간을 줄인 스패닝 트리

레루루 2026. 8. 8. 21:36
반응형

이 글은 2021년 11월 기준 기록입니다.

 

STP는 컨버전스 시간이 길어서 네트워크 변화에 대응하는 시간이 오래 걸립니다. 포트 패스트·업링크 패스트·백본 패스트 같은 여러 방법으로 이 단점을 극복하려 했지만 한계가 있었고, 그래서 STP를 보완한 RSTP가 사용됩니다. RSTP는 컨버전스 시간을 획기적으로 단축합니다.

기다리는 대신 물어본다

STP가 컨버전스 시간을 가지는 이유는 혹시 바로 상태가 변화하면 루프가 발생할 수 있기 때문입니다. 아무 정보 없이 열면 위험하므로 정해진 시간만큼 기다리며 지켜보는 방식입니다.

 

RSTP는 기다리는 대신 확인합니다. 자신의 BPDU 정보가 우세하면(선순위) 바로 자신이 지정 포트임을 주장하는 제안 BPDU를 전송합니다. 제안 BPDU를 수신한 스위치에서는 동의해서 자신은 루트 포트가 되겠다는 동의 BPDU를 전송하고, 제안과 동의가 이루어지면 포트가 즉시 전송 상태가 됩니다.

 

기다림을 합의로 바꾼 것이 RSTP의 핵심입니다.

설정은 모드 한 줄이 시작이다

RSTP 모드로 바꾸고, 우선순위를 정하고, 단말 장치와 연결된 포트에 포트 패스트를 겁니다.

// RSTP 모드로 설정하고, 우선순위 설정, 단말 장치와 연결된 포트에 포트 패스트 설정
SW1(config)#spanning-tree mode rapid-pvst
SW1(config)#spanning-tree vlan 1 priority 0
SW1(config)#int e1/0
SW1(config-if)#spanning-tree portfast

SW2(config)#spanning-tree mode rapid-pvst
SW2(config)#spanning-tree vlan 1 priority 4096

SW3(config)#spanning-tree mode rapid-pvst

// SW4는 허브처럼 사용하기 위해 STP를 끄고, 전송방식을 하프두플렉스로 조정
SW4(config)#no spanning-tree vlan 1
SW4(config)#int range e1/0-1
SW4(config-if-range)#duplex half

SW4를 하프 두플렉스로 만든 것은 뒤에서 볼 셰어드 링크와 백업 포트를 관찰하기 위한 준비입니다.

오가는 BPDU는 디버깅으로 확인합니다.

// BPDU 확인하기
SW1#debug spanning-tree bpdu
SW2#debug spanning-tree bpdu
// 모든 디버깅 중지
SW1#un all
SW2#un all

포트 역할에 백업 포트가 새로 생겼다

RSTP의 포트 역할은 루트 포트, 지정 포트, 대체 포트, 백업 포트, 비활성 포트의 다섯 가지입니다.

 

루트 포트STP 루트 포트와 동일합니다. 스위치당 하나씩 선택하며, 각 스위치에서 루트 스위치 방향으로 데이터를 전송할 포트입니다.

 

지정 포트STP 지정 포트와 동일합니다. 세그먼트당 하나씩 선택하며, 각 세그먼트에서 루트 스위치 방향으로 데이터를 전송할 포트입니다.

 

대체 포트루트 포트가 다운되면 그 역할을 이어받는 포트입니다. 데이터 프레임을 송수신하지 않고 차단 상태에 있습니다.

 

백업 포트지정 포트가 다운되면 그 역할을 이어받는 포트로, RSTP에서 새로 구분된 역할입니다. 스위치가 자신이 보낸 BPDU를 다른 포트로 수신하게 되면 두 포트 중 후순위 포트를 백업 포트로 선택합니다. 허브와 복수 개의 링크로 접속할 때, 즉 동일한 세그먼트에 하나의 스위치에서 두 개 이상의 링크가 접속되어 있을 때 생깁니다. 대체 포트와 마찬가지로 데이터 프레임을 송수신하지 않고 차단 상태에 있습니다.

 

대체 포트와 백업 포트의 차이는 무엇을 대신하느냐입니다. 대체 포트는 루트 포트의 예비이고, 백업 포트는 같은 세그먼트에 있는 지정 포트의 예비입니다.

 

비활성 포트는 RSTP 역할이 없는 포트, 즉 셧다운된 포트입니다.

포트 상태는 다섯에서 셋으로 줄었다

RSTP의 포트 상태는 폐기 상태, 학습 상태, 전송 상태의 세 가지입니다.

 

폐기 상태STP 차단 상태와 동일하며, 폐기(discarding)라고도 차단(blocking)이라고도 부릅니다.

 

학습 상태STP 학습 상태와 동일합니다. MAC 주소 테이블을 채우기 시작하고, 지정 포트인 경우 BPDU를 전송하기 시작합니다. 시간이 아주 짧다는 점이 STP와 다릅니다.

 

전송 상태STP 전송 상태와 동일하며, 데이터 프레임을 스위칭하기 시작합니다.

STP의 청취 상태가 사라진 것이 눈에 띕니다. 제안과 동의로 대체된 단계이기 때문입니다.

링크가 어떤 종류인지가 동작을 가른다

이제 하프 두플렉스로 두었던 포트를 다시 풀 두플렉스로 되돌립니다.

SW1(config-if)#int range e0/0-1,e1/0
SW1(config-if-range)#duplex full

RSTP는 링크 종류를 구분해서 동작합니다. 두플렉스가 곧 링크 종류를 결정합니다. 포인트 투 포인트는 풀 두플렉스 포트이고, 셰어드는 하프 두플렉스 포트입니다.

 

여기에 상대가 무엇이냐에 따른 구분도 있습니다. 링크는 RSTP가 적용되는 포트 간 연결, 에지는 스패닝 트리가 작동하지 않는 종단 장치와의 연결(포트 패스트), 피어는 RSTP가 아닌 STP와의 연결입니다.

 

피어는 상대를 STP로 되돌려 보면 확인할 수 있습니다.

// 피어 확인
SW2(config)#spanning-tree mode pvst

SW1#sh spanning-tree vlan 1

VLAN0001
...
Interface           Role Sts Cost      Prio.Nbr Type
Et0/0               Desg FWD 100       128.1    Shr Peer(STP)
Et0/1               Desg FWD 100       128.2    Shr
Et1/0               Desg FWD 100       128.5    Shr Edge

// RSTP로 복구
SW2(config)#spanning-tree mode rapid-pvst

Type 칸에 Peer(STP)Edge가 붙어 있습니다. 어느 포트가 구식 상대와 붙어 있고 어느 포트가 종단 장치와 붙어 있는지를 이 한 칸으로 알 수 있습니다.

빨라지는 조건은 정해져 있다

RSTP가 항상 빠른 것은 아닙니다. 초기 활성 토폴로지 구성 절차를 보면 조건이 드러납니다.

 

지정 포트와 루트 포트 간에 제안·동의 BPDU를 교환해서 즉시 전송 상태가 됩니다. 이것이 RSTP가 빠른 경우입니다.

루트 포트가 헬로 주기 3배 동안 BPDU를 받지 못하면 RSTP를 재계산합니다.

 

지정 포트가 루트 포트와 연결되지 않은 경우에는 상대방이 동의 BPDU를 전송하지 않으므로 15초의 차단과 15초의 학습을 거쳐 30초 뒤에 전송이 됩니다. 합의할 상대가 없으면 결국 기다리는 방식으로 돌아간다는 뜻입니다.

STP와 연결된 포트에서는 컨버전스 시간이 STP를 따릅니다. 앞서 본 Peer(STP) 표시가 붙은 포트가 그것입니다.

 

RSTP의 속도는 프로토콜 자체보다 상대가 무엇이냐에 달려 있습니다. 양쪽이 모두 RSTP이고 포인트 투 포인트로 붙어 있을 때 제 성능이 나옵니다.

반응형