[ACSA 교육#28] MSTP 이론과 지역 구성

일반적인 Spanning Tree(Common Spanning Tree, CST)는 VLAN 수에 관계없이 전체 네트워크에 대해 하나의 스패닝 트리 인스턴스(Spanning Tree Instance)를 정의하게 됩니다. 모든 BPDU는 Untagged VLAN 1을 사용하여 VLAN에 대한 내용은 고려되지 않습니다.

또한, 로드 밸런싱이 없어, 대체 경로를 지정하거나 낮은 회선 사용량과 잠재적인 성능 저하를 얻을 수 있습니다.

이러한 문제를 해결하기 위한 것이 MSTP(Multiple Spanning Tree), 다중 스패닝 트리입니다.

Multiple Spanning Tree – 802.1s

위의 문제들은 IEEE 802.1s(Multiple Spanning Tree Protocol, MSTP)에 의해 해결될 수 있습니다. MSTP는 스패닝 트리 프로토콜의 새 토폴로지 또는 인스턴스를 구축하여 RSTP 보다 더 개선된 기능을 갖게 됩니다. 즉, 인스턴스가 서로 다른 VLAN 트래픽을 전달하여 로드 밸런싱을 허용하고 최적의 경로를 유지할 수 있습니다.

아래 그림을 보면, 동일한 물리적 네트워크에 생성된 두 개의 토폴로지를 보여줍니다.

왼쪽 그림은 VLAN 1-20 모두 하나의 RSTP 환경을 공유하는 것을 보여줍니다. Core-1은 루트 스위치이고 스패닝 트리는 거기에서 뻗어 나갑니다. VLAN 1-20은 이중화에 사용할 수 있는 미 사용 링크와 Forwarding 링크를 함께 공유합니다.
오른쪽 그림은 VLAN 21-40은 다른 RSTP 환경을 공유합니다. Core-2는 루트 스위치이고 토폴로지는 해당 루트에서 나옵니다. 굵은 선은 VLAN 21-40에서 사용하게 되고, 다른 링크는 백업에 사용할 수 있습니다.

즉, VLAN 1-20의 백업 링크는 VLAN 21-40의 주 사용 링크이며 그 반대의 경우도 마찬가지입니다.

MSTP – Region

MSTP는 Region이라는 개념을 사용합니다. Region은 VLAN 그룹과 매핑되거나 연결된 동일한 인스턴스로 구성된 스위치 그룹을 의미합니다. 모든 장치가 동일한 VLAN을 인스턴스에 매핑했는지 확인하기 위해 MSTP는 해시 알고리즘 (또는 다이제스트)을 사용합니다.

※ 참고: 해시 알고리즘은 입력(x)에 따라 영향을 받는 수학적 함수입니다. 출력(y)만을 갖고는 입력(x)값을 유추할 수가 없습니다. 따라서, 해시 알고리즘은 단방향 함수라고도 일컫습니다.

해시 알고리즘의 또 다른 특징은, 입력 값이 동일하면 항상 결과 값도 동일하다는 것입니다.
MSTP는 이 특성을 사용합니다.

AOS-CX 스위치는 기본적으로 MSTP가 동작하지만, 각 장치에는 각기 다른 구성 매개변수(Configuration Parameter)가 있기 때문에 각 장치들의 고유 지역(Region)에서 동작합니다. 즉, 모든 VLAN에 대해서 단일 토폴로지, 단일 인스턴스를 생성하는 CST(Common Spanning Tree)처럼 동작합니다.

다음 그림을 보면, 각 스위치에는 MSTP가 활성화되어 있지만, 다이제스트(Digest) 값이 다르기 때문에 이 스위치들은 서로 다른 지역(Region)에 있게 됩니다.

인스턴스 0 또는 내부 스패팅 트리(Internal Spanning Tree, IST)는 다음 두 가지 경우 모두에서 사용됩니다.
– MST(Multiple Spanning Tree)의 일반적인 인스턴스
– RSTP와의 하위 호환성을 위해 다중 지역 배포에서 CST 생성

이러한 이유로 인스턴스 0는 CIST(Common Internal Spanning Tree)라고도 알려져 있습니다.

MSTP – Region 구성

ArubaOS-CX 스위치에서는 다음과 같이 MSTP를 구성할 수 있습니다.

1. MSTP로 스패닝 트리 모드를 설정

“spanning-tree mode” 명령어는 MSTP나 RPVST(Rapid Per VLAN Spanning Tree) 모드를 설정할 수 있습니다.

Switch(config)# spanning-tree mode mstp

※ 참고: Spanning-tree 모드를 변경하기 위해서는 먼저 spanning-tree를 disable 시켜야 합니다.

– Switch(config)# no spanning-tree

2. MST의 지역(Region)이름과 Revision 번호를 지정
Switch(config)# spanning-tree config-name <Config-name>
Switch(config)# spanning-tree config-revision <revision-number>

지역 구성(Region Configuration)을 구분하기 위해서 Revision 번호를 사용합니다. Region 내 구성 설정을 변경하고, 사용하는 버전을 추적하는 경우에 굉장히 유용합니다. 현 Region의 스위치 하위 집합 내 새로운 region을 만들고 동일한 region 이름을 사용하고자 하는 경우에도 유용합니다.

3. MSTP 인스턴스에 VLAN을 매핑

“spanning-tree instance” 명령어는 기존 인스턴스에 매핑된 VLAN을 사용하여 새로운 인스턴스를 만듭니다.
각 인스턴스에는 하나 이상의 매핑된 VLAN이 있어야 합니다. VLAN이 인스턴스에 매핑되면, 이전에 매핑된 인스턴스에서 자동을 해제됩니다. 모든 MSTP 인스턴스는 스위치에 구성된 모든 VLAN을 가질 수 있습니다.

Switch(config)# spanning-tree instance <instance-id> vlan <vlan-id>
4. 인스턴스에 대한 스위치 우선순위 지정 (Optional)
Switch(config)# spanning-tree instance <instance-id> priority <priority-value>

동일한 Priority 값은 RSTP로 사용될 수 있고, Priority 값의 범위는 0부터 15까지입니다.

5. 글로벌하게 Spanning tree 활성화

Switch(config)# spanning-tree

자, 이제 명령어에 대해 알아보았으니 다음 그림의 예제와 같이 구성해보도록 하겠습니다.

그림을 살펴보면, 인스턴스 1과 인스턴스 2가 생성되어 있습니다. 기본값인 인스턴스 0를 포함하여 총 3개의 인스턴스가 있게 됩니다.

공통적으로 최적의 경로를 지정하고 부하 분산(로드밸런싱)을 위해서 여러 인스턴스를 만들 수 있는 단일 지역(Single Region)을 만듭니다. 인스턴스 1은 Core-1 스위치를 루트 스위치로 사용하고 VLAN 1-20이 매핑됩니다. 인스턴스 2는 Core-2 스위치를 루트 스위치로 사용하고 VLAN 21-40이 매핑됩니다.

[모든 스위치 공통 구성]

Switch(config)# spanning-tree config-name CXF
Switch(config)# spanning-tree config-revision 1
Switch(config)# spanning-tree instance 1 vlan 1-20
Switch(config)# spanning-tree instance 2 vlan 21-40

[Core-1 스위치 구성]

Core-1(config)# spanning-tree priority 1
Core-1(config)# spanning-tree instance 1 priority 1
Core-1(config)# spanning-tree instance 2 priority 2

[Core-2 스위치 구성]

Core-2(config)# spanning-tree priority 2
Core-2(config)# spanning-tree instance 1 priority 2
Core-2(config)# spanning-tree instance 2 priority 1

이렇게 구성을 하게 되면 위의 그림과 같이 두 개의 인스턴스를 생성하고 각각의 인스턴스에 VLAN을 매핑합니다. 또한 Core-1 스위치와 Core-2 스위치에 우선순위를 지정함으로써 각 인스턴스별 루트 스위치가 나뉘게 됩니다.


이로써 예전 구식의 STP에서 속도적인 측면에서 크게 발전한 RSTP와 여러 개의 VLAN 환경에서 보다 최적화된 스패닝 트리를 제공하는 MSTP까지 모두 알아보았습니다.

네트워크 환경이 점점 더 복잡해지고 VLAN의 개수가 늘어나고 있는 만큼, 최초 설계부터 네트워크 확장까지 스패닝 트리에 대해 확실히 인지하고 적용해야 할 것입니다. 아주 중요하기 때문에, 스스로 Lab 환경을 구성해서 여러 테스트를 해보면서 확실히 공부하고 익힐 것을 당부 드립니다.