Computer Network 04. 스패닝 트리 알고리즘(Spanning Tree Algorithm) (2)

pastafromvictoriadesert·2023년 4월 11일
0

컴퓨터 네트워크

목록 보기
9/20

📌3. 예제

스패닝 트리 알고리즘을 적용하는 예제이다.
스위치 A, B, C는 모두 디폴트 구성이다.

  • 스위치 B와 C만 먼저 부팅된다고 가정한다.


3.1 루트 브리지 선정

3.1.1 B와 C의 경우

루트 브리지 : 가장 낮은 BID를 가진다.

스위치 B와 C는 서로 BPDU를 주고받는다.

  • 브리지가 맨 처음 부팅하고 나서 내보내는 BPDU에는 Sender BID에 자신의 BID를 넣고, 루트 브리지의 BID도 자신의 BID를 넣는다.
    👉방금 부팅한 브리지는 다른 BPDU를 한 번도 받지 못했기 때문에 이 네트워크에는 자신만 있다고 생각한다.
    👉자신만 있는 네트워크에서는 자신이 루트 브리지이기 때문에 결국 자신이 루트 브리지라고 생각한다.

  • 스위치 B와 C는 루트 브리지 BID를 자신의 BID로 세팅해서 BPDU를 서로 주고 받는다.

스위치 B의 입장에서 곧 스위치 C가 보낸 BPDU가 도착한다.

  • 스위치 B는 자신이 알고 있던 정보, 즉 루트 브리지 BID가 2222(이하생략)으로 되어있는 정보와 방금 스위치 C로부터 받은 정보를 비교한다.
  • 더 낮은 BID가 루트 브리지가 되기때문에 C가 보낸 BPDU는 무시한다.

스위치 C의 입장에서 B가 보낸 BPDU가 도착한다.

  • B와 같이 자신이 알고있던 정보와 방금 스위치 B로부터 받은 정보를 비교한다.
  • 더 낮은 BID가 루트 브리지가 되기 때문에 자신의 BPDU의루트 브리지 BID를 B의 BID로 수정한다.

결과

A는 아직도 자고있다..

3.1.2 A가 부팅될때

처음 부팅되면 무조건 BPDU부터 보낸다.

스위치 A는 자신의 BPDU에 루트 브리지의 BID를 자신의 BID로 설정해서 양쪽의 스위치에 모두 보낸다.
👉스위치 B와 C도 A쪽으로 BPDU를 보낸다.

이때, A의 BID가 가장 낮으므로, 모든 스위치의 BPDU에 루트 브리지 BID는 A의 BID로 설정된다.

3.1.3 루트 브리지를 변경하고 싶을 때

만약 스위치 C를 루트 브리지로 변경하고 싶다면

  • 스위치 C의 BID가 가장 낮은 값을 가져야 한다.
  • Bridge Priority값을 낮은 값으로 변경한다.

3.2 데지그네이티드 포트 선정

선정 기준 : 세그먼트 상에서 Root Path Cost를 서로 비교하여 더 작은 Root Path Cost를 가진 포트를 데지그네이티드 포트로 선정한다.

  • 루트 브리지의 모든 포트들은 항상 데지그네이티드 포트로 선정된다.
    👉세그먼트 1, 2는 자동으로 정해진다.

세그먼트3 에서 두 포트의 Root Path Cost가 동일하기 때문에 다음과 같은 규칙을 적용한다.

  • 1단계 : 누가 더 작은 Root BID를 가졌는가 ?
    👉B와 C 모두 동일한 루트 BID를 가진다.( 2단계로 넘어간다. )
  • 2단계 : 루트 브리지까지 Path Cost 값은 누가 더 작은가 ?
    👉19로 동일하다.( 3단계로 넘어간다. )
  • 3단계 : 누구의 BID(Sender BID)가 더 작은가 ?
    👉 스위치 B가 2222(생략)으로 더 낮다. 스위치 B의 포트 E1이 데지그네이티드 포트로 선정된다.
  • 4단계 : 누구의 포트 ID가 더 낮은가 ?

최종결과

  • D : 데지그네이티드 포트
  • R : 루트 포트
  • ND : 논 데지그네이티드 포트(Non-Designated Port)

📌4. 스위치 포트의 상태 변화

스패닝 트리 프로토콜을 구현해 나가는 과정에서 모든 스위치나 브리지의 포트들은 언제나 5가지 상태 중 하나에 속한다.


4.1 Disabled

포트가 고장나서 사용할 수 없거나 네트워크 관리자가 포트를 일부러 Shut Down 시킨 상태

  • 데이터 전송이 불가능하다.
  • 맥 주소를 배울 수 없다.
  • BPDU의 송수신이 불가능하다.

4.2 Blocking

스위치를 맨 처음 켜거나 Disabled 된 포트를 관리자가 다시 살렸을 때 그 포트는 블로킹 상태가 된다.

  • 데이터 전송은 되지 않고 오직 BPDU만 주고받을 수 있다.
  • 맥 주소를 배울 수 없다.
  • 위에서 배운 루트 브리지, 루트 포트, 데지그네이티드 포트 선정 과정이 이 블로킹 단계에서 일어난다.

4.3 Listening

블로킹 상태에 있던 스위치 포트가 루트 포트나 데지그네이티드 포트로 선정되면 포트는 바로 리스닝 상태로 넘어간다.

  • 리스닝 상태에 있던 포트도 네트워크에 새로운 스위치가 접속했거나 브리지나 스위치의 구성값이 바뀌면 다시 포트 선정을 해야한다.
    👉이 경우에는 다시 블로킹 상태로 돌아간다.
  • 데이터 전송이 불가능하다.
  • 맥 주소를 배울 수 없다.
  • BPDU를 주고 받을 수 있다.

4.4 Learning

리스닝 상태에 있던 스위치 포트가 포워딩 딜레이(Forwarding Delay) 디폴트 시간인 15초동안 그 상태를 유지하면 (블로킹 상태로 돌아가지 않으면) 러닝 상태로 넘어간다.

  • 맥 주소를 배워 맥 주소 테이블을 만든다.
  • 데이터 전송이 불가능하다.
  • BPDU를 주고 받는다.

4.5 Forwarding

러닝 상태에 있던 스위치 포트가 다른 상태로 넘어가지 않고 또 포워딩 딜레이 디폴트 시간동안 그 상태를 유지하면 포워딩 상태로 넘어간다.

  • 데이터 프레임을 주고받을 수 있게 된다.
  • 블로킹 상태에 있던 포트는 리스닝과 러닝을 거쳐서 포워딩 상태가 된다.
    👉디폴트 포워딩 딜레이 15초가 2번 지나 30초가 소요된다.
  • 데이터 전송이 가능하다.
  • 맥 주소를 배워서 브리지 테이블을 만들 수 있다.
  • BPDU를 주고 받는다.

4.6 상태 변화

5가지 상태 변화를 통해 스위치나 브리지는 링크를 막기도 하고 열기도 하면서 스패닝 트리를 구성한다.
👉스패닝 트리 알고리즘은 여러 개의 경로 중 한 개의 경로만 남기고 다 끊었다가 그 경로에 문제가 생겼을 때 경로를 하나하나 살리는 알고리즘인데, 이 행위가 포트의 상태변화를 통해서 일어난다.

언제든 사용자에 의해 Shut Down 될 수 있다.


📌5. 스패닝 트리 완성하기

  • 루트 포트와 데지그네이티드 포트는 포워딩 상태로 만들고, 논 데지그네이티드 포트는 블로킹 상태로 만든다.
  • 포워딩은 데이터 전송이 일어나는 상태이고, 블로킹은 BPDU 통신만 하는 상태이다.
  • 스패닝 트리 규칙에 따라 리스닝과 러닝을 거쳐서 포워딩 상태가 된다.

  • 블로킹(B)표시를 한 포트는 통신이 불가능하기 때문에 스위치 B와 스위치 C 사이의 링크는 끊어진다.
    👉이 링크는 스위치 A와 B 또는 C사이의 링크에 문제가 발생하면 다시 살아나게 된다. (Fault Tolorance)

최종 스패닝 트리 결과


5.1 용어정리

  • 헬로 타임 (Hello Time) : 루트 브리지가 헬로 BPDU를 보내는 주기
    👉디폴트 : 2초
  • 맥스 에이지 (Max Age) : 브리지들이 루트 브리지로부터 헬로 패킷을 받지 못하면 맥스 에이지 동안 기다린 후 스패닝 트리 구조 변경을 시작한다. (디폴트 : 20초)
    👉맥스 에이지란 브리지들이 루트 브리지로부터 얼마 동안 헬로 패킷을 받지 못했을 때 루트 브리지가 죽었다고 생각하고 새로운 스패닝 트리를 만들기 시작하는지에 대한 시간이다.
  • 포워딩 딜레이(Forwarding delay) : 브리지 포트가 블로킹 상태에서 포워딩 상태로 넘어갈 때 까지 걸리는 시간이다.
    👉블로킹 상태에서 리스닝 상태로 넘어가고, 그 후 포워딩 딜레이 후에 러닝 상태로 넘어가고, 또 포워딩 딜레이 후에 포워딩 상태가 된다.
    👉블로킹에서 포워딩으로 넘어가는데 걸리는 시간은 포워딩 딜레이의 두 배 걸린다.

5.2 스패닝 트리의 재편성

루트 브리지는 매 2초마다 헬로 BPDU를 나머지 브리지로 전송한다.

  • 헬로 BPDU를 받은 브리지들은 자신의 데지그네이티드 포트를 통해서 다시 전달한다.
  • Non 루트 브리지들은 매 2초마다 들어오는 헬로 패킷을 보면서 루트 브리지 까지의 길이 문제가 없음을 알게 된다.
  • 만약 맥스 에이지동안 헬로 패킷을 받지 못하면, 스패닝 트리를 재편성한다.

만약 스위치 C가 맥스에이지동안 헬로 패킷을 받지 못한 경우

  • 스위치 C는 E0 포트를 통해서 들어오던 헬로 패킷 받기를 포기한다.
  • 스위치 B는 문제 없이 헬로 패킷을 받고 있다
  • 스위치 B는 데지그네이티드 포트로 헬로 패킷을 다시 뿌리고 스위치 C는 E1포트를 통해 패킷을 받게 된다.
    👉스위치 C의 E1포트는 블로킹 상태지만, BPDU는 송수신 가능하기 때문에 받을 수 있다.
  • 스위치 C는 E1포트를 루트 포트로 선정한다.
  • 루트 포트로 선정된 E1포트는 리스닝과 러닝을 거쳐 포워딩 상태로 넘어간다.
  • E0 포트는 블로킹 상태로 넘어간다.

스패닝 트리 알고리즘이 다른 경로를 살리는데 걸리는 시간
👉컨비전스 타임
20초(맥스 에이지) + 15초(포워딩 딜레이) + 15초(포워딩 딜레이) = 50초


0개의 댓글