본문 바로가기
네트워크

STP(Spanning Tree Protocol)

by CBROJIN 2024. 10. 9.

 

STP 실습 토폴로지

 

 

[학습 목표]

1.STP가 필요한 이유

2.루트 스위치, 루트 포트, 지정포트, 대체포트는 어떻게 선정되나?

3.링크 장애시 각 포트의 역할과 상태는 어떻게 변화하는가?

4.토폴로지 변화시 BPDU,TCN BPDU 전송과 MAC Table 변화 확인

 

1. STP가 필요한 이유

 이중화와 변경되는 토폴로지로 인해 프레임 루프가 생길 수 있다.

그렇게 되면 트래픽 과부하로 스위치는 제역할을 못하고 통신장애가 발생한다.

이를 방지하기 위해 STP를 사용해 특정포트를 차단해 논리적 프레임 루프를 없애야 한다.

 

2. 루트 스위치, 루트포트, 지정포트, 대체포트는 어떻게 선정되나?

  루트 스위치는 브릿지ID가 가장 낮은 스위치가 선정되며,

브릿지ID가 모두 같으면 MAC address가 가장 낮은 장비가 선정된다.

 

SW1 Root ID

 

SW1(config)#spanning-tree vlan 1 root primary

위 설정을 통해 기본 Priority 32768 - (4096+4096) = 24576 이 된다.

SW1 Bridge ID를 가장 낮은 값으로 변경해 루트 스위치로 설정 하였다.

#Bridge ID는 총 8바이트이고 우선순위 2바이트 MAC address 6바이트로 이루어진다.

우선순위는 0x8000(32768)이 기본값이며 왼쪽 끝 16진수 4bit만 기본 우선순위로 쓰기 때문에 4096 단위이다.

우선순위 (2바이트) MAC address (6바이트)
기본 우선순위(4비트) sys-id-ext(12비트) MAC address
32768(기본값) 1 (VLAN 번호) aabb.cc00.0300

 

 

루트 포트는 각 스위치당 하나씩만 가지며 BPDU를 수신한다. 포트 선정기준은 5가지다.

루트 스위치 방향으로 데이터프레임을 전송하는 포트이다.

1. 가장 낮은 브릿지 ID BPDU를 받은 포트

2. 경로값이 낮은 포트

3. 인접한(루트 스위치 방향) 스위치 브릿지 ID가 낮은 포트

4. 인접한 스위치 포트 ID가 낮은 포트

5. 본인 포트 ID가 낮은 포트

 

 지정 포트는 각 세그먼트당 하나씩 가지며 BPDU를 송신한다. 포트 선정기준은 5가지다.

1. 루트 스위치의 모든 포트

2. 후순위 브릿지 ID  BPDU를 받은 포트

3. 경로값이 낮은 포트

4. 본인 브릿지 ID가 낮은 포트

5. 본인 포트 ID가 낮은 포트

 

#SW2 , SW3 사이 세그먼트에서 SW2 포트 e2/3이 지정 포트가 된 이유는

SW2(config)#spanning-tree vlan 1 root secondary

위 설정을 통해 Bridge ID Priority 32768 - 4096 = 28672 가 되어 SW3 32768보다 낮기 때문이다.

SW2

 

 대체 포트(차단)는 루트 포트,지정 포트를 제외한 모든 포트가 대체 포트가 된다.

위 토폴로지에서 SW3 e2/3이 대체포트 이다.

 

3. 링크 장애시 각 포트의 역할과 상태는 어떻게 변화하는가?

장애상황 토폴로지

 

3-1)포트의 상태는 차단(Block), 청취(Listening), 학습(Learning), 전송(Forwarding) 로 나눌수 있다.

차단(Blcok)

대체포트가 되면 즉시 차단상태가 된다. 차단상태에서도 BPDU는 수신 한다.

청취(Listening)

지정포트일 경우 BPDU를 송신한다.

장비가 켜졌을때 포트가 루트,지정 포트일때 청취상태가 된다.

대체포트에서 루트,지정 포트로 변경 됬을때 Max age(20초) 후 청취상태가 된다.

학습(Learning)

청취상태에서 토폴로지 변화가 없을시 15초 후 학습상태가 된다.

전송단계를 위해 MAC address table을 채우는 단계다.

전송(Forwarding)

학습상태에서 토폴로지 변화가 없을시 15초 후 전송상태가 된다.

데이터 프레임을 송수신 한다.

 

3-2) SW1의 e1/2 포트의 비활성화로 SW1,SW2간의 장애발생 후 동작 요약

1. SW2는 SW1(루트스위치)에서 BPDU가 안오는 것을 감지하고 인접한 SW3에게 본인이 이제 루트스위치라고

후순위 BPDU를 Max age(20초) 간 총 10회 보낸다.

2. SW3은 e2/3을 대체포트에서 지정포트로 바꾸고 청취(listening)상태로 들어가고 장애상황 토폴로지에서 보이듯 SW2,SW3 포트 역할이 변경된다.

    아래 사진에서 보듯 SW3 e2/3 포트가 각 15초를 걸쳐 전송(forwarding)상태로 가는 것을 확인할 수 있다.

3. 후순위 BPDU를 보내던 SW2도 SW3을 통해 오는 BPDU를 통해 SW1(루트 스위치)이 동작중임을 알게된다.

    아래사진 참고

  

4. R1에서 R2 통신시 SW1 -> SW2 -> R2 통신방향이 장애발생 후 SW1 -> SW3 -> SW2 -> R2로 변경 된다.

 

 

4. 토폴로지 변화시 Configuration BPDU,TCN BPDU 전송과 MAC Table 변화 확인

4-1 SW1,SW2 링크 장애발생 후 TCN BPDU를 SW1(루트 스위치)에게 보내는 그림이다.

       토폴로지가 변했다는 정보만 전달한다. 전달 받은 스위치들은 루트 스위치까지 중계한다.

       # TCN BPDU는 BPDU 필드중 위 3개만을 보내며 BPDU Type 0x80으로 바꾸어 보낸다.

 

[BPDU 구조 참조]

필드 바이트 내용
프로토콜 ID 2 0
버전 1 STP:0 / RSTP:2 / MSTP:3
타입 1 0x00:설정 BPDU
플래그 1 0x01:TC / 0x80:TCA
루트 브리지 ID 8 루트 스위치 ID
경로값 4 루트 스위치까지의 경로값
브리지 ID 8 루트 스위치로 가는 다음 스위치
포트 ID 2 포트 ID
메시지 에이지 2 루트 스위치까지의 스위치 수
맥스 에이지 2 BPDU 정보를 저장하는 시간
헬로 타임 2 BPDU 전송주기
포워드 딜레이 2 청취->학습 / 학습->전송

 

4-1) SW3 e1/3 TCN BPDU

 

4-1) SW3 e1/3 TCN응답 설정BPDU

 

4-2) TCN BPDU를 받은 SW1(루트 스위치)은 BPDU flags를 0x01로 바꾼 설정 BPDU를 각 스위치에 보내 토폴로지 변화를 알린다. 전달 받은 스위치들은 기존 MAC address-table 유지시간을 15초로 단축(기본 300초)해 새로운 경로를 채울 준비를 한다. 

       # 장애링크에 연결된 SW1,SW2는 즉각 상대측에서 오는 MAC주소를 삭제한다.

4-2) SW3 e1/2 토폴로지 변화 설정BPDU

 

4-3)

R1 Mac Address 0000.0000.0001

R2 Mac Address 0000.0000.0002

 

SW1의 mac address-table이 장애발생후 통신을 위해 Ping을 한 후 바뀐 모습이다.

SW1 -> SW2 -> R2 통신방향이 장애발생 후 SW1 -> SW3 -> SW2 -> R2

4-3) SW1 장애발생 전

 

4-3) SW1 장애발생 후

 

 

SW2의 mac address-table이 장애발생후 통신을 위해 Ping을 한 후 바뀐 모습이다.

SW1 -> SW2 -> R2 통신방향이 장애발생 후 SW1 -> SW3 -> SW2 -> R2

4-3) SW2 장애발생 전
4-3) SW2 장애발생 후

 


Key point

특정포트 차단과 대체경로를 이용해 논리적인 Loop 배제

'네트워크' 카테고리의 다른 글

HSRP(Hot Standby Routing Protocol)  (0) 2024.11.19
Etherchannel  (0) 2024.11.17
MST(Multiple Spanning Tree)  (0) 2024.11.09
RSTP(Rapid-Spanning Tree Protocol)  (0) 2024.11.07
VLAN/트렁킹/VTP  (0) 2024.07.06