Spanning Tree Protocol(STP)
- 스위치나 브리지에서 발생하는 뺑뺑이(루핑)을 막기위한 프로토콜
- 출발지부터 목적지까지 경로가 2개 이상일 경우 1가지의 경로를 빼고 나머지 경로를 다 끊어두었다가 그 경로에 문제가 생길 경우 끊어놓았던 경로를 다시 복구
- STP를 이해하기 위해서는 Bridge ID와 PATH COST를 알아야 한다
Bridge ID(BID)
- 브리지나 스위치들이 통신을 할 때 서로를 확인하기 위해 하나씩 가지고 있는 번호
- 8 byte로 구성이 되면 앞에 2byte = Brige Priority, 뒤에 6byte = MAC 주소
PATH COST
- 브리지 / 스위치가 다른 브리지 / 스위치로 이동하는데 드는 비용
- 링크의 속도(대역폭)가 빠르면 빠를수록 PATH COST는 작아진다.
- IEEE에서 예전에는 PATH COST를 1000Mbps를 두 스위치의 거리만큼 나눠서 계산한 값이 었으나 장비의 발전으로 인해 IEEE는 대역폭에 따른 PATH COST 값을 정수값으로 정하였음
- STP에는 3가지 공식이 있다.
1) 네트워크당 하나의 루트 브리지를 가진다.
- 하나의 브로드캐스트도메인은 STP수행시 기준이 되는 루트 브리지를 가진다.
스위치에서 루트 브리지 선정하는 법
1. 스위치 B와 스위치 C가 부팅을 시작
2. 스위치 B와 스위치 C는 서로의 BPDU를 서로에게 보냄(BPDU에는 ROOTBID가 포함)
3. 스위치 B와 스위치 C는 서로의 ROOT BID를 확인 → B Root BID< C Root BID
→ 스위치 B의 ROOt BID가 더 작으므로 B가 Root 브리지가 된다.
4. 스위치 A가 부팅을 시작 → A 와 B,C는 자신의 BPDU를 서로에게 보냄
5. 받은 BPDU에서 Root BID를 확인 A Root BID< B Root BID
→ 스위치 A의 Root BID가 더 작으므로 스위치 A가 루트 브리지가 된다.
만약 루트브리지를 지정을 하고 싶다면
→Root BID 안에 있는 priority 값을 작은 값으로 변경시키면 된다.
2) 루트브리지가 아닌 나머지 모든 브리지는 무조건 하나씩 루트포트를 가진다.
- 루트포트 : 루트 브리지(스위치)에서 가장 가까운 포트
루트 포트를 결정하는 방법 : Path Cost가 가장 적은 것을 선정
3) 세그먼트당 하나씩의 지정포트(Designated Port)를 가진다.
- 세그먼트 : 브리지 / 스위치간에 서로 연결된 링크
- 루트포트에 연결되어 있는 세그먼트가 지정포트
4) STP에서는 루트 포트, 지정포트 제외한 나머지 포트는 다 막아버린다.
- 루트포트, 지정포트, 루트브리지 정하는 방법 → BPDU를 보고 결정
BPDU : 브리지 / 스위치들 사이 스패닝 트리 정보를 자기들 끼리 주고 받기 위해서
사용하는 특수 프레임
BPDU 안에 들어있는 것
1) Root BID : 가장 작은 값을 루트브리지로 선정
2) Root Path Cost
3) SenderBID
4) 포트 ID
→ STP에서 우선순위는 1~4단계에서 더 작은 값을 가진 스위치 / 브리지가 우선순위를 가진다.
스패닝 트리의 5가지 상태
1) Disabled : 포트가 고장나서 사용할 수 없거나 네트워크 관리자가 포트를 일부러 Shut Down 해놓은 상태
- 데이터 전송 : X
- MAC 주소 Learning : X
- BPDU 전송 : X
2) Blocking : 스위치를 맨 처음 키거나 Disabled 된 포트를 관리자가 다시 살렸을 경우
맨 처음 스위치에서 루트 포트 루트 브리지, 지정포트 설정 할 때의 상태
- 데이터 전송 : X
- MAC 주소 Learning : X
- BPDU 전송 : O
3) Listening : 블로킹 상태에서 스위치 포트가 루트 포트나 지정포트로 선정된 경우
언제든지 Blocking 상태가 될 수 있다.
- 데이터 전송 : X
- MAC 주소 Learning : X
- BPDU 전송 : O
4) Learning : Listening 상태에서 일정시간 동안 버텨낸 상태로써 이 때 MAC 주소를 배우고 MAC 주소 테이블을 만들게 된다.
- 데이터 전송 : X
- MAC 주소 Learning : O
- BPDU 전송 : O
5) Forwawrding : 스위치가 Learning 상태에서 일정시간 유지하게 된 상태로써 이 때 프레임을 주고 받게 된다.
- 데이터 전송 : O
- MAC 주소 Learning : O
- BPDU 전송 : O
스패닝 트리 관련 용어
1. Hello Time : 루트브리지가 자신에게 연결된 브리지들에게 BPDU를 보내는 시간
Default Hello Time = 2초
2. Max Age : 브리지들이 루트브리지로부터 Hello BPDU를 받지 못해 스패닝 트리 구조를 변경을 시작하려는 시간
Default Max Age = 20초
3. Forwarding Delay : 브리지 포트가 블로킹 상태에서 포워딩 상태로 변경되는데 걸리는 시간(Forwarding Delay = Blocking → Learning → Forwarding 순서로 상태 변경)
4. Convergence Time = 링크에 문제가 생켜 링크에 변화가 생겼을 때 이를 반영하는데 걸리는 시간
스패닝 트리 알고리즘 예제
1. Route Switch인 Switch A는 Hello Time 마다 Hello BPDU를 전송 Switch A와 C 사이에 링크 절단으로 Switch C가 통신 불가상태
2. Switch C는 Max Age까지 BPDU를 기다리나 Max Age까지 Hello BPDU가 전송이 안됨
3. 스위치 C는 E1스위치를 Forwading delay하여 새로운 포트 E1을 통해 패킷 수신(기존의 열어놨던 포트 E0은 blocking 상태로 바꿈)
4. Switch C는 E1 포트를 통해 데이터 송/수신
→ 통신이 끊겼을 때 새로운 포트를 open하는데 걸리는 시간 = Convergence Time
포스팅 하는 모든 내용의 그림 및 내용은 후니의 CISCO 네트워킹 책을 인용한 것 입니다.
'낙서장- 네트워크 ' 카테고리의 다른 글
네트워크 실습 1일차(IP 주소의 기본구성하기) (0) | 2019.01.08 |
---|---|
네트워크 7일차 (0) | 2019.01.08 |
네트워크 공부 5일차 (0) | 2019.01.04 |
네트워크 공부 4일차 (0) | 2019.01.03 |
네트워크 공부 3일차 (0) | 2019.01.01 |