IT/네트워크

스패닝 트리 프로토콜(Spanning Tree Protocol) (2)

보안개구리 2024. 6. 14. 11:01

 이번 시간에는 저번 시간에 배운 내용을 바탕으로 본격적인 STP에 관하여 배워보도록 하겠습니다.
 먼저 네트워크 상에 스위치 A,B,C가 있다고 가정하겠습니다.

 스위치 A의 BID : 32768.1111.1111.1111
 스위치 B의 BID : 32768.2222.2222.2222
 스위치 C의 BID : 32768.3333.3333.3333

 BID라는 것은 앞에서 말했었는데 Bridge ID를 뜻하는 것으로 16bit의 브리지 우선순위와 48bit의 MAC Address로 이루어져있습니다.
 따라서 32768은 브리지 우선순위를 뜻하고 나머지 숫자들은 MAC Address를 뜻합니다.
 참고로 32768이라는 숫자는 브리지 우선순위가 16bit이므로 숫자의 범위는 2^16인데 이 값을 2로 나눈 값으로 디폴트값으로 사용됩니다.
 
 자 이제 이 3개의 스위치는 전원이 켜지게 되면서 서로 정보를 주고받기 시작합니다.
 주고 받는 정보라는 것은 BPDU를 말하는 것이고 BPDU에는 BID를 포함하여 여러 정보가 들어있죠.
 여기서 생각해야되는 것은 저번 시간에 암기한 내용입니다.

 1. 네트워크는 하나의 루트 브리지(Root Bridge)가 존재한다
 2. 루트 브리지가 아닌 나머지 모든 브리지(Non Root Bridge)는 무조건 하나의 루트 포트(Root Port)를 갖는다
 3. 세그먼트(Segment)당 하나의 데지그네이티드 포트(Designated Port)를 갖는다

 일단 이순서대로 해보겠습니다.

 

 1.네트워크에는 하나의 루트 브리지가 존재한다 
 우리는 가장 먼저 저 3개의 스위치중 하나의 스위치를 루트 브리지라로 선정해야 합니다.
 하지만 루트 브리지라는 것은 특정한 규칙에 의하여 선정되는 것이지 우리가 임의로 아무 스위치나 루트 브리지로 만들 수 는 없습니다. (물론 브리지 우선순위를 바꾸어 원하는 스위치를 루트 브리지로 만들 수는 있습니다.)
 여기서 이 특정한 규칙이 바로

 1단계 : 누구의 Root BID가 더 낮은가
 2단계 : 루트 브리지까지의 Path Cost 값은 누가 더 작은가
 3단계 : 누구의 Sender BID가 더 낮은가
 4단계 : 누구의 포트 ID가 더 낮은가
 이 4단계입니다.
  
 지금 우리는 루트 브리지를 선정하는 과정에 막혔기 때문에 이 4단계를 적용해보겠습니다.


 1단계 누구의 Root BID가 더 낮은가?
 전교생이 한명인 경우 그 한명의 학생은 항상 전교1등이라고 해도 거짓말이 아니겠지요?
 스위치 역시 스위치가 처음 부팅하게 되면 다른 장비와 연결되기 전까지는 본인이 왕이기 때문에 당연스럽게 본인을 루트브리지라고 생각합니다.
 즉 루트브리지인 스위치 A,B,C가 서로를 비교하게 되는데 이때 BID가 낮은 값이 우선권을 갖는다고 했으니 당연히 1111.1111.1111.1111로 가장 작은 BID를 가진 스위치 A가 루트 브리지가 됩니다.
 그런데 만약에 우리가 스위치 A가 아닌 스위치 B를 루트 브리지로 만들고 싶으면 어떻게 할까요?
 MCA 주소의 경우는 우리가 마음대로바꿀 수 없습니다. 그러므로 바꿀 수 있는 부분은 브리지 우선순위부분인데 보통 우리가 디폴트값이다라고 이야기 하는 것은 우리가 따로 설정을 해주지 않았을 때의 기본값이라는 뜻이고 따라서 설정을 통하여 바꿀 수 있다는 뜻입니다.
 즉 우리는 스위치의 명령을 통하여 스위치 B 의 브리지 우선순위를 32768보다 작은 숫자로 만들어 루트 브리지로 선정할 수도 있습니다.

 물론 지금 상황에서는 그냥 디폴트값을 사용하여 스위치 A가 루트 브리지가 되도록 하겠습니다.
 
 2. 루트 브리지가 아닌 나머지 모든 브리지(Non Root Bridge)는 무조건 하나의 루트 포트(Root Port)를 갖는다
 위 과정에서 스위치 A가 루트 브리지로 선정되었으니 남은 스위치들은 Non Root Bridge가 되었습니다.
 Non Root Bridge인 스위치 B와 스위치 C는 하나의 루트 포트를 갖게 되는데 루트 포트란 저번 시간에 루트브리지와 더 가까이 있는 포트를 의미한다고 했었는데 즉 Path Cost가 적게 드는 포트를 뜻합니다.

 

 스위치의 구성은 위 사진과 같다고 가정하겠습니다.

 보시면 Fa0/1, Fa0/2 이런식으로 적혀있는데 편의상 1번포트 2번포트라 부르겠습니다.
 스위치 A는 1,3번 포트를, 스위치 B는 1,2번 포트를, 스위치 C는 2,3번 포트를 갖고 있습니다.
 여기서 우리는 스위치 B와 스위치 C의 루트 포트를 찾아야 합니다.
 여기서는 각 스위치은 100Mbps라고 가정하겠습니다. 그렇게 된다면 당연히 스위치B는 2번포트보다는 1번포트가 루트 브리지와 가까울꺼고 스위치 C의 경우는 2번보다는 3번포트가 루트 브리지와 가까운 것을 알 수 있습니다
 물론 각 속도별 Path Cost를 적어두고 비교해두는게 좋긴 하나 이런 상황에서는 크게 의미가 없기 때문에 다음에 기회가 되면 다른 유형에서 비교해보도록 하겠습니다.
 어찌됐든 우리는 2번째 과정인 루트 포트까지 구하게 되었습니다.

 

 2번까지 끝낸 현재 상황은 위 사진과 같습니다.

 이제는 3번 세그먼트(Segment)당 하나의 데지그네이티드 포트(Designated Port)를 갖는다를 할 차례입니다.

 위 네트워크에서는 총 3개의 세그먼트가 존재합니다. 스위치A-스위치B, 스위치B-스위치-C, 스위치C-스위치A.

 여기서 스위치A-스위치B, 스위치C-스위치A 이 2개의 세그먼트의 경우는 이미 루트 포트가 존재하는 상황입니다.

 그렇기 때문에 당연히 해당 세그먼트에 포트중 루트 포트가 아닌 포트가 데지그네이티드 포트가 되겠지요.(이름이 기니 앞으로 D포트라고 하겠습니다.)

 즉 스위치A에 1번포트와 3번포트가 D포트가 됩니다.

 여기까지는 굉장히 수월한데 이제 중요한 것은 스위치B - 스위치-C 세그먼트에 D포트를 정하는 과정입니다.

 

 역시 우리가 함부로 정할 수 없는 과정이나 자연스럽게 암기 4단계를 가지고 와야겠지요?

 1단계 : 누구의 Root BID가 더 낮은가

 여기서 착각하실 수도 있는데 자세히 보면 Root BID입니다.

 그냥 BID만 보고 스위치 B의 BID가 너 낮지 않나 하시면 안됩니다.

 Root BID라는것은 해당 스위치가 속해 있는 네트워크의 Root Bridge에 ID를 뜻하는 것입니다.

 즉 스위치 B든 스위치 C든 둘 다 스위치A가 루트브리지인 네트워크에 속해있기 때문에 당연히 Root BID는 32768.1111.1111.1111로 동일합니다.

 그렇기에 패스하고 2단계로 넘어가봅시다.

 

 2단계 : 루트 브리지까지의 Path Cost 값은 누가 더 작은가

 비록 위 사진에서 적지는 않았으나 모든 스위치에 속도값이 동일하다고 한다면 Path Cost값 역시 동일합니다.

 이 부분은 역시 사진만 봐도 알 수 있는 부분인데 값이 같으니 역시 패스하고 3단계로 넘어가겠습니다.

 

 3단계 : 누구의 Sender BID가 더 낮은가

 우리가 1단계에서 햇갈릴뻔한 문제가 나왔습니다.

 당연히 스위치 B는 2222이고 스위치 C는 3333이니 스위치 B의 BID가 더 낮다는 것을 알 수 있습니다. 

 고로 스위치 B - 스위치 C 세그먼트의 D포트는 스위치 B의 2번포트가 됩니다.

 

 자 이렇게 우리는 3번 과정까지 끝냈습니다. 그렇다면 스위치 C의 2번 포트는 뭐가 되는 걸까요?

 스위치 C의 2번 포트는 Non Designated Port가 되는데 말 그대로 아무것도 아닌 포트를 뜻합니다.

 처음 설명할 때 처럼 STP에 근본적인 목적은 장애를 대비하여 하나의 경로에 문제가 생길시 다른 경로로 대체하는 것을 말합니다.

 즉 STP가 끝나게 되면 위 네트워크에서는 스위치 B - 스위치 C 구간의 경로를 사용하지 못하게 됩니다.

 다만 다른 경로에 문제가 생길 경우 이 스위치 B - 스위치 C 구간을 사용하여 통신에 지장에 없게 만듭니다.

 

 이번시간에는 STP에 대하여 직접 알아보는 시간을 가졌고 다음 시간에는 어떤 방법을 통해 경로에 문제가 생기면 다른 경로가 활성화되는지에 대하여 알아보겠습니다.