A. Spanning Tree Protocol 개념
1. 개요
- 제2계층 네트워크 전반에 걸쳐 루프를 방지하는 기술이다.
- 3 계층은 IP 헤더에 TTL 값으로 인해 루프방지가 된다. TTL은 패킷이 라우터를 통과할 때마다 TTL 값을 1씩 감소시키는 방식으로 작동한다.
- 동적 라우팅 프로토콜에는 루프방지가 기본으로 내장되어 있다.
2. 왜 STP가 필요할까?
2계층의 이더넷 헤더에는 TTL값이 없다. 루핑이 발생하게 되면 멈출 수 있는 방법이 없다. STP는 물리적으로 연결된 인터페이스를 비활성화시켜 루프를 방지하며 장애 조치를 자동화한다. STP의 단점으로는 대역폭을 절반으로 낮추며 수렴시간이 느리단 점이 있다.
B. Spanning Tree Protocol 동작원리
1. 개요
- 표준 프로토콜로 모든 제조사 스위치에서 기본 활성화 된다.
- 스위치는 온라인 연결시 BPDU를 송출하고 이는 다른 스위치와 잠재적 루프를 방지하기 위해 사용된다.
- 스위치는 포트에 루프가 없다는 것을 확신하기 전까지 그 포트로 트래픽을 보내지 않는다.
2. STP 상태
포트가 온라인에 연결되면 Blocking 상태가 된다. 이는 스위치가 루프가 없다는 것을 확신하기 전까지는 트패릭을 송출하지 않아야 하기 때문이다. STP가 잠재적 루프가 있는지 검사후 루프가 없다면 Forwarding 상태로 전환되겠지만 이 프로세스는 50초 정도 소요될 수 있다.
3. Bridge ID
BPDU는 스위치의 브릿지 ID를 포함하며 이는 독특한 방식으로 LAN의 스위치를 식별하며 브리지 ID는 스위치의 고유한 MAC 주소와 관리자가 정의한 브릿지 우선순위 값으로 정해진다.
Bridge Priority = 0 - 65535 // default = 32768
4. Root Bridge와 Root Port
- Bridge ID값을 기반으로 선출된다.
- 가장 낮은 브리지 우선순위 값을 가진 스위치가 루트 브릿지로 선출된다.
- 같은 값이면 MAC주소가 가장 낮은 값을 가진 스위치가 선출된다.
- 스위치는 Root Bridge로 돌아오는 루프가 없는 경로트리를 만든다.
- Root Bridge 스위치를 제외한 다른 스위치들은 Root Bridge로 가는 최적의 경로를 찾을 것이며 그 경로들은 Forwarding 상태로 전환된다.
- 스위치가 Root Bridge로 향하는 최적의 경로를 찾기 위한 비용 계산 시 더 높은 대역폭 가지는 경로가 선호된다.
- Root Bridge로 향하는 최적의 경로에 있는 각 스위치의 말단 인터페이스는 Root Port가 된다.
5. Designated Ports
- Root Port의 반대측에 있는 포트이다.
- Root Bridge의 포트는 Designated Port이다.
- 모든 Designated Port는 Root Bridge에 있다는 뜻이 아니다.
- Root port, Designated Ports는 항상 "Fowarding" 상태로 전환된다.
6. Other Links
- 남은 링크들은 한쪽이 Designated Port, 반대쪽이 Blocking Port가 된다.
- 이 역시 Bridge ID값이 낮은 쪽이 Designated Port로 선출된다.
- Blocking Port가 되면 BPDU를 제외한 다른 모든 트래픽은 폐기된다.
7. 작동순서 요약
C. Spanning Tree Protocol 기타
1. Load Balancing
STP는 로드밸런싱을 기본적으로는 하지 않는다.
최적의 경로 하나만을 선택한다.
위와 같은 상황이면 Bridge ID -> Port ID 순으로 낮은 값을 가진 스위치를 선택한다. 중복된 케이블이 없다면 Bridge ID 값만 확인.
2. STP Version
2-1. 공개 표준 버전
STP 최초 버전으로 늦은 수렴시간을 가지고 있다.
로드밸런싱 지원안함.
개선된 수렴시간을 가지고 있지만 로드밸런싱 지원 안 함.
개선된 수렴시간을 유지하며 로드밸런싱 지원한다.
이때 VLAN을 그룹으로 지원하여 로드밸런싱을 한다.
2-2. CISCO 전용 버전
802.1D와 비슷한 시기에 출시되었으며 수렴시간이 느리다.
개별 VLAN이 개별 스패닝 트리 인스턴스를 사용하여 로드밸런스를 지원한다.
802.1W와 비슷한 시기 수렴시간이 빠르며 동일하게 개별 스패닝 트리 인스턴스를 사용하여 로드밸런스를 지원한다.
참고로 Cisco 전용 프로토콜에서 Alternated Port가 Blocking Port이다.
3. STP 검증
show spanning-tree vlan?
pvst+는 개별이기에 vlan값을 지정해줘야 한다.
참고로 ieee 프로토콜이 pvst+이다.
무엇이 Root Bridge 인지 확인할 수 있다.
show mac address-table
이 명령어를 통해 실질적인 트래픽의 흐름을 볼 수 있다.
4. Root Bridge 선출 조작
Root Bridge로 뽑고 싶은 스위치에서
config
spanning-tree vlan? root primary
Root Bridge 백업으로 뽑고 싶은 스위치에서
config
spanning-tree vlan? root secondary
5. STP와 HSPR 정렬
첫 번째의 구성도가 STP를 통하면 두 번째와 같이 정리가 되는 것을 볼 수 있다.
만약 PC1의 서브넷이 10.10.10.0/24이며 PC2의 서브넷이 10.10.20.0/24라고 가정하여 각각 vlan 10과 20에 속해있을 때
10은 R1을 HSPR 활성라우터로 20은 R2를 HSPR 활성라우터로 정렬할 경우 명령어는 아래와 같다.
6. Portfast & BPDU guard & Root guard
Portfast
STP 동작해 블로킹까지 정해져 루프가 발생하지 않을 때에 새로운 호스트 연결 시 수렴시간을 기다리지 않아도 되게 하는데 스패닝을 비활성화한다.
int "int name"
spanning-tree portfast
전체포트에서 portfast를 기본값으로 사용할 경우
spanning-tree portfast default
이경우 각 포트마다 no spanning-tree portfast를 입력해줘야 한다.
BPDU guard
portfast 활성화 시 STP가 비활성화되어 브로드캐스트 스톰의 위험이 증하게 되는데 완화 조치로 이용한다.
Portfast를 활성화시킨 인터페이스에서 BPDU guard를 활성화시킨다.BPDU guard를 활성화된 포트에 BPDU가 수신되면 해당 포트가 종료된다.
int "interface name"
spanning-tree portfast
spanning-tree bpduguard enable
전체포트에서 portfast, BPDU guard를 기본값으로 사용할 경우
spanning-tree portfast bpduguard default
STP와 HSPR 정렬 CLI - 1
의도하지 않은 스위치가 Root Bridge가 되는 것을 방지한다.
[Oracle] SQL 실습 도구 - SQL Developer 설치 방법
[Algorithm] 위상 정렬 (Topological Sort)