STP( Spanning Tree Protocol)

문딤·2022년 9월 12일
0
post-custom-banner

STP 란?

이더넷 프레임 장비들 사이에서 이더넷 프레임 루핑을 방지해 주는 역활을 수행하는 프로토콜

이더넷 프레임 루프가 발생하면 브로드캐스트 폭풍, MAC 주소 불안정, 이중 프레임 수신 현상 발생한다.

  1. 브로드캐스트 폭풍(Broadcasting Storm)발생 : Broadcast Frame이 사이클에 갇혀 계속 Looping이 일어나 속도가 저하되거나 시스템이 다운된다.

  2. MAC Address Table 불안정 : Looping이 발생하게 되면 동일한 MAC Address를 다른 Interface에서 받게 된다. MAC Address Table이 계속 변하는 MAC Table instabiliy현상을 발생한다.

  3. 이중 Frame 수신 : Frame이 Looping되면서 받은 Frame을 또 받고 , 또 받고 반복하면서 해당 Frame을 사용하는 프로그램이 제대로 동작하지 않을 수 있다.

STP의 목적

루프가 없는 네트워크를 유지하는 것

STP 동작방식

STP가 동작을 시작하면 위의 Topology와 같은 물리적으로 Loop 구조인 Network에서 특정 Port를 차단 상태로 바꾸어 놓음으로써 논리적으로 Loop가 발생하지 않게 한다.

그러다 다른 동작중인 스위치의 Port가 Down되면 차단 상태로 바꿔놓은 특정 Port를 다시 전송 상태로 바꾸어 통신이 끊기지 않도록 한다. 그 Loop를 막는 경로를 구성하는 프레임을 BPDU(Bridge Protocol Data Unit)라고 한다.

  1. Configuration BPDU : Switch 및 Port의 역할을 결정하기 위하여 사용되는 Frame

  2. TCN BPDU : Switch Network의 구조가 변경되었을 때 알리기 위하여 사용되는 Frame

+@ Switch 선출방식

  1. 전체 Switch 중 Root Switch를 선출한다.
  2. Root Switch 이외의 모든 스위치에서 Root Port를 한개씩 선출한다. Root Port 경쟁시 선출 조건은 이러하다.
  3. 각각의 Switch Segment당 Designated Port(지정 포트)를 한개씩 선출한다.
  4. Root Port도, Designated Port도 아닌 Port인 Alternate Port(대체 Port)를 선출한다. 이 Port는 항상 차단된다.

관련 용어

  1. BPDU

: 스위치들이 Loop가 생기는 상황을 감지하고 적절한 포트를 Blocking 시킴으로써 Loop현상을 막기 위해서는 스위치 자체의 설정 정보와 네트워크의 변화를 알릴수 있는 방법이 있어야 하는데 이러한 정보의 교환은 BPDU에 의해 이루어진다

  • 매 2초 간격으로 스위치와 스위치 사이에 각종 정보 전달
  • Spanning Tree 상태를 모니터링
  1. Bridge ID

: Bridge Priority + Bridge MAC Address

  1. Path Cost

: 한스위치에서 다른 스위치로 가는데 드는 비용

  1. Root Bridge

: STP를 수행할 때 기준이 되는 Bridge

  1. Root Port

: Root Bridge에 가장 빨리 갈 수 있는 포트 (가장 가까운 포트)

  1. Designnated Port(지정포트)

: 브리지 or 스위치 간에 서로 연결된 링크

  1. Non Designnated

: Root Port , Designnated Port가 아닌 나머지 포트

  1. Hello Time

: Root Bridge가 자신에게 연결된 스위치에게 2초마다 한 번씩 보내는 헬로 BPDU

SPOF(Single Point of Failure)

◻ 어떤 시스템에서 하나의 구성요소가 동작하지 않으면 시스템 전체가 중단되는 요소를 가리킨다.
◻ 이중화가 되어있지 않은 요소라면 SPOF일 가능성이 높다.
◻ 장애회복성을 위해서 SPOF가 없어야한다.

SPOF방지

◻ API 서버를 늘려보자

API 서버 한 대에 에러가 나도 서비스가 가능하다.
하지만 여전히 DB서버는 SPOF이다.

◻ DB 서버또한 이중화 해본다.

서버 외의 하드웨어 부분에서 SPOF가 발생할 수 있다.
방지 및 복원을 하려면 큰 비용이 필요하다.

루프

네트워크 상에서 무한으로 돌아서 데이터를 전송할 수 없는 상태

  1. SWITCH A에 있는 PC가 SWITCH C에 있는 PC에 패킷을 보낸다.
  2. SWITCH A는 PC가 연결되어 잇는 포트를 제외한 나머지 포트로 패킷을 보낸다.
  3. SWITCH C는 또 각 케이블을 통해서 FLOODING 한다.
  4. 1번 케이블 패킷을 2번으로, 2번 케이블 패킷을 1번으로 보내는 등의 과정을 반복.
    💨 루핑 발생한다.

스위치가 멈춰 버리고 네트워크 먹통이 된다.

Looping이 걸리면 발생하는 문제

Switch들은 계속 반복해서 Broadcast Traffic을 전파
스위치들은 이들을 처리하기 위해 많은 CPU 자원을 소모하게 된다.
자신의 모든 자원을 소모하면 네트워크가 다운되는 현상이 발생한다.

이를 방지하기위해 STP 프로토콜이 수행된다.

스위치 포트 상태 및 변경과정

  1. Disable : 포트가 고장 나서 사용할 수 없거나 포트를 Shutdown 시켜놓은 상태 [ 데이터 전송 안됨 , MAC Address 배우지 못함 , BPDU 받지 못함 ]
  1. Blocking : 스위치를 맨 처음 켰거나 Disable 되어 있는 포트를 다시 살렸을 때 그 포트는 블로킹 상태 [ 데이터 전송 안됨 , MAC Address 배우지 못함 , BPDU 수신 ]
  1. Listening : 블로킹 상태에 있던 스위치 포트가 루트나 Designated 포트로 선정되면 포트는 바로 리스닝 상태 [ 데이터 전송 안됨 , MAC Address 배우지 못함 , BPDU 전송 ]
  1. Learning : 리스닝 상태에 있던 스위치 포트가 포워딩 딜레이 디폴트 시간인 15초 동안 그 상태를 유지하면 리스닝 상태는 러닝 상태로 넘어감 [ 데이터 전송 안됨 , MAC Address 배우기 시작 , BPDU 송수신 ]
  1. Forwading : 이용자 프레임을 송수신한다 [ 데이터 전송 , MAC Address 배우기 시작 , BPDU를 송수신 ] : 모든 포트들은 Blocking 상태에서 시작(브리지 루프 예방을 위해서) 그다음 포트가 전송할 준비가 되었지만 , 루프를 만들지 않기 위해서 Listening 상태로 조금 더 기다려보다가 Learning 상태로 넘어가면 MAC 주소 테이블을 포트에 수신된 MAC 주소들로 채운 후 Forwarding 상태로 가서 데이터를 송수신할 수 있는 것입니다.


Blocking ==20초 == > listening ==15초 ==> Learning ==15초 ==> Forwarding

토폴로지가 변화돼서 다른 경로로 넘어가면 통신이 기본 30초가 빠진다.

STP 동작방식

  1. 루트 브리지 선택 : 주어진 하나의 브로드캐스트 도메인에서 하나의 브리지를 루트 브리지로 지명
  1. Designated port / Root port 선출

: STP가 사용하는 Spanning Tree 알고리즘의 내용은 다음과 같다.

  • 전체 스위치 중에서 루트(Root) 스위치를 선택합니다.

  • 루트 스위치가 아닌 모든 스위치에서 루트 포트를 하나씩 선택합니다.

  • 한 스위치 세그먼트 당 지정(Designated) 포트를 하나씩 선택합니다.

  • 루트 포트도 지정 포트도 아닌 포트를 대체 포트(Alternate Port)라고 하고 대체 포트는 항상 차단된다.

참고

https://xn--os5ba3q.com/104
https://ja-gamma.tistory.com/entry/STPSpanningTree

profile
풀스택개발자가 될래요
post-custom-banner

0개의 댓글