일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kotlin
- swea
- 알고리즘
- dfs
- 투 포인터
- 완전탐색
- Effective Java
- mst
- 동적계획법
- java
- 백트래킹
- 문자열
- 세그먼트 트리
- JUnit 5
- 구현
- 플로이드-와샬
- 프로그래머스
- 수학
- 위상정렬
- 후니의 쉽게 쓴 시스코 네트워킹
- 시뮬레이션
- CS
- BFS
- 이분탐색
- 스택
- 그리디
- 유니온 파인드
- 백준
- Network
- 에라토스테네스의 체
반갑습니다!
[Network] 후니의 쉽게 쓴 시스코 네트워킹 Part 6 본문
STP(Spanning Tree Protocol)
스위치나 브리지에서 발생하는 루핑을 막아주기 위한 프로토콜이다. 스위치나 브리지 구성에서 출발지부터 목적지까지 경로가 2개 이상 존재할 때 1개의 경로만을 남겨두고 나머지는 모두 끊어두었다가 사용하던 경로에 문제가 생기면 그 때 끊어두었떤 경로를 하나씩 살리는 방식으로 동작한다.
STP를 이해하기 위해서는 2가지 개념을 이해해야한다.
- Bridge ID
- Path Cost
Bridge ID
브리지 ID란 브리지나 스위치들이 통신할 때 서로를 확인하기 위해서 가지고 있는 식별 번호이다.
총 8바이트(64비트)로 구성되어있으며 앞 16비트는 Bridge Priority, 뒤 48비트는 MAC Address이다.
Path Cost
Path Cost는 말 그대로 '길을 가는데 드는 비용'이라고 이해할 수 있는데, 여기서 말하는 길은 장비와 장비가 연결되어 있는 링크를 의미한다. 즉 Path Cost는 브리지가 얼마나 가까이, 그리고 빠른 링크로 연결되어있는지를 알아내기 위한 값이다.
Path Cost는 링크의 속도(대역폭)가 빠를수록 더 작은 값이 된다. (링크 속도가 빠를수록 더 빨리 도착하기 때문에 Cost가 적게 든다)
IEEE에서 대역폭 별로 Path Cost를 정의해두었다.
BandWidth (대역폭) | STP Cost (Path Cost) |
4 Mbps | 250 |
10 Mbps | 100 |
16 Mbps | 62 |
45 Mbps | 39 |
100 Mbps | 19 |
155 Mbps | 14 |
622 Mbps | 6 |
1 Gbps | 4 |
10 Gbps | 2 |
STP 동작 방식
- 네트워크당 하나의 루트 브리지(Root Bridge)를 갖는다.
- 루트 브리지가 아닌 나머지 모든 브리지(Non Root Bridge)는 무조건 하나의 루트 포트(Root Port)를 갖는다.
- 세그먼트(Segment) 당 하나씩의 데지그네이티드 포트(Designated Port)를 갖는다.
루트 브리지(Root Bridge): STP를 수행할 때 기준이 되는 브리지(스위치) 루트 포트(Root Port): 루트 브리지에서 가장 빨리 갈 수 있는 포트 세그먼트(Segment): 브리지 또는 스위치 간에 서로 연결된 링크
포트 결정 정책
STP에서는 루트 브리지, 루트 포트, 데지그네이티드 포트를 정하기 위한 정책이 있다.
- 누가 더 작은 Root BID를 가지는가?
- 루트 브리지까지의 Path Cost 값은 누가 더 작은가?
- 누구의 BID가 더 낮은가?
- 누구의 포트 ID가 더 낮은가?
BPDU
브리지는 스패닝 트리 정보를 주고받기 위해 BPDU(Bridge Protocol Data Unit)이라고 하는 프레임을 사용한다. BPDU에는 Root BID, Root Path Cost, Sender BID, Port ID 등의 정보가 담겨있다. 브리지나 스위치가 부팅되면 각각의 포트로 BPDU를 2초마다 내보내면서 서로의 스패닝 트리 정보를 주고받는다. 그리고 주고받은 정보로 루트 브리지, 루트 포트, 데지그네이티드 포트 등을 결정한다.
STP의 상태 변화
스패닝 트리를 만드는 것은 결국 루트 브리지를 하나 뽑고, 루트 브리지를 제외한 나머지 브리지에서 루트 포트를 뽑고, 데지그네이티드 포트를 뽑은 후 마지막으로 나머지 포트를 논 데지그네이티드 포트로 지정하는 것이다. 이렇게 STP를 구현하는 과정에서 모든 스위치나 브리지의 포트들은 5가지 상태로 변한다.
- Disabled
- 포트가 고장나서 사용할 수 없거나 네트워크 관리자가 포트를 일부러 Shut Down시켜 놓은 상태
- 데이터 전송 불가
- MAC Address 학습 불가
- BPDU 주고 받기 불가
- 포트가 고장나서 사용할 수 없거나 네트워크 관리자가 포트를 일부러 Shut Down시켜 놓은 상태
- Blocking
- 스위치를 맨 처음 켜거나 Disabled 되어있는 포트를 다시 살렸을 때 진입하는 상태
- 데이터 전송 불가
- MAC Address 학습 불가
- BPDU 주고 받기 가능
- 스위치를 맨 처음 켜거나 Disabled 되어있는 포트를 다시 살렸을 때 진입하는 상태
- Listeninig
- 블로킹 상태에 있던 스위치 포트가 루트 포트나 데지그네이티드 포트로 선정되면 진입하는 상태. 네트워크에 새로운 스위치가 접속하거나 스위치의 구성값이 바뀌면 다시 블로킹 상태로 진입한다.
- 데이터 전송 불가
- MAC Address 학습 불가
- BPDU 주고 받기 가능
- 블로킹 상태에 있던 스위치 포트가 루트 포트나 데지그네이티드 포트로 선정되면 진입하는 상태. 네트워크에 새로운 스위치가 접속하거나 스위치의 구성값이 바뀌면 다시 블로킹 상태로 진입한다.
- Learning
- 리스닝 상태에 있던 스위치 포트가 포워딩 딜레이(Forwarding Delay) 디폴트 시간인 15초 동안 그 상태를 유지하면 리스닝 상태에서 러닝 상태로 진입한다
- 데이터 전송 불가
- MAC Address 학습 가능
- BPDU 주고 받기 가능
- 리스닝 상태에 있던 스위치 포트가 포워딩 딜레이(Forwarding Delay) 디폴트 시간인 15초 동안 그 상태를 유지하면 리스닝 상태에서 러닝 상태로 진입한다
- Forwarding
- 러닝 상태에서 다시 포워딩 딜레이 디폴트 시간인 15초 동안 상태를 유지하면 포워딩 상태가 된다.
- 데이터 전송 가능
- MAC Address를 배워 브리지 테이블 생성
- BPDU 주고 받기 가능
- 러닝 상태에서 다시 포워딩 딜레이 디폴트 시간인 15초 동안 상태를 유지하면 포워딩 상태가 된다.
'CS' 카테고리의 다른 글
[Java] Effective Java Item1 (0) | 2020.11.05 |
---|---|
[Network] OSI 7 Layer (0) | 2020.10.20 |
[알고리즘] 위상 정렬 (0) | 2020.10.06 |
[Network] 후니의 쉽게 쓴 시스코 네트워킹 Part 5 (0) | 2020.10.04 |
[Network] 후니의 쉽게 쓴 시스코 네트워킹 Part 4 (0) | 2020.10.03 |