안녕하세요.
최근 고객사의 네트워크 구성을 파악하면서 STP Path-Cost type에 대해 알게 되었습니다.
이번 글에서는 LAN의 근본 기술이라 할 수 있는 Spanning-tree protocol의 Path Cost Type에 대해 알아보겠습니다.
메인 주제는 STP의 Path Cost Type이므로 STP 자체에 대해서는 간단히만 알아보겠습니다.
Spanning-Tree Protocol (STP) 이란?
이 글을 보시는 분들이라면 Spanning-Tree Protocol, 약자로 STP라 불리는 프로토콜에 대해서는 익히 들어보셨을 겁니다.

흔히 학부 자료구조 혹은 알고리즘 수업에서 배우는 신장 트리 알고리즘의 적용 사례입니다. 원래 스패닝 트리는 그래프 상에서 모든 노드가 사이클 없이 연결된 부분 그래프를 뜻합니다. 가장 왼쪽의 회색 그래프는 모든 노드가 연결되어 있기 때문에, 어떤 노드에서 시작하면 다시 시작한 노드로 돌아갈 수 있습니다. 그러나 파란색과 빨간색 그래프의 경우, 어느 한 곳이 단절되어 있어 시작점으로 돌아가지 못합니다.
스패닝 트리 알고리즘에서는 사이클이라 부르는 것을 LAN 구조에서는 Loop라 부릅니다.

LAN은 브로드 캐스트 요청이 미치는 범위입니다. DHCP Discover 메시지나 ARP 리퀘스트는 브로드캐스트 방식의 통신 방식을 사용하는데, 루프 구조가 있는 LAN에서 브로드캐스트 메시지가 발생했다가는 얼마 지나지 않아 네트워크의 모든 대역폭을 브로드캐스트 메시지가 차지하게 됩니다.
이러한 현상을 막기 위해 포트의 어느 한 부분을 차단시키는 STP 프로토콜이 사용됩니다.
STP 프로토콜이 동작하기 위해서는 일련의 과정들을 거칩니다. 먼저, 스패닝 트리에서 대장이 될 루트 브리지(스위치)를 선출합니다.
Root Bridge 선출

위 구조는 Bridge ID(BID)입니다. BID를 비교해 값이 작은 스위치가 해당 스패닝트리에서 루트 브리지가 됩니다. 해당 스위치의 우선순위(Bridge Priority) 값과 VLAN ID를 첫 2바이트에 담고, 스위치의 MAC주소를 6바이트 공간에 담습니다. 이 BID를 비교해 루트 스위치를 선출하게 됩니다.

Cisco CML을 사용한 STP 가상환경 시뮬레이션 랩입니다. STP에서 비교하는 우선순위 값은 32768이 기본입니다. 거기에 디폴트 VLAN의 값인 1을 더해 Bridge Priority값은 세 스위치 모두 32769가 되었습니다.
이렇게 Bridge Priority가 모두 같으면 그다음으로는 MAC주소를 보고 루트 스위치를 선출합니다. SW1과 SW3은 MAC 주소의 앞부분이 5254.000e 이지만, SW2는 5254.0006입니다. 즉, 000e보다 0006이 작은 값이므로 SW2가 루트 스위치로 선출되게 됩니다.
Root Port
루트 스위치를 정했으면 그 다음으로는 루트 포트를 정합니다.
루트포트란, 루트 스위치가 아닌 스위치에서 루트 포트로 가는 가장 최적의 포트입니다. 위 랩의 구조에서는 SW1과 SW3가 SW2로 가기 위한 최적의 포트를 찾는 거죠. 이때 경로의 Cost를 따지게 됩니다.
| Bandwidth | Cost |
| 10 Mbps | 100 |
| 100 Mbps | 19 |
| 1 Gbps | 4 |
| 10 Gbps | 2 |
| 100 Gbps | 1 |
회선의 대역폭에 따라 위와 같은 코스트를 가지게 됩니다. 랩에서는 1 Gbps회선이니 4의 코스트를 가지게 됩니다.

즉 Non-Root 스위치에서 Root 스위치까지 가는 가장 빠른 경로는 각각 Gi0/0 인터페이스가 됩니다. 포트의 Role이 Root이고 Cost가 4인 것을 확인할 수 있습니다. 이번 글에서는 Designated Port, Block 포트에 대한 설명은 생략하겠습니다.
IEEE 802.1D - 1998
STP가 정의된 IEEE 802.1D - 1998 문서에서는 Path Cost 파라미터의 값을 2^16, 즉 1부터 65,535까지로 정의하고 있습니다.

802.1D - 1998에서 Path Cost를 계산하는 공식은 아래와 같습니다.
PathCost = 100,000,000 / InterfaceBandwidth(bps)
위의 공식은 STP 프로토콜이 개발될 당시의 기술 수준에 따라 설계되었습니다. 기술이 발전함에 따라 25G, 100G 혹은 그 이상의 고대역폭에서는 Path Cost를 모두 1로 계산하게 되고, 그렇게 되면 기껏 구성해 놓은 고대역폭 링크를 STP가 사용하지 못할 수도 있습니다.
40G든 100G든 1TG든 모두 비용이 1이 되니까요. 이렇게 계산되는 Path Cost의 Type을 short type이라 합니다.
이후 STP가 개정된 802.1D - 2004에서는 이러한 고대역폭의 Path Cost를 계산하기 위해 더 큰 범위를 지원하게 되었습니다.
IEEE 802.1D - 2004

RSTP 기능의 추가와 함께 개정된 802.1D - 2004에서는 Path Cost를 아래와 같은 방식으로 계산합니다. 이러한 방식을 long type이라고 합니다.
PathCost = 20,000,000,000 / InterfaceBandwidth(bps)
Cisco IOS-XE 명령어를 기준으로 spanning-tree pathcost method long 명령어로 pathcost를 long 타입으로 계산할 수 있습니다.

위와 같이 pathcost 계산 방식을 long으로 지정하면 Cost의 값이 바뀐 것을 볼 수 있습니다.
주의할 점

한 가지 주의할 점은, 한 개의 스패닝 트리 인스턴스에서는 Path Cost의 계산 방식을 통일시키는 게 좋습니다. 위 랩의 경우 SW3은 long type으로 계산해서 E0/0이 블락되고 E0/1을 통해 SW1을 거쳐 SW2로 가는 게 루트스위치로 가는 가장 빠른 길이 되었습니다. 이렇게 cost 계산 방식이 다를 경우 STP계산이 변경될 수 있습니다.
혹은 극단적인 예시로 short type에서 1G 링크의 Cost가 4인데, long type에서 10G 링크의 코스트가 2000으로 계산된다면 1G 링크의 속도가 더 느리지만 Cost 값은 낮으므로, 10G 링크가 선택되지 않을 수 있습니다.
마치며

앞으로 구성할 고객사의 네트워크에는 위와 같은 구성이 포함됩니다. 새시급 스위치와 집선 L3 역할을 하는 스위치가 L2 구성이 됩니다. 백본 하나는 스탠바이 장비일 테니, 스탠바이 백본과 집선 L3간의 링크가 블락되는 게 자연스러운 수순일 겁니다.
다만 long type과 short type의 이해가 없다면 엉뚱한 곳이 블락될 수 있습니다.
고대역폭 구간의 STP를 구성할 때는 PathCost를 long type으로 설정하는 방법을 찾아볼 수 있습니다.
추가로, 최근 판매되는 C9K 시리즈는 기본적으로 long type을 지원하지만 C2960, C3560등의 구형 장비에서는 short type만 지원할 수도 있습니다.