따봉도치야 고마워

[네트워크 공부] 후니의 쉽게 쓴 네트워킹 5일차 - Part06 본문

프로그래밍/공부

[네트워크 공부] 후니의 쉽게 쓴 네트워킹 5일차 - Part06

따봉도치 2020. 3. 23. 15:01

*STP (Spanning Tree Protocol)

- 스위치/브리지에서 발생하는 루핑을 막아주기 위한 프로토콜

- 출발지부터 목적지까지 경로가 2개 이상이면 1개만 남겨두고 전부 끊었다가, 문제 발생 시 사용

 

Bridge ID

- 브리지/스위치들이 통신할 때 서로를 확인하기 위해 가지고 있는 번호

- 총 8바이트 : 브리지 우선순위 (Bridge Priority) + 맥 어드레스

- 브리지 우선순위는 16비트로 이루어지고, 기본값은 32768(2^16-1의 중앙값)

- 낮은 값이 더 높은 우선순위

 

Path Cost

- 브리지가 얼마나 가까이, 빠른 링크로 연결되어 있는지 알아내기 위한 값

- 기존엔 1000 Mbps / 두 장비 사이 대역폭으로 계산했으나, 다양한 속도가 나오면서 소수점 값이 나와버려

- 지금은 아예 정수 값으로 지정해둠

- 비용이 작을수록 빠르다는 것

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

스패닝 트리 프로토콜 기본 동작 3가지

1) 네트워크 당 하나의 루트 브리지를 선정

- STP를 수행할 때 기준이 되는 스위치/브리지

 

2) Non Root Bridge당 하나의 루트 포트를 선정

- 루트 포트 : 루트에 가장 가까운/빨리 갈 수 있는 포트

 

3) 세그먼트 당 하나의 데지그네이티드 포트 선정

- 세그먼트 = 링크

- 브리지/스위치가 연결되어있는 링크에서 한 포트는 지정 포트로 선출되어야 함.

 

- 루트 포트나, 데지그네이티드 포트가 아닌 나머지 포트는 다 막아버림.

 

스패닝 트리 프로토콜 순서 정하는 법

1) 누가 더 작은 Root BID를 가졌는가

2) 루트 브리지까지 PathCost는 누가 더 작은가

3) 누구의 Sender BID가 더 낮은가

4) 누구의 포트 ID가 더 낮은가

 

- 브리지/스위치는 스패닝 트리 정보를 주고받기 위해 특수한 프레임 사용 "BPDU(Bridge Protocol Data Unit)"

- BPDU : 루트 BID, 루트 PathCost, Sender BID, Port ID 등 포함

- 이 BPDU를 주고받으면서 루트브리지/포트, 데지그네이티드 포트를 결정하게 됨.

 

 

루트 브리지 선정 기준

- 낮은 BID를 가진 브리지가 루트 브리지가 됨

- 처음 통신할 땐 Root BID에 자기 BID 넣어서 통신하고, BPDU 주고 받으면서 비교해 낮은 값으로 변경

- 만약 특정 스위치를 루트 브리지로 설정하고 싶다면 Bridge Priority를 기본값보다 낮게 설정

 

논 루트 브리지의 루트 포트 선정 기준

- 루트 브리지까지 Path Cost가 가장 적게 드는 포트

 

데지그네이티드 포트 선정 기준

- 루트 브리지까지 Path Cost, 세그먼트 상에서 Root Path Cost를 비교해 작은 포트가 데지그네이티드 포트로 선출

- 즉 루트 브리지 상의 모든 포트는 늘 데지그네이티드 포트로 선정됨

- Path Cost가 같다면 앞의 순서 4단계를 거침

 


스패닝 트리 프로토콜의 5가지 상태 변화

- STP를 구현하는 과정에서 스위치/브리지는 아래의 5가지 상태로 변함

 

1) Disabled

- 포트가 고장나서 사용불가거나 네트워크 관리자가 포트를 일부러 ShutDown 시킨 상태

- 데이터 전송x, 맥 어드레스 배울 수 x, BPDU 통신 x

 

2) Blocking

- 스위치를 맨 처음 키거나 Disabled 포트를 다시 살렸을때, 블로킹 상태가 됨

- 이 상태에서 루트 브리지, 루트 포트, 데지그네이티드/ND 포트 뽑기

- 데이터 전송x, 맥 어드레스 배울 수 x, BPDU 통신 o

 

3) Listening

- 블로킹 상태의 스위치 포트가 루트/데지그네이티드 포트로 선정 시 리스닝 상태로 넘어감

- 물론 리스닝 상태의 포트도 새로운 스위치 접속/구성값 변경 시 ND포트(Non-Designed) 로 변경돼 블로킹 될 수 있음

- 데이터 전송x, 맥 어드레스 배울 수 x, BPDU 통신 o

 

4) Learning

- 리스닝 상태에 있던 포트가 포워딩 딜레이 디폴트 시간인 15초동안 상태를 유지하면 러닝 상태로 넘어감

- 맥 어드레스를 배워 맥 어드레스 테이블을 만들게 됨

- 데이터 전송x, 맥 어드레스 배울 수 o, BPDU 통신 o

 

5) Forwarding

- 스위치 포트가 러닝에서 다른 상태로 넘어가지 않고 다시 포워딩 딜레이(Forwarding delay) 디폴트 시간인 15초가 지나면 포워딩 상태로 넘어감

- 드디어 데이터 프레임 주고 받을 수 있음

- 즉 블로킹 상태에서 포워딩 상태가 되려면 15초 * 2 소요

- 데이터 전송o, 맥 어드레스 배울 수 o, BPDU 통신 o

 


스패닝 트리에 변화가 생길 때

1) 루트 브리지는 매 2초마다(디폴트 헬로타임) 헬로 BPDU를 Non Root Bridge로 전송

2) Non Root Bridge들은 이것을 자신의 데지그네이티드 포트로 다시 전달

3) Non Root Bridge들이 패킷을 받지 못한 뒤 맥스에이지 만큼의 시간이 또 지나면 스패닝 트리 재편성

4) 다른 스위치의 데지그네이티드 포트로 온 패킷을 받고 해당 포트를 루트포트로 변경

 

*Hello Time : 루트 브리지가 얼마 만에 한 번씩 헬로 BPDU를 보내는지에 대한 시간, 기본 2초

*Max Age : 헬로패킷을 받지 못하면 맥스 에이지 시간동안 기다린 후 스패닝 트리 구조 변경 시작, 기본 20초

*Forwarding Delay : 블로킹->포워드 상태로 넘어갈때 까지 걸리는 시간. (실제 시간은 *2)

 

- 한 링크가 끊어졌을 때 STP를 이용해 복구하는데 대략 50초 걸림 (20 + 15 + 15)

- 이런 점을 보완하기 위한 여러가지 기법이 있음. ex) RSTP, Port Fast, Up-link Fast, Backbone Fast ..

 

 

 

Comments