본문 바로가기
Technical/Network

Spanning Tree Protocol(STP) 동작원리

by 잠적준비중 2021. 7. 31.

spanning tree는 특정 포트를 block 하여 네트워크의 looping현상을 막습니다.

이번 포스트에서는 spanning tree의 block 선출 과정에 대해 정리해보겠습니다.

 

BPDU

스위치들은 spanning tree의 규칙에 따라 root bridge를 선출하고 block 할 포트를 정합니다.

규칙에 따라 spanning tree를 작동하기 위해 스위치들은 서로의 정보를 주고받는데

이 정보를 BPDU라고 합니다.

 

위 정보를 보시면 BPDU에는 여러 정보들이 있는데 실질적으로 spanning tree 계산에 사용되는 값은

Root ID, Root path cost, Port ID입니다.

 

spanning tree의 연산은 3단계로 이루어집니다.

 

1. 네트워크의 스위치들은 하나의 root bridge의 스위치를 선출합니다.

2. root bridge가 아닌 스위치들은 Non root bridge 가 되며 무조건 하나의 root port를 가지게 되고

이는 root bridge 스위치에 가장 인접한 port로 선출됩니다.

3. 스위치들 간의 Designated port와 Non Designated port를 선출하여  block 할 포트를 정합니다.

 

spanning tree의 root bridge 선출

스위치들은 기본적으로 Bridge ID를 가지게 됩니다.

Bridge ID는 기본적으로 8byte(64bit)로 이루어져 있으며 Bridge Priority(2byte)와 MAC Address(6byte)

정보로 이루어져 있습니다. 

Bridge ID 구성

Bridge Priority 값은 0~65535까지 사용이 됩니다. 그리고 대부분의 스위치는 초기 값이 32768로 설정되어 있습니다.

root bridge를 선정할 때 Bridge Priority 값이 낮은 스위치가 root bridge를 가져오게 됩니다.

 

root bridge 선출 시나리오

 

만약 Bridge Priority의 값이 같다면 MAC Address의 값이 낮은 스위치가 root bridge를 가져옵니다.

위 구성에서 일단 Priority 값을 비교합니다.

세 장비의 Priority 값이 동일하기 때문에 MAC address를 비교하여 root bridge를 선출합니다.

MAC addrss가 가장 낮은 장비는 SW1(MAC address:AAAA.AAAA.AAAA)이기 때문에 SW1이 root bridge를

가져오게 됩니다.

 

 

스위치들 간의 Designated port와 Non Designated port를 선출

 

이제 실질적인 Designated port를 선출하여 block 할 포트 정합니다.

 

root brideg로 선출된 스위치의 포트들은 기본적으로 Designated port로 정해집니다.

그리고 Non root bridge 스위치들은 root bridge 스위치와 가장 인접한 포트를 root port로 선출하고

port cost를 비교하여 더 낮은 cost의 포트를 Designated port로 선출합니다. 

만약 cost가 같다면 bridge ID를 비교하고 이 값도 같다면 port ID를 비교하여 Designated port와 Non Designated port를 선출하고 Non Designated port는 block 처리하게 됩니다.

 

STP PORT COST

회선 속도가 높을수록 cost값은 낮게 설정되어 있고 cost값이 낮은 포트를 Designated port로 선출합니다.

 

Designated port 선출 시나리오

 

1. Root bridge로 선출된 SW1의 포트들은 기본적으로 Designated port로 선출됩니다.

2. Non root bridge인 SW2과 SW3는 Root port를 선출합니다. 기본적으로 root port는 root bridge 스위치와 가장 근저 접한 포트로 선출합니다. 위 그림에서는 Root bridge인 SW1과 직접 연결된 포트들을 root port로 선출합니다.

3. 나머지 SW2와 SW3를 연결한 포트에서 Non Designated port를 선출합니다. SW2는 100 Mbps로 SW1과 연결되어 있고 SW3는 10 Mbps로 연결되어 있습니다. SW2의 cost 값은 19로 계산되고 SW3는 cost 값은 100으로 계산됩니다.

4.cost값이 더 낮은 SW2의 포트는 Designated port가 되고 SW3의 포트는 Non Designated port가 되어 block 포트로 선출됩니다.

 

만약 회선 속도가 모두 같다면 bridge id를 비교하게 됩니다. 

SW2와 SW3의 Priority값은 동일하나 SW2의 MAC Address이 더 낮기 때문에 SW3의 port가 Non Designated port 되어 block 포트로 선출하게 됩니다.

 

port id를 통한 block port 선출

 

스위치는 각각의 포트에 서로 다른 port id를 부여하게 됩니다.

port cost와 bridge id 가 동일할 경우 port id를 비교하여 더 높은 포트를 block port를 선출하게 됩니다.

 

 

위 그림과 같이 2개의 스위치에서 같은 속도의 port를 두 개를 연결하게 되면 두 포트에서 전송하는 BPDU정보에 port cost와 bridge id가 같은 정보가 전달됩니다.

 

root bridge가 아닌 SW2는 포트에서는 port id를 비교하여 port id가 높은 포트를 block 합니다.

위 그림에서는 Fa0/1의 port id가 128.1이고 Fa0/2가 128.25이어서 Fa0/2의 port id가 높아 Fa0/2 port를 block 합니다.

 

정리하자면

1.bridge id를 통한 root bridge 스위치 선출 (priority 값이 낮은 스위치 , priority값이 같다면 mac addresss가 낮은 스위치가 우선순위)

2.port cost 비교를 통한 Designated port선출(속도가 빠를 수록 cost값이 낮고 낮은 cost가 낮은 port가 우선순위 cost값이 같다면 bridge id를 통해 선출)

3.port cost와 bridge id가 모두 동일하다면 port id를 통해 Designated port선출 후 Non Designated port를 block포트로 처리(port id가 낮은 순서)

 

spanning tree의 상태변화

스위치들은 spanning tree 협상 과정에 따라 5가지의 상태 변화를 거치게 됩니다.

 

disabled : 이 상태는 포트가 물리적으로 사용할 수 없는 상태입니다. port를 스위치에서 꺼 놓거나 포트의 고장 등으로 실제 사용할 수 없는  포트입니다.

- mac address 정보 송, 수신 불가

- bpdu 송,수신 불가

- data 송,수신 불가

 

blocking : 스위치를 다시 키거나 disable 되어 있는 포트를 관리자가 다시 살렸을 때 해당 상태로 들어갑니다. 그리고 spanning tree 연산 중 Non Designated port로 선정 시 blocking 상태로 들어갑니다. 이 상태에서는 bpdu 정보만 주고받을 수 있습니다.

- mac address 정보 송, 수신 불가

- bpdu 송,수신

- data 송,수신 불가

 

listening : blocking 되어 있는 포트가  root port나 Designated port로 선정되면 해당 모드로 넘어가게 됩니다.

이 상태에서도 bpdu만 송, 수신이 가능하고 mac address나 data는 송, 수신이 불가능합니다. 해당 상태에서도 Non Designated port로 다시 선출이 되면 blocking 로 변경될 수 있습니다.

- mac address 정보 송,수신 불가

- bpdu 송,수신

- data 송,수신 불가

 

learning : listening에서 15초가 지나면 해당 상태로 들어갑니다. 해당 상태에서는 bpdu의 송,수신이 가능하고 mac address 정보도 송,수신 하기 시작하고 mac address table을 만들게 됩니다.

- mac address 정보 송,수신

- bpdu 송,수신

- data 송,수신 불가

 

forwarding : listening 상태에서 15초가 지나면 해당 상태로 들어갑니다. forwarding상태에서는 data를 송, 수신하여 통신을 시작합니다.

- mac address 정보 송, 수신

- bpdu 송,수신

- data 송,수신 

 

댓글