1.누가 더 작은 Root BID 가졌는지?
누가 루트브리지까지 더 작은 Path Cost를 가졌는지?
누가 더 작은 BID(Sender BID)를 가졌는지?
누구의 포트 ID가 더 낮은지?
세그먼트1: 모든 스위치의 Root BID는 같으므로 기준을 사용할 수 없고, 스위치 A의 E0포트 Root Path Cost가 0으로 스위치 B의 E0포트 Root Path Cost 19보다 낮으므로 스위치 A의 E0 포트가 데지그 네이티드 포트가 됩니다.
세그먼트2: 세그먼트 1과 비슷합니다. A의 E1포트가 데지그 네이티드 포트가 됩니다. ( 루트브릿지의 모든 포트는 Path Cost가 0이므로 데지그 네이티드 포트가 됩니다 )
세그먼트3: Root BID가 같고 Root Path Cost가 같습니다. 이때에는 Sender BID로 비교합니다. 스위치 B와 스위치 C의 BID를 비교하면 32768.2222.2222.2222 < 32768.3333.3333.3333 이므로 스위치B의 E1포트가 데지그 네이티드 포트가 됩니다. 여기서는 Sender BID까지 비교했지만 여기서도 동일할 시 포트까지 비교하여 데지그 네이티드 포트를 선정합니다.
**최종적으로 스패닝트리를 구성하기 위한 네트워크구성은 위와 같습니다.
스패닝트리에서는 포트의 상태에 따라 데이터를 송, 수신하고 연결을 재구성 합니다.**
스패닝 트리 프로토콜 포트의 5가지 상태 변화
텍스트Disabled: 포트가 고장났거나, 포트를 shut down시킨 상황 (데이터 전송 불가, 맥 어드레스 Learning 불가, BPDU 송수신 불가)
Blocking: 스위치를 맨 처음 켜거나 Disabled시킨 포트를 다시 살린 상황, (데이터 전송 불가, 맥 어드레스 Learning 불가, BPDU 송수신 가능)
Listening: Blocking 상태의 스위치 포트가 루트 포트나 데지그네이티드 포트로 선정된 상황, 만약 경쟁에서 밀리면 Listening에서 Blocking으로 변경됨. (데이터 전송 불가, 맥 어드레스 Learning 불가, BPDU 송수신 가능)
Learning: Listening 상태의 스위치 포트가 포워딩 딜레이 default 시간인 15초를 유지하면, Learning 로 넘어가 맥 어드레스 Learning을 수행하고 맥 어드레스 테이블을 만듭니다. (데이터 전송 불가, 맥 어드레스 Learning 가능, BPDU 송수신 불가)
Forwarding: 스위치 포트가 러닝 상태에서 다른 상태로 넘어가지 않고 포워딩 딜레이 15초를 버티면 Forwarding으로 변경됨. (데이터 전송 가능, 맥 어드레스 Learning 가능, BPDU 송수신 불가)
위의 상태변화를 그림으로 나타내면 아래와 같습니다.
지금까지 알아본 내용을 토대로 네트워크에 스패닝 트리를 적용
위의 그림의 경우 데지그네이티드 포트로 선정되지 않은 세그먼트 3경우 연결이 끊어 지게 됩니다. 세그먼트3 Blocking 상태, 세그먼트 1,2는 Forwarding상태
스위치간의 구성이 이루어지게 되면 Non 루트 브릿지 (스위치B, 스위치C)는 2초마다 들어오는 루트브릿지의 패킷을 받고 루트브릿지까지의 길이 살아있다는것을 알게 됩니다. 이때 만약 루트브릿지의 패킷이 지정된 시간 동안 받지 못한다면 중간경로에 이상이 있다고 판단하고 스위치간의 구성을 재편성하는 모드로 들어가게 됩니다.
세그먼트2를 끊으면 어떻게 될까요?
2초마다 들어오는 패킷이 없기때문에 문제를 일으킬까요? 아닙니다. 스위치에는 Max Age(20초)가 있어 이때까지 패킷을 기다린 후 스패닝 트리 변경을 시작합니다. 스위치 C의 E0는 패킷받기를 포기하고 스위치B가 데지그네이티드 포트를 이용해 스위치 C에서 BPDU를 보내고 스위치C는 E1(Blocking상태)을 통해 BPDU를 받습니다. 스위치는 E1을 Root Port로 지정하고 리스닝, 러닝(15초 대기)을거쳐 포워딩상태(15초 대기)로 변경합니다. 변경된 스패닝 트리의 최종 그림은 아래와 같습니다.