STP 포트 상태와 토폴로지 변화
○스패닝 트리는 포트의 상태를 차단(Blocking),청취(Listening),학습(Learning),전송(Forwarding)및 비활성(Disabled)상태로 분류한다.
-포트가 활성화되면 역할에 따라 청취 또는 차단상태가 된다. 즉, 활성화된 포트의 역할이 루트 또는 지정포트이면 바로 청취상태가 된다. 활성화된 포트의 역할이 대체포트이면 바로 차단상태가 된다.
-어떤 상태에서건 포트에 STP 관련 에러가 발생하거나 비활성화되면 비활성 상태가 된다.
-대체포트가 루트포트 또는 지정포트로 역할이 변경되고, 기본적으로 20초인 maxage가 경과하면 청취상태로 변경된다.
-루트포트 또는 지정포트가 대체포트로 역할이 변경되면 즉시 차단상태가 된다.
-청취상태의 루트포트 또는 지정포트가 기본적으로 15초인 전송 지연시간이 경과하면 학습상태로 변경된다. 또, 학습상태에서 다시 전송 지연시간이 경과하면 전송상태로 변경된다.
○STP에서 포트의 역할이 루트나 지정이라고 해도 즉시 해당 포트를 통하여 데이터 프레임을 송수신하지 않는다. 포트의 상태가 전송상태로 변경되어야만 데이터 프레임을 송수신한다. 그 이외의 차단,청취,학습상태에서는 송수신을 하지 않는다.
○추가적인 토폴로지 변화가 없고 시간이 경과하면 루트포트와 지정포트는 모두 전송상태가 되고 데이터 프레임을 송수신하기 시작한다. 그러나, 대체포트는 토폴로지가 변경되지 않는 한 계속 차단상태로 남아있다.
○비활성 상태를 제외한 모든 상태에서 BPDU를 수신한다. 또 지정포트는 청취상태부터 BPDU를 송신하기 시작한다.
○차단상태(blocking state):데이터 프레임을 송수신하지 않는다. 그러나 상대측 포트에서 전송하는 BPDU는 수신한다. 포트의 역할이 대체포트가 되면 즉시 차단상태가 된다. 상대측 포트로부터 max age 기간 동안 BPDU를 받지 못하거나, 상대측 포트로부터 max age 기간 동안 후순위 BPDU를 받았을 때(후순위 BPDU란 기존의 루트 ID보다 더 값이 높은 루트 ID가 설정된 BPDU를 말한다) 차단상태에서 청취상태로 바뀐다.
○청취상태(listening state):해당 포트를 STP 전송상태로 변경시키기 위한 준비 단계. 포트의 역할이 지정포트이면 청취상태부터 BPDU를 전송하기 시작한다. 포트가 활성화되고, 역할이 루트포트 또는 지정포트이면 청취상태가 된다. 청취상태는 전송 지연시간 동안 추가적인 토폴로지 변경이 없으면 학습상태로 변경된다.
○학습상태(learning state):포트를 STP 전송상태로 변경시키기 전의 단계. 프레임을 스위칭시키기위한 준비 작업으로 MAC 주소 테이블을 채우기 시작한다. 전송 지연시간 동안 추가적인 도폴로지 변경이 없으면 전송상태로 변경된다.
○전송상태(forwarding state):전송상태가 되면 프레임을 송수신한다.
○비활성상태(disabled state):포트간 스패닝 트리 설정이 잘못되거나, 설정 사항을 위반한 경우에도 비활성 상태가 된다. 트래픽과 BPDU 모두를 송수신하지 않는다.
○스위치 초기 컨버전스 절차:전원을 켜면 하드웨어의 구성, 동작을 확인하는 power on self test 과정을 거친 다음 포트의 역할이 지정포트나 루트포트로 결정되면 청취상태 및 학습상태를 거쳐 30초 후 전송상태로 변경된다. 기본적으로 스위치 포트가 활성화되면 청취상태부터 시작한다. 만약 이 기간 동안에 상대측 포트가 더 좋은 조건을 가진 BPDU를 보내어 포트의 역할이 대체포트로 변경되면 해당 포트는 즉시 차단상태가 된다.
○SW2에게서 e0/2 포트를 통하여 후순위 BPDU를 수신한 SW4는 SW2와 루트 스위치간 링크가 다운된 것을 알게된다. 그러나 포트의 역할과 상태를 변경시키지 않고 20초간을 기다린다. max age 20초를 기다린 후 SW4의 대체포트인 e0/3을 루트포트로 변경한다. 그리고 루트포트인 e0/2를 지정포트로 변경하고, SW2에게 루트 스위치인 SW1에서 수신한 BPDU를 중계하기 시작한다. 대체포트에서 루트포트로 역할이 변경된 e0/3포트는 청취상태가 된다. 이후 학습상태를 거쳐 30초후 전송상태가 된다.
○SW4의 e0/3 포트가 청취상태(listening)상태가 된 후에 SW2는 e0/2포트를 통해 BPDU를 수신한다. 수신한 BPDU의 루트 스위치 ID는 1-aabb.cc00.1000이고 자신의 루트 스위치 ID는 4097-aabb.cc00.2000이므로 우선 순위가 앞선 1-aabb.cc00.1000(SW1)를 루트 스위치로 변경한다. 루트 스위치가 변경되고 e0/2 포트의 역할이 지정포트에서 루트포트로 변경된다.
○이처럼 대체 경로가 존재하는 스위치 네트워크에서 장애 발생시 대체 경로가 동작할 때까지 50초가 소요된다. (ex:SW4 e0/3 blocking -> listening 20초, listening -> learning 15초, learning -> forwarding)
○이는 스위치가 장애에서 복구되었을 때에도 약 30초간 통신이 불통되는 것을 의미한다.대체포트는 즉시 차단상태가 되는 반면 지정포트나 루트포트는 listening->learning->forwarding 상태로 변경되기 때문이다.
○Link down등으로 인한 토폴로지 변경시, MAC 주소 테이블이 변경되어야 하며, 이를 위하여 각 스위치들은 다음과 같이 동작한다.
-토폴로지가 변경되면 각 스위치들은 TCN(topology change notification)BPDU를 루트 스위치에 전송한다. TCN BPDU는 어떤 스위치나 포트가 다운되었다는 구체적인 정보가 아니라, 단순히 토폴로지가 변경되었다는 것만 알려주며, 설정 BPDU와는 반대로 항상 루트 스위치쪽으로 전송된다.
-중간에 루트 스위치가 아닌 것이 있다면 TCN BPDU를 루트 스위치로 중계한다. TCN BPDU를 수신한 스위치들은 플래그가 0x80으로 설정된 설정 BPDU를 이용하여 수신을 확인해준다. 플래그 값 80을 TCA(topology change acknowledgement)라고 하며, TCN BPDU를 잘 받았다는 의미이다.
-TCN BPDU를 통하여 토폴로지 변화가 일어났다는 것을 보고 받은 루트 스위치는 설정 BPDU의 플래그 필드중 TC(topology change)비트를 0x01로 설정한 후, 다른 스위치들에게 토폴로지 변화를 알린다. 플래그 값 01을 TC라고 하며 토폴로지가 변경되었다는 것을 의미한다. TCN BPDU와 마찬가지로 TC가 설정된 BPDU도 단순한 토폴로지 변경을 알려준다. 루트 스위치는 max age 20초 + forward delay 15초 즉, 35초 동안 TC 비트가 셋팅된 설정 BPDU를 전체 네트워크로 알린다.
-TC 비트가 설정된 설정 BPDU를 수신한 스위치들은 토폴로지의 변화를 알게되고 기본 300초로 설정되어있는 MAC 주소 테이블의 에이징 타이머를 전송 지연시간(15초)로 줄인다.
-즉, 15초 동안 통신에 참가하지 않는 MAC 주소들은 주소 테이블에서 삭제한다. 결과적으로 바뀐 토폴로지에 따라 MAC 주소 테이블이 다시 만들어지는 과정이 빨라진다.