IT/네트워크

[네트워크] 4. 스위치, 스패팅 트리 프로토콜 - 후니의 쉽게쓴 시스코 네트워

s워니얌 2024. 8. 30. 17:26

 

 

📝 스패닝 트리 프로토콜(Spanning Tree Protocol, STP)

 

스패닝 트리 알고리즘이란, 스위치나 브리지에서 발생하는 루핑('뺑뺑이')을 막아주기 위한 프로토콜이다. 즉 스위치나 브리지 구성에서 출발지부터 목적지까지의 경로가 2개 이상 존재할 때 1개의 경로만을 남겨두고 나머지는 모두 끊어두었다가, 사용하던 경로에 문제가 발생하면 그때 끊어두었던 경로를 하나씩 살리는 것이다.

 

스패닝 트리 프로토콜을 이해하기 위해서는 2가지 개념을 이해해야된다. 하나는 브리지 ID이고 두번째는 Path Cost라는 것이다.

 

 🔖Bridge ID

 

브리지 ID는 Bridge Identification의 약자로 브리지나 스위치들이 통신할 때 서로를 확인하기 위해 하나씩 가지고 있는 번호이다. 

 

 

출처 : NetworkLessons.com

 

브리지 ID는 16비트의 브리지 우선순위와 48비트의 맥 어드레스로 만들어진다. 브리지 우선순위(Bridge Priority)는 16비트로 만들어지기 때문에 올 수 있는 수는 0부터 (2의 16승 - 1)까지이다. 즉) 0~65535까지가 된다. 그런데 Bridge Priority는 디폴트로 그 중간에 해당하는 값인 32768을 사용한다. 즉 아무런 구성도 하지 않은 스위치나 브리지에서 Bridge Priority는 32768이라는 것이다. 

 

Bridge Priority 뒤에 오는 맥 어드레스는 이미 배운 대로 스위치에 고정되어 있는 값이다. 따라서 자신의 고유 맥 어드레스가 Bridge Priority에 붙게 된다. 

 

 

 

 

🔖 Path Cost

 

Path Cost란 말 그대로 '길을 가는데 드는 비용' 정도로 이해하면 된다. 네트워크 분야에서 길이란 바로 장비와 장비가 연결되어 있는 링크를 말하는 것이다. 즉) Patch Cost란 브리지가 얼마나 가까이, 빠른 링크로 연결되어 있는지를 알아내기 위한 값이다. 

 

예를 들어, 두 스위치가 10Mbps로 연결되어 있다고 가정해볼 때 Path Cost는 1,000Mbps를 둘 사이의 링크 대역폭(여기서는 10Mbps)로 나눈 값이다. 즉) 1,000/10 = 100이 된다. 

 

Path Cost는 링크의 속도(대역폭)가 빠르면 빠를수록 더 작은 값이 된다. 말하자면 링크 속도가 빠르면 그만큼 빨리 도착할테니 Path Cost는 적게 든다고 볼 수 있다. 

 

그런데 기가비트(1,000Mbps)와 ATM(2.4Gbps)와 같은 다양한 속도가 나오며 그동안 사용해 오던 계산법에 따라 계산을 하면 소수점이 나오는 문제가 생긴다. 그래서 IEEE에서는 소수점이 나오지 않도록 하기 위해 각 속도마다 Path Cost 값을 정의하게 되었다. 

 

Brandwidth(대역폭) STP Cost(Path Cost)
4Mbps 250
10Mbps 100
16Mbps 62
45 Mbps 39
100 Mbps 19
155 Mbps 14
622 Mbps 6
1Gbps 4
10 Gbps 2

 

 

출처 : Just Blue 블로그

 

 

 

📝 스패닝 트리 특징

 

스패닝 트리 프로토콜은 복잡한 스위치의 루핑을 방지하기 위한 복잡한 프로토콜처럼 보이지만 3가지 기본적인 동작만 이해하면 단순 명료하다.

 

🔖 1. 네트워크당 하나의 루트 브리지(Root Bridge)를 갖는다.

🔖 2. 루트 브리지가 아닌 나머지 모든 브리지(None Root Bridge)는 무조건 하나씩 루트 포트(Root Port)를 갖는다.

🔖 3. 세그먼트(Segment)당 하나씩 데지그네이트 포트(Designated Port, 지정 포트)를 갖는다.

 

 

스패닝 트리 프로토콜에서 루트포트나 데지그네이티드 포트가 아닌 나머지 모든 포트는 다 막아버린다는 사실이다. 즉) 루트포트와 데지그네이티드 포트를 뽑는 목적은 어떤 포트를 살릴지 결정하기 위한 것이다. 

 

 

 

📝 스패닝 트리의 포트 지정

 

스패닝 트리 프로토콜에서 어떻게 순서를 정할까? 누가 루트브리지가 되고, 누가 루트 포트나 데지그네이트 포트가 될지를 정하려면 4가지 단계를 통한다.

 

1. 누가 더 작은 Root BID를 가졌는가
2. 루트 브리지까지의 Path Cost값은 누가 더 작은가?
3. 누구의 BID(Sender BID)가 더 낮은가?
4. 누구의 포트ID가 더 낮은가?

 

 

 

 🔖루트 브리지 뽑기

 

 

다음 그림에서 BID인 Priority의 값은 디폴트인 32768로 모두 같다고 가정했을 때 대장 프리지(Root Bridge)는 무조건 낮은 BID를 갖는 스위치이다. 브리지가 맨 처음 부팅하고 나서 내보내는 BPDU(Bridge Protocol Data Unit)에는 Sender BID 정보는 물론이고 자신의 BID를 넣게 된다. 루트 브리지의 BID 역시 자신의 BID를 넣는다. 이제 막 부팅이 끝나 다른 BPDU를 한 번도 받지 못했기 때문에 자기가 루트 브리지가 된다. 즉) 처음 부팅했을 때는 B와 C모두 자신이 루트 브리지인줄 아는 것이다. 그러다 BPDU를 주고 받다 보면 A의 BID가 가장 낮은 값인 걸 알게된다. 

 

 

 

 🔖루트 포트 선출하기

 

루트 포트는 위에서 언급한대로 Root Path Cost가 가장 작은 값을 뽑으면 된다. 

 

 

 

 

🔖 데지그네이티드 포트(Deginated Port ) 선출하기

 

루트 브리지까지의 Path Cost, 즉 세그먼트 상에서 Root Path Cost를 서로 비교해 더 작은 Root Path Cost를 가진 포트가 데지그네이티드 포트로 선출된다. 만약 Root Path Cost가 같다면 BID가 더 낮은 포트가 데지그네이티드 포트로 선정된다. 따라서 B와 C 즉 B와 C사이의 세그먼트에서는 B의 BID가 더 낮아서 B의 포트가 Designated Port가 된다.

 

 

📝 스패닝 트리 프로토콜의 상태 변화

 

🔖 Disabled

: 포트가 고장나서 사용할 수 없거나 네트워크 관리자가 포트를 일부러 Shut down 시켜놓은 상태이다.

 

▶️ 데이터 전송 X

▶️ 맥 어드레스 배우기 X

▶️ BPDU 주고받기 X

 

 

🔖 Blocking

: 스위치를 맨 처음 켜거나 Disabled 되어 있는 포트를 관리자가 다시 살렸을 때 그 포트는 블로킹 상태로 들어간다. 이 상태에서는 데이터 전송은 되지 않고 오직 BPUD만 주고받을 수 있다. (맨 처음 스위치가 켜지면 서로 BPUD를 주고받으면서 루트 브리지를 뽑고, 루트 포트를 뽑고, 데지그네이티드 포트를 뽑고, Non Designated 포트를 뽑는다. 이런 과정이 블로킹 상태에서 일어난다.)

 

▶️ 데이터 전송 X

▶️ 맥 어드레스 배우기 X

▶️ BPDU 주고받기 O

 

 

🔖 Listening 

: 블로킹 상태에 있던 스위치 포트가 루트 포트나 데지그네이티드 포트로 선정되면 포트는 바로 리스닝 상태로 넘어간다. 물론 리스닝 상태에 있던 포트도 네트워크에 새로운 스위치가 접속했거나 브리지나 스위치의 구성값이 바뀌면 루트 포트나 데지그네이티드 포트에서 Non Designated 포트로 상황이 변할 수도 있다.

 

▶️ 데이터 전송 X

▶️ 맥 어드레스 배우기 X

▶️ BPDU 주고받기 O

 

 

🔖 Learning 

: 리스닝 상태였던 스위치 포트가 포워딩 딜레이(Forwarding Delay) 디폴트 시간인 15초 동안 그 상태를 계속 유지하려면 리스닝 상태는 러닝 상태로 넘어간다. 러닝 상태에서야 비로소 맥 어드레스를 배원 맥 어드레스 테이블을 만들게 된다. 

 

▶️ 데이터 전송 X

▶️ 맥 어드레스 배우기 O

▶️ BPDU 주고받기 O

 

 

 🔖Forwarding 

: 스위치 포트가 러닝 상태에서 다른 상태로 넘어가지 않고 다시 포워딩 딜레이 디폴트 시간인 15초 동안 그 상태를 계속 유지하면 러닝 상태에서 포워딩 상태로 넘어가게 된다. 포워딩 상태가 되어야 스위치 포트는 드디어 데이터 프레임을 주고받을 수 있게 된다.

 

▶️ 데이터 전송 O

▶️ 맥 어드레스 배우기 O

▶️ BPDU 주고받기 O

 

 

 


 

해당 포스팅은 후니의 쉽게쓴 시스코 코딩을 내돈내산으로 구입 후 학습하기 위해 정리한 내용입니다. 😃

 

반응형