[학습 목표]
1.STP가 필요한 이유
2.루트 스위치, 루트 포트, 지정포트, 대체포트는 어떻게 선정되나?
3.링크 장애시 각 포트의 역할과 상태는 어떻게 변화하는가?
4.토폴로지 변화시 BPDU,TCN BPDU 전송과 MAC Table 변화 확인
1. STP가 필요한 이유
이중화와 변경되는 토폴로지로 인해 프레임 루프가 생길 수 있다.
그렇게 되면 트래픽 과부하로 스위치는 제역할을 못하고 통신장애가 발생한다.
이를 방지하기 위해 STP를 사용해 특정포트를 차단해 논리적 프레임 루프를 없애야 한다.
2. 루트 스위치, 루트포트, 지정포트, 대체포트는 어떻게 선정되나?
루트 스위치는 브릿지ID가 가장 낮은 스위치가 선정되며,
Priority가 같으면 MAC address가 가장 낮은 장비가 선정된다.
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를 수신한다. 포트 선정기준은 4가지다.
루트 스위치 방향으로 데이터프레임을 전송하는 포트이다.
1. Root Path Cost (경로 비용)
- 루트까지의 누적 경로 비용이 제일 낮은 포트가 루트 포트가 된다.
2. Sending Bridge ID (인접 스위치의 브릿지 ID)
- 만약 경로 비용이 같으면, 그 BPDU를 보낸 인접 스위치의 Bridge ID가 더 낮은 쪽을 선택한다.
3. Sending Port ID (인접 스위치의 포트 ID)
- 그래도 같으면, 인접 스위치에서 어떤 포트로 보냈는지 포트 ID를 비교한다.
4. Receiving Port ID (자기 자신의 포트 ID)
- 마지막으로 자기 자신의 포트 번호까지 비교한다.
지정 포트는 각 세그먼트당 하나씩 가지며 BPDU를 송신한다. 포트 선정기준은 5가지다.
1. Root Bridge ID
- 더 낮은 Root Bridge ID를 광고하는 포트가 우선됨.
2. Root Path Cost
- Root까지의 누적 비용이 더 낮은 포트가 우선됨.
3. Sending Bridge ID (Advertised Bridge ID)
- 인접 스위치의 Bridge ID가 더 낮은 쪽이 우선됨.
4. Sending Port ID
- 인접 스위치의 포트 ID가 낮은 쪽이 우선됨.
#SW2 , SW3 사이 세그먼트에서 SW2 포트 e2/3이 지정 포트가 된 이유는
SW2(config)#spanning-tree vlan 1 root secondary
위 설정을 통해 Bridge ID Priority 32768 - 4096 = 28672 가 되어 SW3 32768보다 낮기 때문이다.
대체 포트(차단)는 루트 포트,지정 포트를 제외한 모든 포트가 대체 포트가 된다.
위 토폴로지에서 SW3 e2/3이 대체포트 이다.
3. 링크 장애시 각 포트의 역할과 상태는 어떻게 변화하는가?
3-1)포트의 상태는 차단(Block), 청취(Listening), 학습(Learning), 전송(Forwarding) 로 나눌수 있다.
차단(Blcok)
대체포트가 되면 즉시 차단상태가 된다. 차단상태에서도 BPDU는 수신 한다.
청취(Listening)
지정포트일 경우 BPDU를 송신한다.
장비가 켜졌을때 포트가 루트,지정 포트일때 청취상태가 된다.
대체포트에서 루트,지정 포트로 변경 됬을때 Max age(20초) 후 청취상태가 된다.
학습(Learning)
청취상태에서 토폴로지 변화가 없을시 15초 후 학습상태가 된다.
전송단계를 위해 MAC address table을 채우는 단계다.
전송(Forwarding)
학습상태에서 토폴로지 변화가 없을시 15초 후 전송상태가 된다.
데이터 프레임을 송수신 한다.
- Max Age (20초): 루트 브리지 정보(BPDU)가 사라졌다고 판단하기까지 기다리는 시간
- Forward Delay (15초): Listening, Learning 각각에 적용되는 시간
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 변화 확인
1) BPDU Type
BPDU에는 크게 두 가지가 있다:
(1) Configuration BPDU (Type = 0x00)
- 평상시 루트 브리지가 주기적으로 보내는 BPDU (Hello 시간 = 기본 2초마다).
- 루트 ID, Root Path Cost, Sender Bridge ID, Port ID 등 경로/트리 정보 전체를 포함.
- 네트워크 전체가 루트 브리지를 기준으로 동기화되도록 유지.
(2) Topology Change Notification (TCN) BPDU (Type = 0x80)
- 토폴로지 변화가 감지됐을 때만 사용.
- 필드가 단순해서 Root ID, Sender Bridge ID, Port ID 같은 핵심 정보만 포함.
- 말 그대로 “변화가 있었음”만 알려주는 신호.
1-1) BPDU Flags (Configuration BPDU에서만 사용)
Configuration BPDU에 포함된 1바이트 Flags는 주로 두 가지 비트가 중요:
TC (Topology Change) bit = 최하위 비트 (LSB)
- 루트 브리지가 TCN BPDU를 받으면, 이후 보내는 모든 Configuration BPDU에 이 비트를 1로 세팅.
- “토폴로지 변했으니 MAC 테이블 빨리 갱신해라”라는 의미.
TCA (Topology Change Acknowledgement) bit = 최상위 비트 (MSB)
- 중간 스위치가 하위 스위치에서 TCN BPDU를 받으면, 바로 TCA=1로 세팅된 Config BPDU를 응답으로 보냄.
- 이걸 받은 하위 스위치는 “아, 내 TCN이 잘 전달됐구나” 확인함.
2) TCN BPDU란?
- Topology Change Notification BPDU는 네트워크 토폴로지(링크 업/다운, 포트 역할 변경 등)에 변화가 생겼을 때 이를 루트 브리지에게 알리기 위해 사용됨.
- Configuration BPDU와 달리, 단순히 “토폴로지가 변했다”는 신호만 전달함.
- BPDU Type = 0x80 (Configuration BPDU는 0x00).
2-1) TCN BPDU 생성 조건
스위치가 다음 이벤트를 감지하면 TCN BPDU를 보냄:
- 포트가 Forwarding → Blocking 또는 Blocking → Forwarding 등으로 상태 변경될 때
- 예: SW1–SW2 링크 장애 발생, 포트 장애, 새로운 포트 활성화
2-2) TCN BPDU 전송 절차 (IEEE 802.1D)
(1) 토폴로지 변화 감지 스위치
- 해당 스위치가 Root Port를 통해 인접한 상위 스위치로 TCN BPDU를 전송한다.
(2) 중간 스위치(Non-root Switch)
- Root Port로 받은 TCN BPDU를 그대로 상위 방향으로 중계한다.
- 즉, 최종적으로 루트 브리지까지 릴레이된다.
(3) 루트 브리지(Root Bridge)
- 루트 브리지가 TCN BPDU를 받으면, 모든 스위치에게 뿌리는 Configuration BPDU의 플래그 중 “Topology Change” 비트를 설정해서 전송한다.
- 이렇게 해서 네트워크 전체에 “토폴로지가 바뀌었으니 MAC 주소 에이징 타이머를 줄여라”라는 신호가 퍼진다.
3) MAC 주소 테이블과 에이징 변화
- 기본적으로 스위치의 MAC 주소 테이블 에이징 타이머는 300초(5분).
- 토폴로지 변화 알림이 발생하면, 이 타이머가 15초(Forward Delay 시간)로 줄어든다.
- 그 결과, 기존 MAC 주소 엔트리가 빠르게 제거되어 잘못된 포트로 트래픽이 전달되는 문제를 방지한다.
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-2) TCN BPDU를 받은 SW1(루트 스위치)은 BPDU flags를 0x01로 바꾼 설정 BPDU를 각 스위치에 보내 토폴로지 변화를 알린다. 전달 받은 스위치들은 기존 MAC address-table 유지시간을 15초로 단축(기본 300초)해 새로운 경로를 채울 준비를 한다.
# 장애링크에 연결된 SW1,SW2는 즉각 상대측에서 오는 MAC주소를 삭제한다.
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
SW2의 mac address-table이 장애발생후 통신을 위해 Ping을 한 후 바뀐 모습이다.
SW1 -> SW2 -> R2 통신방향이 장애발생 후 SW1 -> SW3 -> SW2 -> R2
Key point
특정포트 차단과 대체경로를 이용해 논리적인 Loop 배제
'네트워크 > 스위칭' 카테고리의 다른 글
VRRP(Virtual Router Redundancy Protocol) (3) | 2024.11.20 |
---|---|
HSRP(Hot Standby Routing Protocol) (4) | 2024.11.19 |
Etherchannel (4) | 2024.11.17 |
MST(Multiple Spanning Tree) (5) | 2024.11.09 |
RSTP(Rapid-Spanning Tree Protocol) (2) | 2024.11.07 |