한 가지 가정을 해보자, Topology1에서 세 개의 스위치 중 하나에 장애가 발생한다고 하면 어떻게 될까? 당연하지만 그쪽 호스트에서 통신이 불가능할 것이다. 이러한 상황을 방지하기 위해 오른쪽 Toplolgy2와 같이 스위치를 이중화하여 네트워크의 가용성(Availabilty)을 유지할 수 있다. 하지만 Topology2에서는 Looping(Broadcast Storm)이라는 의도치 않은 문제가 발생할 수 있다.
*Broadcast Storm: 스위치는 브로드캐스트 프레임(dest MAC addr: FF: FF: FF: FF: FF: FF)을 받으면 Flooding하게 된다. Topology2 같은 상황에서 한 스위치가 Flooding하면 다른 스위치를 거칠 떄마다 반복적으로 Flooding이 일어나게 되고, 프레임이 소멸되지 않고 반복(looping)되는 결과를 초래한다. 또한 Loop은 동일한 데이터 프레임이 복사되는 문제와 여러 포트를 통해 MAC 주소가 학습되면서 MAC Table이 불안정해지는 문제가 생긴다. 이런 문제들은 네트워크에 부하를 주게되고, 마비되는 상황을 초래한다.
이러한 문제들을 방지해주는 것이 STP(Spanning Tree Protocol)이다.
1. 네트워크 이중화 프로토콜: STP(Spanning Tree Protocol)
Spanning Tree Protocol(STP)는 LAN 내에서 스위치 간 Loop를 방지를 위해 사용되는 프로토콜이다. STP를 통해 LAN 내에서 루프를 방지하고, 스위치를 중복(Redundancy)으로 구성하여 한 경로에 장애가 발생해도 다른 경로로 트래픽을 우회하여 네트워크 통신을 유지하는 고가용성(High Availabiluty)을 구현할 수 있다. 또한 지속적으로 토폴로지의 상태를 모니터링해서 경로를 재설정하여 안정성을 유지할 수 있다.
1) BPDU(Bridge Protocol Data Unit)란?
STP의 기본 동작 원리에 대해 설명하기 전에 BPDU에 대해 먼저 알아보자. BPDU(Bridge Protocol Data Unit)는 LAN 내 스위치 간에 네트워크 토폴로지의 정보를 교환하여 Root Bridge를 결정하고, 토폴로지의 변경 정보를 공유하는 역할을 하는 네트워크 메세지이다(L2). BPDU에는 Configuration BPDU, TCN(Topology Change notification) BPDU가 있다. 아래 설명을 통해 두 종류의 BPDU를 구분해보자.
Configuration BPDU
- 목적
- 네트워크 구조 파악 및 Root Bridge 결정
- Spanning Tree 계산을 위한 정보 교환
- 내용
- Bridge ID: Root Bridge를 설정하는데 비교되는 ID => Bridge Priority + MAC Address로 구성되어 있음
- Root Bridge의 ID, Root Bridge까지의 경로 비용, Bridge 우선 순위 등..
- Sent by: 모든 스위치가 주기적으로 전송하여, 현재의 상태와 네트워크 구조를 공유
TCN(Topology Change notification) BPDU
- 목적
- 토폴로지가 변경되었음을 다른 스위치에 알리기 위해 사용 ex) 스위치 추가, 제거
- 내용
- 네트워크 변경 사항, Spanning Tree 업데이트가 필요함을 알림
- Sent by: 토폴로지의 변화가 감지된 스위치가 전송
2) STP 기본 동작 원리
1. 스위치끼지 Conf BPDU를 교환하였을 때, BID(Bridge ID)가 가장 작은 스위치를 Root Bridge로 선정
=> Bridge Prioity 값을 다르게 조정하여 의도적으로 Root Bridge를 설정할 수 있다
2. Root Bridge가 아닌 스위치에서 Root Bridge까지의 경로 값(path cost)이 가장 적은 포트를 Root Port로 선정
3. 각 세그먼트(segment)에서 Root Port를 제외하고 하나의 포트를 지정하여 데이터를 전송할 수 있는 Designated Port(지정 포트)로 선정. Root Bridge의 포트는 무조건 지정 포트로 설정.
*세그먼트: 스위치 간의 링크
4. 세그먼트 당 Root Port, Designated Port가 아닌 포트는 Blocking Port로 설정하여 loop을 방지한다.
3) STP의 단점 및 개선
1. Convergence Time에 최대 50초가 걸릴 수 있어 변경이 전체 토폴로지에 변경이 반영되는 것이 느리다
*Convergence Time: 네트워크에 장애 또는 변경 사항 발생 시, 장치들 간 경로 정보 교환을 하고, 교환 정보가 적용되어 안정화되기까지의 시간
=> RSTP (Rapid Spanning Tree Protocol): IEEE 802.1W 표준으로, 포트 상태 변화 시간을 대폭 단축(2~4초)
2. Priority 값이 같을 경우, 가장 오래된 스위치가 Root Bridge로 선정될 수 있음(MAC 주소로 Root Bridge가 결정되기 때문이다)
=> Bridge Priority 값을 수동으로 설정
4) STP 설정 방법
*STP는 loop이 존재하는 LAN안에는 자동으로 설정되어 있다. 하지만 필요에 따라 Root Bridge를 변경해야 하는 경우가 존재한다.
STP 수동 설정 명령어
s1(config)# spanning-tree vlan [VLAN 값] priority [Bridge Priority] |
Bridge Priority 변경 |
s1(config)# spanning-tree vlan [VLAN 값] root primary |
현재 스위치를 Root Bridge로 바꾸라는 명령어, 자동으로 Bridge Priority를 낮춤(24577) |
s1# show spanning-tree |
Spanning Tree 확인(Root Bridge 여부, Bridge Priority 확인) |
*Bridge Priotiy: 0~65535 (기본값: 32768)
힘들지만 오늘도 해낸 나를 위한 한 마디,
" In the beginning, we make habit, but habits make us", John Dewey
오늘도 고생 많았다.
'Network' 카테고리의 다른 글
[Network] 고가용성, 이중화, 로드 밸런싱 (0) | 2024.09.08 |
---|---|
[Network] NAT (8) | 2024.08.28 |
[Network] Network ACL (0) | 2024.08.26 |
[Network] 라우팅 프로토콜 실습 및 설정법 (1) | 2024.08.24 |
[Network] VLAN, L3 Switch (0) | 2024.08.23 |