후니의 쉽게 쓴 CISCO 네트워킹 Vol.1

Part07. 스패닝 트리 알고리즘

메리_99 2021. 2. 15. 13:25
반응형

SECTION01. 스패닝 트리 알고리즘

스패닝 트리 알고리즘 : 스위치나 브리지에서 발생하는 루핑을 막아주기 위한 프로토콜

동작을 위한 개념

  1. 브리지 ID : 브리지나 스위치들이 통신할 때 서로를 확인하기 위해 하나씩 가지고 있는 번호

    • Bridge Priority(16 bits) + MAC address(48 bits)

    • Bridge Priority : 0~65535 범위로 디폴트 값은 32768이다.

    • MAC address : 스위치에 고정되어 있는 값

  2. Path Cost : 브리지가 얼마나 가까이, 그리고 빠른 링크로 연결되어 있는 지를 알아내는 값

    • Ex) 10 mbps 연결, 링크 대역폭 1000 mbps 일 경우 Path Cost = 1000/10 = 100

    • 링크 속도가 빠르면 빠를수록 더 작은 값(기가 비트, ATM이 나오면서 소수점이 나옴)

    • Path Cost

Band Width

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

 

SECTION02. 스패닝 트리 프로토콜

스패닝 트리 프로토콜

  1. 네트워크당 하나의 루트 브리지를 갖는다.

    • 하나의 브로드 캐스트 도메인에 하나씩 루트 브리지

    • 루트 브리지 : 스패닝 프로토콜을 수행할 때 기준이 되는 스위치

  2. 루트 브리지가 아닌 나머지 모든 브리지(non root bridge)는 무조건 하나씩의 루트 포트를 갖는다.

    • 루트 포트 : 루트 브리지에 가장 빨리 갈 수 있는 포트

  3. 세그먼트당 하나씩의 데지그네이티드 포트(designated port)

    • 세그먼트 : 브리지 또는 스위치 간에 서로 연결된 링크

    • 즉, 브리지나 스위치가 서로 연결되어 있을 때, 이 세그먼트에서 반드시 한 포트는 designated port로 선출

    • 이렇게 되면, 스패닝 트리 프로토콜에서 루트 포트나 데지그네이티드 포트가 아닌 나머지 모든 포트를 막아버린다.

SECTION03. 스패닝 트리 프로토콜에서 루트 로트, 데지그네이티드 포트 정하기

선정방법

  1. 누가 더 작은 Root BID를 가졌는가?

  2. 루트 브리지까지의 Path Cost 값은 누가 더 작은가?

  3. 누구의 BID(sender BID)가 더 낮은가?

  4. 누구의 포트 ID가 더 낮은가?

  • 브리지는 스패닝 트리 정보를 자기들끼리 주고받기 위해서 특수한 프레임 사용 : BPDU

  • BPDU : Root BID, Root Path Cost, Sender BID, Port ID 정보

    • 브리지나 스위치 부팅 시 각각의 포트를 매 2초마다 서로의 스패닝 트리 정보를 주고받는다.

  • 맨 처음 부팅하고 나서 내보내는 BPDU에 Sender BID 정보는 자기 자신의 BID를 넣게 된다. : 루트 브리지 선정

  • 만약 루트 브리지를 임의로 선정하고 싶다면, bridge priority를 작은 값으로 조정한다.

    • 명령어 : spanning tree clan 1 priority 100(작은 수)

    • 명령어 : show spanning tree(설정 값 보기)

루트 포트 선정

  • Root Path Cost를 비교 후 Cost가 낮은 포트가 루트 포트로 선정된다.

데지그네이티드 포트 선정

  • 브리지 네트워크에서 브리지와 브리지로 연결된(or 스위치와 스위치) 세그먼트당 각각 한 개의 데지그네이티드 포트를 뽑아야 한다.

  • 기준 : 루트 브리지까지의 Path Cost, 즉 세그먼트 상에서 Root Path Cost를 서로 비교해서 더 작은 Root Path Cost를 가진 포트를 뽑는다.

  • 루트 브리지의 모든 포트들은 언제나 데지그네이티드 포트로 선정된다.

 

  •  

    • 데이터 전송 X

    • 맥 어드레스 배우기 X

    • BPDU 교환 X

  • Blocking : 스위치를 맨 처음 켜거나 Disabled 되어 있는 포트를 관리자가 다시 살렸을 때 그 포트는 블로킹 상태로 들어간다. 이 상태에서는 데이터 전송은 되지 않고 BPDU만 주고받을 수 있다.

    • 데이터 전송 X

    • 맥 어드레스 배우기 X

    • BPDU 교환 O

  • Listening : 블로킹 상태에 있던 스위치 포트가 루트 포트나 데지그네이티드 포트로 선정되면 포트는 바로 리스닝 상태로 넘어간다. 물론 리스닝 상태에 있던 포트도 네트워크에 새로운 스위치가 접속했거나, 브리지나 스위치의 구성 값이 바뀌면 루트 포트나 데지그네이티드 포트에서 Non Designated 포트로 상황이 변할 수 있다. 이렇게 되면 다시 블로킹 상태로 돌아간다.

    • 데이터 전송 X

    • 맥 어드레스 배우기 X

    • BPDU 교환 O

  • Learning : 리스닝 상태에 있던 스위치 포트가 포워딩 딜레이 디폴트 시간인 15초 동안 그 상태를 유지하면 리스닝 상태는 러닝 상태로 넘아간다. 러닝 상태에서야 비로소 맥 어드레스를 배워 맥 어드레스 테이블을 만들게 된다.

    • 데이터 전송 X

    • 맥 어드레스 배우기 O

    • BPDU 교환 O

  • Forwarding : 스위치 포트나 러닝 상태에서 다른 상태로 넘어가지 않고(이는 루트 포트나 데지그네이티드 포트에서 non designated 포트로 바뀌지 않음을 뜻한다.) 다시 포워딩 딜레이 디폴트 시간인 15초동안 그 상태로 유지하면 러닝 상태에서 포워딩 상태로 넘어가게 된다. 포워딩 상태가 되어야 스위치 포트는 드디어 데이터 프레임을 주고받을 수 있게 된다. 즉 블로킹 상태에 있던 포트가 리스닝, 러닝을 거쳐 포워딩 상태로 오려면 디폴트 포워딩 딜레이인 15초가 2번 지난 30초가 소요된다.

    • 데이터 전송 O

    • 맥 어드레스 배우기 O

    • BPDU 교환 O

SECTION05. 스패닝 트리 프로토콜의 작동

  • 루트 브리지는 매 2초마다 Hello BPDU를 Non Root Bridge에 전송하고, 이 헬로 BPDU를 받은 Non Root Bridge들은 이것을 자신의 데지그네이티드 포트를 통해서 다시 전달한다.

  • 전달이 되지 않을 경우 재편성 모드로 전환한다.

※ Hello Time : 루트 브리지가 얼마 만에 한 번 씩 헬로 BPDU를 보내는지에 대한 시간, 즉 루트 브리지는 자신에게 연결된 브리지들에게 헬로 BPDU를 헬로 타임마다 한 번씩 보내게 되는데, 디폴트 헬로 타임은 2초이다.

※ Max Age : 브리지들이 루트 브리지로부터 헬로 패킷을 받지 못하면 맥스 에이지 시간 동안 기다린 후 스패닝 트리 구조 변경을 시작한다. 즉 맥스 에이지란, 브리지들이 루트 브리지로부터 얼마 시간동안 헬로 패킷을 받지 못 했을 때 루트 브리지가 죽었다고 생각하고 새로운 스패닝 트리를 만들기 시작하는 가에 대한 시간이다. 디폴트는 20초이다.

※ Forwarding Delay : 브리지 포트가 블로킹 상태에서 포워딩 상태로 넘어갈 때까지 걸리는 시간, 여기서 중요한 점은 블로킹 상태에서 리스닝 상태로 넘어간 포트는 포워딩 딜레이 시간동안 기다린 후 러닝 상태로 넘어가고, 러닝 상태에서 다시 포워딩 딜레이 시간동안 기다린 후 포워딩 상태로 넘어가기 때문에 사실 블로킹에서 포워딩으로 넘어가는 데 걸리는 시간은 포워딩 딜레이 시간의 두 배가 된다는 점이다.

 

정리

  1. 맨 처음 루트 브리지로부터 헬로 패킷을 2초마다 받던 스위치 C에 갑자기 헬로 패킷이 들어오지 않는다.

  2. 스위치 C는 자신의 맥스 에이지 시간인 20초 동안 루트 브리지로부터 기다려보지만, 20초가 지나도 헬로 패킷은 E0포트를 통해 들어오지 않는다.

  3. 이렇게 되자 스위치 C는 스위치 B에서 전달해 준 헬로 패킷을 자신의 E1포트로 받아들여 E1포트를 루트 포트로 세팅한다.

  4. 물론 Non Designated 포트로 블로킹 상태에 있던 스위치 C의 E1 포트를 루트 포트로 선정했다고 해서 바로 포워딩 상태가 되지 않는다. 디폴트 포워딩 딜레이 시간인 15초를 먼저 리스닝 상태에서 기다리고, 다시 한번 러닝 상태에서 15초를 기다린 후, 드디어 데이터 전송이 가능한 포워딩 상태로 넘어간다. 이때, 기존의 루트 포트로 포워딩 상태였던 스위치 C의 E0포트는 블로킹이 된다.

    • 20+15+15 = 50초

    • 너무 길다..

    • 따라서 다른 방법인 RSTP, Port Fast, Up-link Fast, Backbone Fast 등을 사용한다. 

 


위 글은 "후니의 쉽게 쓴 CISCO 네트워킹 진강훈 외 지음"을 공부하며 쓴 글입니다.

 

728x90