일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 백준
- BFS
- 동적 프로그래밍
- 고모네 콩탕
- 2839
- 호유동
- 1로 만들기
- 2589
- HTTP API
- 스프링 MVC
- dp
- Spring
- 쓰레드 풀
- 2020 KAKAO BLIND
- 서블릿
- 맛집 투어
- Servlet
- 다이나믹 프로그래밍
- 설탕 배달
- mvc
- 프로그래머스
- 2638
- 투어
- 문자열 압축
- 완도산회
- 알고리즘
- 스프링
- 양꼬치
- 포두부 보쌈
- 맛집
- Today
- Total
프로그래밍 공방
Spanning Tree Protocol / 스패닝 트리 프로토콜 본문
스패닝 트리 프로토콜 (Spanning Tree Protocol)
OSI 2계층 프로토콜로 스위치나 브리지에서 발생하는 루핑을 방지하기 위해 사용되는 프로토콜이다.
( * 스위치나 브릿지 구성에서 출발지부터 목적지까지의 경로가 2개 이상 존재할 때, 한 개의 경로만을 남겨두고 나머지는 모두 끊어두었다가 사용하던 경로에 문제가 발생하면 끊어두었던 경로를 살린다.)
Bridge ID
브리지나 스위치들이 통신할 때 서로를 식별하기 위해 하나씩 가지고 있는 번호
Bridge Priority : 0 ~ 2^16-1 까지의 숫자 ( Default = 32768 / 중간값 )
MAC Address : 장비의 고정값
Path Cost
브리지가 얼마나 가까이, 얼마나 빠른 링크로 연결되어 있는지 1000Mbps를 두 장비 사이의 링크 대역폭으로 나눈 값
( 연결 속도가 빨라져서 소수점이 나오기 시작하면서 각 속도마다 path cost 값을 정의하기 시작했다 )
STP의 3가지 동작
1. 네트워크당 하나의 루트 브리지(Root Bridge)를 갖는다.
(여기서 네트워크란 스위치나 브리지로 구성된(라우터로 나누어지는) 하나의 네트워크를 말한다.)
- 루트 브리지(Root Bridge) : STP를 수행할 때 기준이 되는 브리지 or 스위치
2. 루트 브리지가 아닌 나머지 모든 브리지는 무조건 하나씩의 루트 포트(Root Port)를 갖는다.
- Root Port : 루트 브리지에 가장 빨리 갈 수 있는 포트
3. 세그먼트당 하나씩의 지정 포트(Designated Port)를 갖는다.
- 세그먼트 : 브리지 or 스위치 간에 서로 연결된 링크
- 서로 연결된 링크가 있으면 이 세그먼트에서 반드시 한 포트는 지정 포트로 선출되어야 한다.
STP는 루트 포트나 지정 포트가 아는 나머지 포트는 다 Blocking 한다.
루트 브리지, 루트 포트, 지정 포트를 정하는 기준
1단계 : 누가 더 작은 Root BID를 가졌는가?
2단계 : 루트 브리지까지의 Path Cost 값은 누가 더 작은가?
3단계 : 누구의 BID(Sender BID)가 더 낮은가?
4단계 : 누구의 포트 ID가 더 낮은가?
브리지, 스위치는 스패닝 트리 정보를 주고받기 위해서 BPDU( Bridge Protocol Data Unit )라는 프레임을 사용한다.
Bridge, Switch가 부팅을 하면 각각의 포트로 BPDU를 2초마다 보내서 서로의 스패닝 트리 정보를 주고 받는다.
Root Bridge 결정 방법
네트워크에서 가장 낮은 BID를 가지고 있는 브리지가 Root Bridge가 된다.
Root Bridge가 결정되는 과정
SW-B와 SW-C가 부팅되고 B와 C가 서로 BPDU를 주고 받는다.
(처음에는 Root BID가 세팅되어 있지 않으므로 BPDU의 Root BID에 자기 자신의 BID를 넣어서 보낸다.)
B와 C가 서로 BPDU를 주고 받았을 때, B가 보낸 BPDU의 Root BID가 더 작으므로 Root BID가 B의 BID로 바뀐다.
이때, A가 부팅되면 위 과정이 반복되어 Root BID가 A의 BID로 바뀐다.
( 특정한 스위치, 브리지를 Root Bridge로 설정하고 싶다면 Bridge Priority를 작게 설정해주면 된다. )
Non Root Bridge의 루트 포트 결정 방법
브리지, 스위치 내의 포트 중에 가장 적은 Root Path Cost를 갖는 포트가 Root Port가 된다.
( Root Path Cost : 루트 브리지까지의 Path Cost )
Designated Port 결정 방법
세그먼트 상에서 Root Path Cost를 서로 비교해서 더 작은 Root Path Cost를 가진 포트가 지정 포트로 선출된다
( Root Bridge, Switch의 액티브 포트는 전부 지정 포트이다. )
만약 Root Path Cost가 같다면 Sender BID를 비교하고 같다면 Port ID를 비교해서 Designated Port를 결정한다.
Root Port, Designated Port가 아닌 나머지 포트들은 전부 Non Designated Port이다.
Port 상태
STP를 구성하는 과정에서 모든 스위치나 브리지의 포트들은 5가지의 상태를 갖는다.
1. Disabled
포트가 고장나서 사용할 수 없거나 네트워크 관리자가 포트를 Shutdown 시켜놓은 상태
2. Blocking
스위치를 처음 켜거나 Disabled 되어 있는 포트를 관리자가 다시 살렸을 때 Blocking 상태가 된다.
3. Listening
블로킹 상태에 있던 포트가 루트 포트나 지정 포트로 선정되면 Listening 상태가 된다.
4. Learning
리스닝 상태에 있던 스위치 포트가 포워딩 딜레이 시간 동안 그 상태를 계속 유지하면 Learning 상태로 넘어간다.
(Default Forwarding Delay time : 15초)
5. Forwarding
스위치 포트가 러닝 상태에서 포워딩 딜레이 시간 동안 그 상태를 계속 유지하면 포워딩 상태로 넘어간다.
STP 구성 예시
스패닝 트리에 이상이 생기는 경우
루트 브리지가 Hello Time마다 Hello BPDU를 Root Bridge가 아닌 브리지로 전송한다.
이 Hello BPDU를 받은 브리지들을 이것을 자신의 DP로 전달한다.
만약 Max Age동안 Hello Packet을 받지 못하면 중간 경로에 문제가 발생했다고 판단하고 스패닝 트리를 재생성한다.
* Hello Time : 루트 브리지가 자신과 연결된 브리지들에게 Hello BPDU를 보내는 주기 ( Default : 2초 )
* Max Age : 브리지들이 루트 브리지로부터 Hello Packet을 받지 못하면 Max Age 시간동안 기다린 다음 스패닝 트리 구조 변경을 시작한다. ( Default : 20초 )
'개발 > 네트워크' 카테고리의 다른 글
트랜스포트 계층 : Transport Layer / UDP (0) | 2021.02.08 |
---|---|
애플리케이션 계층 : Application Layer (0) | 2021.02.01 |
IP Address (0) | 2021.01.02 |
유니캐스트, 브로드캐스트, 멀티캐스트 (0) | 2020.12.06 |
MAC address (0) | 2020.12.05 |