📌1. 스패닝 트리 알고리즘의 사전지식
스위치나 브리지에서 발생하는 루핑을 막는 프로토콜이다.
출발지부터 목적지까지의 경로가 2개 이상 존재할 때, 1개의 경로만을 남겨두고 나머지는 모두 끊었다가 사용하던 경로에 문제가 발생하면 끊은 경로를 사용하는 방식이다.
1.1 브리지ID(BID)
브리지나 스위치들이 통신을 할 때 서로 확인하기 위해 하나씩 가지고 있는 번호이다.
스위치가 가지고 있는 ID도 BID라고 한다.
- 16비트의 브리지 우선순위와 48비트의 맥 주소로 이루어져있다.
👉브리지 우선순위(Bridge Priority)의 범위 : 0 ~ 65535
👉디폴트값 : 32768(중간값) = 8000(16진수)
👉맥 주소 : 스위치에 고정되어있는 값
ex)맥 주소가 0260.8c01.1111이고, 디폴트 브리지 우선순위를 사용 할때
1.2 Path Cost
그래프에서의 가중치라고 생각한다.
브리지가 얼마나 가까이, 빠른 링크로 연결되어 있는지를 알아내기 위한 값이다.
- IEEE 802.1d 에서의 사용
- Cost : 1,000Mbps를 두 장비 사이의 링크 대역폭으로 나눈 값이다.
ex)두 스위치가 10Mbps로 연결되어 있을 때
👉두 장비 사이의 링크 대역폭 : 10Mbps
👉Path Cost = 1,000/10 = 100 (단위는 약분되어 사라진다.)
- path Cost는 링크의 대역폭이 빠를수록 작아진다.
1.2.1 IEEE 802.1d
기가비트와 ATM이 등장하면서 Path Cost에서 소수점이 발생하기 시작한다.
👉소수점이 나오지 않도록 별도의 테이블을 작성해서 사용한다.
📌2. 스패닝 트리 알고리즘
- 네트워크당 하나의
루트 브리지(Root Bridge)
를 가진다.
👉 루트 브리지 : 스패닝 트리 알고리즘 수행 시 기준이 되는 브리지(스위치)
- 루트 브리지가 아닌 모든 브리지는 무조건 하나씩의
루트 포트(Root Port)
를 가진다.
👉 루트 포트 : 루트 브리지에 가장 빨리 갈 수 있는 포트
세그먼트(Segment)
당 하나씩 데지그네이티드 포트(Designated Port)
를 가진다.
👉 세그먼트 : 브리지 또는 스위치 간에 연결된 링크
👉 브리지나 스위치가 서로 연결되어 있을 때 이 세그먼트에서 반드시 한 포트는 데지그네이티드 포트로 선출되어야 한다.
루트 포느와 데지그네이티드 포트 이외의 포트는 다 막는다.
데지그네이티드 포트는 이후에 자세히 설명한다.
2.1 선정 기준
다음은 루트포트, 데지그네이티드 포트의 선정 기준이다.
- 누가 더 작은 Root BID를 가졌는가
- 루트 브리지까지의 Path Cost 값은 누가 더 작은가
- 누구의 BID(Sender BID)가 더 낮은가
- 누구의 포트 ID가 더 낮은가
2.2 BPDU(Bridge Protocol Data Unit)
브리지(스위치)간에 스패닝 트리 정보를 주고받기 위해서 사용하는 특수한 프레임
다음은 BPDU의 구성이다.
- 1단계. Root BID : 루트 브리지의 BID
- 2단계. Root Path Cost : 루트 브리지까지의 경로값
- 3단계. Sender BID : 보내는 브리지의 BID
- 4단계. Port ID 정보 : 어떤 포트에서 보냈는지를 알게 해주는 정보
브리지나 스위치는 부팅 이후 각각의 포트로 BPDU를 매 2초마다 내보내면서 서로의 스패닝 트리 정보를 주고받게 된다.
👉브리지는 BPDU를 서로 주고받으면서 누가 루트 브리지이고 어떤 포트가 루트 포트가 될지, 그리고 어떤 포트가 데지그네이티드 포트가 될지를 결정하게 된다.
- 어떤 BPDU가 가장 좋은 BPDU인지를 결정하기 위해 4단계의 규칙을 적용한다.