스패닝 트리 프로토콜
이더넷 프레임이 장비들 사이에서 빙빙 도는 것을 이더넷 프레임 루핑(looping)이라고 한다. 스위치에서 이더넷 프레임의 루핑을 방지해주는 것이 스패닝 트리 프로토콜(STP, spanning tree protocol)이다. IP 패킷은 헤더에 TTL(time to live) 필드가 있어 패킷의 무한 루프를 막아준다. 그러나, 이더넷 프레임 헤더에는 루프를 방지하는 필드가 없어 대신 STP가 사용된다.
STP는 IEEE에서 2004년에 개정한 802.1D-2004 표준에 의해서 RSTP(rapid STP)로 대체되었다. 그러나, 현재 필드에서 사용 중인 다수의 스위치들은 아직 RSTP 대신 STP를 사용하고 있다.
프레임 루프의 영향
이더넷 프레임 루프가 발생하면 다음과 같은 현상이 생긴다.
- 브로드캐스트 폭풍 발생
다음 그림과 같이 R1이 브로드캐스트 프레임 하나를 SW1로 전송하는 경우를 생각해보자. SW1은 이를 수신 포트를 제외한 나머지 포트로 플러딩(flooding) 시킨다. 만약, STP가 제대로 동작하지 않으면 SW2는 이를 SW3으로 전송하고 SW3은 다시 SW1로 전송하여 프레임 루핑이 일어난다.
결과적으로 스위치 및 접속된 장비들은 엄청나게 많은 브로드캐스트 프레임 즉, 브로드캐스트 스톰(broadcast storm, 폭풍)을 맞게 된다.
이처럼 브로드캐스트 폭풍이 발생하면 스위치들이 이를 처리하느라 정상적인 동작이 어렵게 된다. 이 경우 LED가 빠른 속도로 깜빡이며, 노란색과 녹색이 번갈아 표시된다. 브로드캐스트 스톰은 스위치의 동작을 느리게 하거나 아예 다운시키기도 하며, 통신을 하지 않고 편집이나 표계산을 하는 PC들도 수신한 프레임 처리로 인하여 작업속도가 느려진다.
하나의 VLAN에서 발생한 브로드캐스트 스톰이 스위치 전체를 느리게 하고, 결과적으로 다른 VLAN에 접속된 장비득렝게도 영향을 미친다.
- MAC 주소 테이블 불안정
프레임 루핑이 발생하면 다음 그림과 같이 각 스위치들은 동일한 출발지 MAC 주소를 가진 이더넷 프레임을 서로 다른 인터페이스를 통하여 수신하게 된다.
결과적으로 MAC 주소 테이블이 수시로 변경되는 MAC 테이블 불안정(MAC table instability) 현상이 발생한다.
- 이중 프레임 수신
이더넷 프레임 루핑이 발생하면 다음 그림과 같이 호스트는 동일한 프레임을 여러개 수신하게 된다.
이번에는 R1,R2에서 IP 주소를 부여하고, 인터페이스를 활성화 시킨다.
IP 주소 부여 및 인터페이스 활성화
r1(config)#interface f0/0
r1(config-if)#ip address 1.1.1.1 255.255.255.0
r1(config-if)#no shut
r2(config)#interface f0/1
r2(config-if)#ip address 1.1.1.2 255.255.255.0
r2(config-if)#no shut
STP 동작 방식
스패닝 트리 프로토콜이 동작하여 루프가 없는 스위치 네트워크 구성 절차에 대해서 알아보자.
STP가 동작하면 물리적으로 루프 구조인 네트워크에서 특정 포트를 차단상태로 바꾸어 논리적으로 루프가 발생하지 않게 한다. 그러다가, 동작중인 스위치나 포트가 다운되면 차단 상태의 포트를 다시 전송상태로 바꾸어 계속적인 통신이 보장된다.
STP는 BPDU(bridge protocol data unit)라는 프레임을 이용하여 루프가 없는 경로를 구성한다. BPDU는 설정(configuration)와 TCN (topology change notification) BPDU 두 종류가 있다.
설정 BPDU는 스위치 및 포트의 역할을 결정하기 위하여 사용되고, TCN BPDU는 스위치 네트워크의 구조(topology)가 변경되었을 때 이를 알리기 위하여 사용된다.
스위치는 설정 BPDU를 이용하여 루트(root) 스위치를 선출하고, 스위치 포트의 역할을 결정한다. 설정 BPDU는 항상 루트 스위치가 만들어 2초마다 전송하고, 다른 스위치들은 이것을 다음 스위치로 중계한다. 설정 BPDU에는 브리지 ID, 루트 브리지 ID, 경로값 및 포트 ID 등과 각종 타이머 값들이 포함되어 있다.
STP의 동작방식은 다음과 같다.
1) 전체 스위치 중에서 루트(root) 스위치를 선택한다.
2) 루트 스위치가 아닌 모든 스위치에서 루트 포트를 하나씩 선택한다.
3) 한 스위치 세그먼트(segment)당 지정 (designated) 포트를 하나씩 선택한다.
4) 루트 포트도 지정 포트도 아닌 포트를 대체 포트(alternate port)라고 한다. 대체 포트는 항상 차단된다.
- 전체 스위치 중에서 브리지 ID 값이 가장 낮은 것이 루트 스위치가 된다.
브리지 ID는 2바이트의 우선순위(priority)와 6바이트의 MAC 주소로 이루어진다. 브리지 ID에서 사용하는 우선순위는 기본값이 16진수로 8000이며 10진수로 변환하면 32768이다. 따라서, 가장 작은 브리지 ID는 0, 가장 큰 값은 65535이다.
- 루트 스위치가 선택된다면, 나머지 모든 스위치에서 루트 스위치를 기준으로 루트 포트(root port)를 하나씩 선택한다.
루트 포트를 선택할 때 경쟁 포트 사이에 다음 사항을 비교한다.
1) 경로값의 합이 가장 작은 포트
2) 인접 스위치의 브리지 ID가 가장 낮은 포트
3) 인접 스위치의 포트 ID가 가장 낮은 포트
경로값(path cost)이란 포트의 속도별로 IEEE에서 미리 정해 놓은 값을 말한다. 속도가 빠를수록 경로값이 작다. IEEE에서 지정한 각 속도별 경로값은 다음과 같다.
속도(bandwidth) |
경로값(path cost) |
10Mbps(이더넷) |
100 |
100Mbps(패스트 이더넷) |
19 |
1Gbps(기가비트 이더넷) |
4 |
10Gbps(10 기가 이더넷) |
2 |
경로의 합은 해당 스위치에서 루트 스위치까지 각 포트의 경로값을 합한 것이다.
포트(port) ID는 BPDU를 전송하는 포트의 포트 우선순위와 포트 번호로 구서오딘다. 포트 우선순위의 기본값은 128이다.
- 다음으로 지정(designated) 포트를 선택한다. 지정 포트는 한 세그먼트(segment)당 하나씩 선택한다. 세그먼트란 스위치에 분리되지 않은 네트워크를 말한다.
이때 sw1, sw3 사이의 허브는 무시한다.
지정 포트를 결정할 때 다음 사항을 차례로 비교하여 먼저 우열이 가려지면 해당 포트가 지정 포트로 동작한다. 루트 스위치의 각 포트들은 항상 지정 포트이다.
1) 경로값의 합이 작은 스위치의 포트
2) 브리지 ID가 낮은 스위치의 포트
3) 포트 ID가 낮은 포트
테스트 네트워크에서 STP가 동작하는 것을 살펴보자. 시스코의 스위치에서는 하나의 VLAN당 하나씩의 STP가 동작하며, 이를 PVST(per VLAN spanning tree) 또는 PVST+라고 한다. 카탈리스트 스위치에서 VLAN1에 대한 STP상황을 확인하려면 다음과 같이 show spanning-tree vlan 1 명령어를 사용한다.
sw1#show spanning-tree vlan 1
STP 동작 방식
이진트리로 물리적으로 연결된 세 개의 스위치를 논리적으로 나누어 사용한다.
스패닝 트리 포트상태
스패닝 트리는 포트의 상태를 차단, 청취, 학습, 전송 및 비활성 상태로 분류한다. 스위치 포트의 STP 상태변화를 그림으로 표시하면 다음 그림과 같다.
1) 차단 상태에서는 데이터 프레임을 송수신하지 않는다. 그러나, BPDU는 수신한다.
트가 활성화되면 역할에 따라 청취 또는 차단 상태가 된다.
즉, 활성화된 포트의 역할이 루트 포트 또는 지정 포트이면 바로 청취 상태가 된다. 또, 포트의 역할이 대체 포트이면 바로 차단 상태가 된다. 만약, 포트의 역할이 대체 포트에서 루트 포트나 지정포트로 변경되면 20초 후에 청취 상태로 변경된다. 이 타이머를 맥스 에이지(max age)라고 한다.
2) 포트의 역할이 지정 포트라면 청취 상태에서 BPDU를 전송하기 시작한다. 청취 상태에서 기본적으로 15초가 경과하면 학습 상태로 변경된다. 이 시간을 전송 지연(forward delay) 타이머라고 한다.
3) 학습상태에서는 MAC 주소 테이블을 채우기 시작한다. 학습 상태에서 기본적으로 15초가 경과하면 전송 상태로 변경된다. 이때에도 전송 지연 타이머를 사용한다.
4) 전송 상태에서는 데이터 프레임을 정상적으로 송수신한다. 안정된 네트워크라면 스위치 사이를 연결하는 각 포트의 상태는 전송 상태와 차단 상태 중 하나에 머물러있다. 다운 상태에 있는 포트는 모두 STP 비활성 상태(disabled state)라고 한다. 양측 포트간 스패닝 트리 설정이 잘못되거나, 설정 사항을 위반한 경우에도 비활성 상태가 된다. 비활성 상태에서는 이용자 트래픽과 BPDU 모두를 송수신하지 않는다.
스위치의 전원을 켜면 각종 하드웨어의 구성 및 동작을 확인하는 POST(power on self test) 과정을 거친다. 그런 다음 포트의 역할이 지정 포트나 루트 포트로 결정되면 해당 포트는 청취 상태 및 학습 상태를 걸쳐 30초 후에 전송 상태로 변경된다. 기본적으로 스위치 포트가 활성화되면 청취 상태부터 시작하기 때문이다.
네트워크 장애시 STP의 동작
스위치 네트워크 구조 (토폴로지)가 변경되면 STP 포트의 역할이 변경되고 따라서 STP 포트의 상태도 변경된다. 대체 포트를 가지고 있는 스위치의 관점에서 봤을 때 토폴로지가 변경되는 경우는 직접 접속된 포트가 다운되었을 때와 간접 접속된 포트가 다운되었을 때로 구분할 수 있다.
간접 연결에서 sw 두 대를 연결하는 F1/11포트들이 비활성화되면서 즉시 차단 상태로 변경되고 대체 포트로 되어있던 sw3이 SW2에게서 수신하는 BPDU에 포함된 루트 브리지 ID가 SW1에서 값이 더 높은 SW2의 것으로 변경된다. 이와 같이 루트 브리지 ID가 후순위로 변경된 것을 후순위(inferior) BPDU라고 한다.
일반적으로 IEEE에서 더 이상 STP를 사용하지 말고 RSTP로 사용하도록 표준을 변경했지만 아직 STP를 사용하는 곳이 더 많을 것으로 추정된다.
직접 연결된 링크가 다운 되었을 때에는 맥스 에이지 타이머 20초를 동작시키지 않고 바로 청취 상태로 들어간다. 따라서 청취 상태, 학습 상태를 거쳐 30초만에 F1/12 포트가 전송 상태로 변경된다.
직접연결 --폭주인지 아닌지 확인한다고 (loop gruard:루프백 폭주를 막아준다)
'CCNA' 카테고리의 다른 글
8장 RSTP와 MSTP (0) | 2013.03.18 |
---|---|
8장 스패닝 트리 프로토콜(포트패스트) (0) | 2013.03.15 |
7장 VTP (0) | 2013.03.14 |
7장 트렁킹 (DTP 모드) (0) | 2013.03.14 |
7장 VLAN, 트렁킹 (0) | 2013.03.11 |