White Whale Studio

Spanning Tree Protocol(STP) 본문

IT Engineering/Network

Spanning Tree Protocol(STP)

glorymind 2012. 1. 9. 14:28
반응형
앞의 포스팅에서도 언급했듯이, 스패닝 트리는 스위치나 브리지가 2개 이상일 때 발생하는 루핑을 방지하기 위한 알고리즘이다.(또는 프로토콜)

다시한번 정의를 되살려보자면, 경로가 2개 이상 존재할때 하나의 경로만 사용하고 다른 경로는 막아뒀다가 원래 사용하던 경로가 사용할수 없는, 즉, 문제가 발생하는 경우 막아두었던 경로를 살려서 사용하는 것이다.

STP를 이해하기 위해서 2가지 개념을 알아두어야 한다.
첫째는 Bridge ID, 두번쨰는 Path Cost

천천히 살펴보도록 하자.

1. 브리지 ID
브리지나 스위치간에 통신을 할 떄 서로를 확인하기위해 가지고 있는 식별 번호라고 보면된다.



브리지 ID는 Bridge Priority와 Mac Address로 구성되는데,
위의 그림에서와 같이 Prioirity는 2바이트(16비트, 0~2의 16제곱-1, 0~65535), 맥 어드레스는 6바이트로 나뉜다.
Bridge Priority의 Default 값은 중간값인 32768을 사용한다. 즉, 아무런 조치를 하지 않은 경우에 브리지의 Bridge Priority는 32768이라는 값을 가진다.
맥 어드레스는 앞에서 포스팅 했듯이 스위치나 브리지에 이미 고정되어 있는 주소이다.
위의 그림에서 8000(16)으로 십진수로바꾸면 32768이된다.

2. Path Cost
장비와 장비사이에 연결된 라인, 링크를 통해서 얼마나 멀리 떨어져 있는지, 얼마나 빨리 통신이 되는가를 확인하기 위한 척도로 사용되는 값이다.
원래, 스패닝 트리에서 Path Cost를 구하기 위해서는 장비사이의 링크 대역폭을 나눔으로써 값을 구했지만, 일련의 문제점으로 인해서(소수점 이하 값) IEEE에서는 대역폭에 따라서 Path Cost를 못박아 버렸다.
대역폭에 따른 Path Cost 값은 다음과 같다.

대역폭(Bandwidth)

Path Cost(STP Cost)

4Mbps

250

10Mbps

100

16Mbps

62

45Mbps

39

100Mbps

19

155Mbps

14

622Mbps

6

1Gbps

4

10Gbps

2

대역폭이 커질수록 Path Cost가 적어지는 것을 볼 수 있다.
즉, 쉽게 말하자면 A에서 B로 가는데 대역폭이 크면 클수록, 속도가 빠르면 빠를수록, 그 노력, 비용이 적게 소모된다는 것이다.



스패닝 트리에서는 가장 기본적인 동작이 3가지 있다.
이 3가지를 이해하게 되면 스패닝 트리는 간단하게 이해가 된다는데..-ㅅ-...
뭐, 아무튼 가보자.

1. 네트워크당 하나의 루트 브리지를 갖는다.
2. 루트 브리지가 아닌 나머지 모든 브리지는 무조건 하나씩의 루트 포트를 갖는다.
3. 세그먼트 당 하나씩의 Designated Port 를 갖는다.

1번을 빼고... 뭔소리가 싶다..-ㅅ-

잠깐 간략하게 살펴보도록 하자.
1. 루트(Root), 즉, 근본이 되는 대장이라고 생각을 하면 되겠다.
여러 개의 브리지 중에서 대표가 되는 브리지를 하나 선택하고 루트 브리지도 정하는 것이다.

2. 루트브리지가 아닌 나머지 모든 브리지는 무조건 하나씩의 루트 포트를 갖는다.
여기서 애매한 용어는 바로 루트 포트(Root Port)이다. 루트 포트는 루트 브리지에 가장 가까운 포트라고 할 수 있는데, 브리지 당 하나씩 루트 브리지에 가장 가까운 포트를 지정해 준다는 것이다.

3. 세그먼트 당 하나씩의 Designated Port(지정 포트) 를 갖는다.
또 애매한 용어 세그먼트..
세그먼트(Segment)는 브리지 또는 스위치 간에 서로 연결된 링크라는 뜻으로, 브리지나 스위치가 서로 연결되어 있을 때 이 세그먼트에서 반드시 한 포트는 Designated Port 로 선택되어야 한다는 것이다.

여기서, 하나 알아두어야 할 것은, 루트 포트와 Designated Port를 제외한 나머지 포트들은 모두 막아버린다는 것이다.

여러개의 링크가 있을 텐데, 이 중에서 어느 것을 루트포트나 Designated Port로 정할 것인지는 다음 단계를 통해서 정하게 된다.

1단계 : 누가 더 작은 Root BID를 가졌는가?
2단계 : 루트 브리지까지의 Path Cost 값은 누가 더 작은가?
3단계 : 누구의 BID(Sender BID)가 더 낮은가?
4단계 : 누구의 포트 ID가 더 낮은가?

또 하나 알아두어야 할 것이 있는데, 바로 BPDU(Bridge Protocol Data Unit)이라는 것이다.
이 BPDU는 Root BID, Root Path Cost, Sender BID, Port ID 등의 정보와 같이 스패닝 트리의 정보를 브리지 끼리 주고 받고자 하는 특수한 프레임 단위이다.
브리지를 켜게되면 각각의 포트로 BPDU를 매2초마다 내보내면서 서로의 스패닝 트리 정보를 주고 받는다.
이를 통해서 루트 브리지, 루트 포트 등등을 결정하게된다.

위에서 간략하게 스패닝 트리의 3단계와 포트 선정 단계를 살펴봤는데, 이제 세부적으로 살펴보도록 한다.

1. 루트 브리지의 선정
루트 브리지의 선정은 비교적 간단하다.
앞에서 설명한 BID를 브리지간에 비교해서 가장 적은 값을 가지는 BID의 브리지를 루트 브리지로 선정하면 끝이 나는 것이기 때문에..
브리지를 부팅하고 나면 링크된 브리지들끼리 BPDU를 주고 받는다. 받은 BPDU를 분석해서 누가 더 적은 BID를 가지는지 비교를 하고 결과적으로 이긴 브리지가 루트브리지가 된다.
일반적인 상황에서 Default Bridge Priority로 32768을 사용한다고 했는데, 굳이 BID가 많은 브리지를 루트 브리지로 선택하고 싶은 경우에는 이 Default Bridge Priority를 적게 주면 된다. (예:32768 -> 100)
후에 설명을 위해서 각 스위치의 BID(Sender BID)를 다음과 같이 설정한다.
A : 32768.1111.1111.1111
B : 32768.2222.2222.2222
C : 32768.3333.3333.3333

2. Non Root Bridge의 Root Port 선정
사실 그림을 보면서 선택을 하자면, 그리 어려운일이 아니지만. 글로 표현하자니..-ㅅ-
Root Port를 선택하는 데에 있어서는 Path Cost를 이용한다.
앞에 있는 IEEE의 Path Cost 표를 참조해서, 대역폭에 따른 Path Cost를 계산한 뒤 가장 적은 값을 가지는(즉, 가장 가까운) 포트를 선택하면 된다.


위의 그림에서 보면 루트 브리지(스위치)는 A이고 스위치 B에서 스위치 A로 가는 포트는 B->A(P0) 와 B->C->A (P1)경로가 있는데, 눈으로 보면 쉽게 알겠지만 당연히 P0 경로가 루트 브리지로 가는 가장 가까운 길이기 때문에 P0가 루트 포트로 결정된다.

3. Designated Port 선정
꾸엉... 마지막 단계이다.
아까는 대충 얼버무리고 지나갔는데, 이제 상세하게 살펴보자.
이번 단계가 스패닝 트리에 있어 가장 중요한 단계이다.
3번째 단계의 규칙은 : 세그먼트 당 하나의 Designated Port를 가진다.

구하는 방법은 루트 브리지까지의 Path Cost를 계산해서 가장 작은 Root Path Cost를 가지는 포트를 Designated Port로 선택하는 것이다.

여기서 하나 알아둘어야 할 것은,
루트 브리지의 모든 포트들은 언제나 Designated Port로 선정된다.

위의 그림에서 확인을 해보자. 여기서 R이라고 표기된 원은 Root Port를 뜻한다.
먼저 세그먼트 1에서는 Root Path Cost가 19인 P0가 Designated Port가 되고 세그먼트2에서도 또한 P0가 된다.
세그먼트 3에서는 어떻게 될까?
Path Cost도 같은데?

이러한 경우 앞에서 누가더 강한가를 가리는 4단계를 확인하는 것이다.
1단계 : 누가 더 작은 Root BID를 가졌는가?
2단계 : 루트 브리지까지의 Path Cost 값은 누가 더 작은가?
3단계 : 누구의 BID(Sender BID)가 더 낮은가?
4단계 : 누구의 포트 ID가 더 낮은가?

그림에서만 살펴보자.
1단계 : 누가더 작은 BID? 이 경우에는 앞에서 언급을 빼먹었는데,
B와 C 스위치가 A를 루트 브리지로 인정하면서 Rood Bridge ID 를 A의 BID로 지정을 하기 때문ㅇ
B와 C도 동일한 BID를 가리키게 되는 것이다.
즉, B와 C가 같은 값이라서 판결을 내릴수가 없다. 2단계로 가야겠지?

2단계 : 루트 브리지까지의 Path Cost 값은 누가 더 작은가?
이 또한 현재에서는 판결을 내릴 수 없다. 둘다 19로 동일하기 때문에...
3단계로 가보자.

3단계 : 누구의 BID(Sender BID)가 더 낮은가?
아까 가장 먼저 Root Bridge를 선정할 때 BPDU를 통해 날린 자신만의 고유 BID를 말하는 것이다.
BID를 비교해서 더 작은 브리지의 포트를 선택한다.
이 경우에는 B가 더 작다. (B : 32768.2222.2222.2222, C : 32768.3333.3333.3333)
결과적으로 B가 Designated Port로 선정된다.

4단계 : 누구의 포트 ID가 더 낮은가?
3단계에서 결판을 짓지 못한다면 포트 ID까지 비교해서 판단을 내린다.(여기서는 P1으로 동일하지만
여러개의 포트가 있는 경우 비교해서 선택한다.
반응형

'IT Engineering > Network' 카테고리의 다른 글

Status Change of Spanning Tree  (1) 2012.01.10
Subnet Mask [☆☆☆]  (0) 2012.01.05
GateWay  (0) 2012.01.05
IP Story..  (1) 2012.01.04
Looping & Spanning Tree Algorithm  (0) 2012.01.03
Comments