Spanning Tree Protocol

이동훈·2023년 2월 26일
0

매일코딩

목록 보기
1/1

Introduction

Network 공부하다가 기록용으로 정리해놓으면 좋을것 같아서 메모!

Spannig Tree Protocol

  1. 만들어진 이유: L2 계층에서 Ethernet Frame이 장비들에서 빙빙 도는 현상을 Looping 이라고 하는데 STP이는 이를 방지하기 위해 만들어졌다. Frame Looping이 발생하는 이유는 일반적으로 네트워크 장비들이 Asyclic Graph가 아닌 Cyclic Graph 처럼 엮여 있는 경우가 대부분이기 때문이다. 이런식으로 Cyclic으로 해놓은 이유는 혹시나 하나의 엣지(Graph edge)가 장애가 발생이 되어도 통신이 가능하기 때문!
    Frame Looping이 발생하면 다음과 같은 일들이 발생한다.
    1. Broadcasting Storm: Cylic graph 상에서 Broadcast frame을 보내게 되면 자기랑 연결이 된 모든 edge 로 frame 을 broadcast 하면서 수많은 중복 frame 들이 한꺼번에 발생하게 된다.
    2. MAC Access Table 불안정: 동일한 MAC Address를 다른 Interface에서도 받게 되고 이러면 MAC TABLE이 당연히 꼬이게 된다.
    3. Duplicated Frame 수신: 같은 Frame을 여러 번 받는 현상
  1. 해결방법: 위 문제를 이해했다면 사실 해결방법은 아주 간단하다! 즉, cyclic graph 를 Directed Acyclic Graph(DAG)로 만들어주면 문제가 해결된다. 그러면 cyclic graph를 어떻게 DAG 로 만드냐? 그것또한 간단하다. 불필요한 edge들을 제거해주면 된다. 그런데 여기서 조심할껀 위에서 말했듯이 원래 cyclic 하게 네트워크를 구성한 이유는 장애시에도 통신이 가능하게도 하기 위해서이다. 그래서 논리적으로 DAG 형태로 만들되, 비상시에는 우회해서 통신이 가능하게 만들어놓으면 된다! 이것이 STP의 기본적인 아이디어 이다.
  2. 동작 방식: STP가 동작을 하기 시작하면 물리적으로 Loop구조인 네트워크에서 특정 포트를 차단함으로써 논리적으로는 Loop을 없애는 방식이다. 그 후 혹시 장애가 발생을 하면 차단해놓았던 포트들을 전송 상태로 바꾸어 네트워크 자체의 안정성은 유지한다. 여기서 전체 네트워크 Topology를 파악하고 DAG 경로를 구성하기 위해서 네트워크 노드들에 보내는 프레임을 Bridge Protocol Data Unit(BPDU)라고 한다.
    BPDU는 두가지가 있다. 스위치는 Configuration BPDU를 2초마다 전송해서 Root Switch를 선출하고 Switch의 포트의 역할을 결정하고 그 BPDU를 인접 Switch에 전달을 한다.
    1. Configuration BPDU: Switch와 Port의 역할을 결정하기 위하여 사용되는 프레임
    2. TCN BPDU: Switch Network의 구조가 변경되었음을 알리기 위해 사용되는 프레임
  1. Switch 및 포트 선출 방식

    1. Root Switch Bridge ID값이 가장 낮은 것이 Root Switch가 되며, Bridge Id = Priority(2Byte, configure 가능, 기본값은 32768(중간값) + Mac address(6 byte)

    2. Root Switch 외에 다른 스위치들에서는 Root Port(RP)를 한개씩 선출한다. 선출할때는 아래 조건 순서대로 한다. 경로값의 합은 경로값을 구하는 해당 스위치를 기준으로 Root 스위치까지의 각 포트의 경로 값이다.

      1. 경로값의 합이 가장 작은 포트: 경로값은 IEEE에서 속도별로 미리정해놓은 값이고 속도가 빠를수록 경로값이 낮다(이더넷: 100, 패스트이더넷: 19, 1Gbps: 4, 10Gbps: 2)
      2. 인접 스위치의 Bridge Id가 가장 작은 포트
      3. 인접 스위치의 PortId 가장 낮은 포트
    3. 각각의 Switch Segment 당 Designated Port(DP)를 한개씩 구한다. Root Port는 모두 designated port이다. 즉, 모든 switch에서 연결된 segment 의 개수만큼 designated port의 개수가 필요하다.

    4. Root Port, Designated Port도 아닌 Alternate Port(AP)를 한개씩 구한다.

  2. Port 상태

    1. 차단(Blocking): data frame을 송수진하지 않고 BPDU만 수신한다. Port가 활성화되면 DP, RP일 경우 청취, AP일떄 차단 상태이다.
    2. 청취(Listening): 청취 상태에서는 BPDU를 전송한다. 15초가 지나면 학습 상태로 변하는데 이 시간을 전송 지연(Forward delay)타이머라고 한다.
    3. 학습(Learning): MAC Address Table을 채우기 시작한다. 15초가 지나면 전송 상태로 변한다. 이 또한 전송 지연이라고 부른다.
    4. 전송(Forwarding): data frame을 정상적으로 송수신한다.

    Stabilized Network에서 각 포트는 전송 혹은 차단 둘 중 하나이다.

  3. 포트 장애시 동작 확인

    1. segment 하나가 동작을 안하게 되면 segment 양쪽 끝 스위치를 연결하기 위하여 우회하고 되고 이 경우 원래 AP 상태였던 포트가 후순위 BPDU(Inferior BPDU)를 수신하게 된다. 후순위인 이유는 원래 Root Bridge Id에 본인보다 더 높은 순위가 들어와야 하는데 연결이 끊어지면서 자기 ID를 넣게 되고 이렇다는 말은 네트워크 토폴로지 변경이 일어났다는 뜻이다.

이 순서로 이루어지는게 STP!

References

  1. https://net-study.club/entry/%EC%8A%A4%ED%8C%A8%EB%8B%9D-%ED%8A%B8%EB%A6%AC-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9CSTP-Spanning-Tree-Protocol
  2. https://okjh.tistory.com/20
profile
개발이 어려운 개발자

0개의 댓글