[GNS3] STP 최적화 및 루프 방지 실습

2025. 11. 29. 16:22·Network Practice

실습 목표

이번 실습에서는 네트워크 이중화 환경에서 필수적인 STP(Spanning Tree Protocol)의 동작 원리를 이해하고, 엔터프라이즈 환경에 맞게 최적화하는 방법을 학습할 것이다. STP는 스위치 간 이중화 링크로 인한 루프를 방지하면서도 장애 발생 시 자동으로 대체 경로를 활성화하여 고가용성을 제공하는 특징을 가진다.

 

3-Tier 아키텍처에서 Distribution과 Access 계층을 이중화하면 단일 장애 지점을 제거할 수 있지만, 물리적 루프가 발생한다. 여기서 STP는 이러한 루프를 논리적으로 차단하고, Root Bridge 선출, Port Role 결정, 최적화 기법 적용을 통해 안정적이고 효율적인 네트워크를 구성한다.


전체 토폴로지

네트워크 설계

  • VLAN 10 (Sales): 10.10.10.0/24
  • VLAN 20 (Engineering): 10.10.20.0/24
  • VLAN 30 (HR): 10.10.30.0/24
  • VLAN 99 (Management): 10.10.99.0/24

이중화 구성

  • Distribution 계층: Dist-SW1 ↔ Dist-SW2 직접 연결
  • Access 계층: 모든 Access 스위치가 두 개의 Distribution 스위치에 연결

1. 기본 설정

작업 대상

모든 스위치에 동일한 기본 설정을 적용한다.

 

기본 설정

enable secret cisco123: 특권 모드 진입 시 암호화된 비밀번호를 설정한다. enable password와 달리 MD5로 암호화되어 설정 파일에 평문으로 노출되지 않는다.

banner motd: Message of the Day 배너를 설정하여 접속 시 법적 경고 메시지를 표시한다. 무단 접속을 법적으로 제재할 수 있는 근거를 마련한다.

write memory: running-config를 startup-config에 저장하여 재부팅 후에도 설정이 유지되도록 한다.

나머지 장비(Core-SW, Dist-SW2, Acc-SW1, Acc-SW2, Acc-SW3)에도 동일하게 설정한다.


2. VLAN 생성

작업 대상


모든 스위치에 VLAN을 생성한다. Core와 Distribution 스위치는 모든 VLAN을 생성하고, Access 스위치는 필요한 VLAN만 생성할 수도 있지만, 이번 실습에서는 통일성을 위해 모든 스위치에 동일하게 생성한다.

 

모든 스위치에서 실행

STP는 VLAN별로 독립적으로 동작한다(PVST+). 따라서 각 VLAN마다 별도의 spanning tree 인스턴스가 생성되며, Root Bridge 선출과 Port Role 결정도 VLAN별로 이루어진다.

 

VLAN 확인


3. Trunk 포트 설정

작업 대상


이중화된 토폴로지에서 모든 스위치 간 연결은 Trunk로 설정한다.

3-1. Core-SW Trunk 설정

switchport trunk allowed vlan 10,20,30,99: 허용할 VLAN을 명시적으로 지정한다. 기본값은 all이지만, 보안상 필요한 VLAN만 허용하는 것이 좋다. 불필요한 VLAN 트래픽이 전달되는 것을 방지하고, VLAN Hopping 공격의 위험을 줄인다.

3-2. Dist-SW1 Trunk 설정

Dist-SW1은 총 5개의 Trunk 포트를 가진다:

  • E0/3: Core-SW로의 Uplink
  • E0/2: Dist-SW2와의 이중화 링크
  • E0/0, E0/1, E1/0: Access 스위치로의 Downlink

3-3. Dist-SW2 Trunk 설정

Dist-SW2도 Dist-SW1과 동일한 구조로 설정한다.

3-4. Access 스위치 Trunk 설정

Acc-SW1

Acc-SW1은 두 개의 Uplink를 가진다.

  • E0/2: Dist-SW1로 연결
  • E0/3: Dist-SW2로 연결 (이중화)

Acc-SW2와 Acc-SW3도 위와 같은 방법으로 동일하게 trunk 포트 설정을 해준다.

 

Trunk 상태 확인

show interfaces trunk

각 스위치에서 어떤 포트가 Trunk로 동작하는지, 어떤 VLAN이 허용되는지 확인한다.


4. Access 포트 설정

작업 대상

각 Access 스위치에 PC를 연결할 Access 포트를 설정한다.

Acc-SW1: PC1 연결 (VLAN 10)

Acc-SW2: PC2 연결 (VLAN 20)

Acc-SW3: PC3 연결 (VLAN 30)


5. STP 기본 동작 확인

이제 모든 포트가 활성화되었고, 물리적 루프가 존재하는 상태다. STP가 자동으로 동작하여 루프를 차단하고 있는지 확인한다.

5-1. 현재 Root Bridge 확인

모든 스위치에서 실행

show spanning-tree

출력에서 "This bridge is the root"라고 표시되는 스위치가 현재 Root Bridge다. 기본적으로 가장 낮은 MAC 주소를 가진 스위치가 Root로 선출된다.

 

Root Bridge 정보 요약 확인

show spanning-tree root

각 VLAN별로 Root ID, Cost, Root Port를 한눈에 확인할 수 있다.

STP는 왜 Root Bridge를 선출하는가? 모든 스위치가 Root Bridge를 기준으로 최적 경로를 계산하기 때문이다. Root Bridge는 네트워크의 중심점이 되며, 모든 트래픽이 Root Bridge를 향해 흐른다. 따라서 Root Bridge는 성능이 좋고 네트워크 중앙에 위치한 장비로 설정하는 것이 좋다.

5-2. Port Role 및 State 확인

Dist-SW2에서 확인

출력에서 각 포트의 역할을 확인한다:

  • Root Port (RP): Core-SW로 연결된 E0/3
  • Designated Port (Desg): Access 스위치로 연결된 E0/0, E0/1, E1/0
  • Alternate Port (Altn): Dist-SW1로 연결된 E0/2 (Blocking 가능성)

왜 Port Role이 중요한가? STP는 루프를 방지하기 위해 네트워크의 모든 세그먼트에서 하나의 포트만 Forwarding 상태로 유지한다. Root Port는 Root Bridge로 가는 최적 경로의 포트이고, Designated Port는 각 세그먼트에서 Root 방향으로 트래픽을 전달하는 포트이며, Alternate Port는 루프 방지를 위해 차단된 예비 경로다.

 

Access 스위치에서 확인

Acc-SW1# show spanning-tree vlan 10

Acc-SW1의 E0/2는 Root Port(Dist-SW1 방향), E0/3는 Alternate Port(Dist-SW2 방향, Blocking)로 설정된다.

5-3. Blocking 포트 확인

모든 스위치에서 확인

show spanning-tree blockedports

이중화 링크 중 어떤 포트가 Blocking되어 있는지 확인한다. 일반적으로 다음 포트들이 Blocking 상태가 된다.

  • Dist-SW2 E0/2: Distribution 간 연결
  • Acc-SW1 E0/3: Dist-SW2로 연결된 이중화 링크
  • Acc-SW2 E0/3: Dist-SW2로 연결된 이중화 링크
  • Acc-SW3의 이중화 링크 중 하나

6. Root Bridge 수동 설정

현재는 MAC 주소에 따라 Root Bridge가 자동으로 선출되었다. 하지만 엔터프라이즈 환경에서는 Core 계층의 스위치를 Root Bridge로 설정하는 것이 일반적이다. 성능이 가장 좋고 네트워크의 중심에 위치하기 때문이다.

6-1. Core-SW를 Primary Root로 설정

Core-SW에서

root primary: 현재 네트워크의 Root Bridge보다 낮은 Priority를 자동으로 설정한다. 일반적으로 4096으로 설정되며, 필요시 더 낮은 값으로 조정한다.

 

설정 확인

설정 전:

 

설정 후:

Priority가 낮아졌는지 확인한다. Extended System ID가 활성화되어 있어 STP Priority에 VLAN ID가 자동으로 더해진다. (24576 + 10 = 24586)

 

STP Priority는 4096의 배수여야 한다. 범위는 0-61440이며, 낮을수록 Root로 선출될 확률이 높다. 0도 가능은하지만 나중에 더 높은 우선순위의 장비를 추가할 여지가 없으므로, 일반적으로 4096부터 배수로 사용한다.

6-2. Dist-SW1을 Secondary Root로 설정

Dist-SW1에서

root secondary: Priority를 root Primary보다 높은 값 + VLAN ID로 설정한다. Primary Root가 다운되면 자동으로 Root가 되어 네트워크 가용성을 유지한다.

 

설정 확인

 

설정 전:

 

설정 후:

Bridge ID Priority가 second priority + VLAN ID로 설정되었는지 확인한다.

6-3. 모든 스위치에서 Root Bridge 확인

모든 스위치에서

show spanning-tree root

모든 VLAN에서 Root ID가 Core-SW를 가리키는지 확인한다. 이제 네트워크 토폴로지가 의도한 대로 Core-SW를 중심으로 구성되었다.


7. STP 최적화 - PortFast 설정

PC가 연결된 Access 포트는 STP의 Listening (15초) → Learning (15초) → Forwarding 단계를 거칠 필요가 없다. 루프가 발생할 가능성이 없기 때문이다. PortFast를 활성화하여 즉시 Forwarding 상태로 전환한다.

 

왜 PortFast가 필요한가? PC 부팅 시 DHCP 요청은 네트워크 연결 직후 바로 시작된다. 하지만 STP가 Forwarding 상태로 전환되는 데 30초가 걸리므로, DHCP 타임아웃이 발생하여 IP 주소를 받지 못할 수 있다. PortFast는 이 문제를 해결한다.

7-1. Acc-SW1에 PortFast 설정

Acc-SW1에서

spanning-tree portfast: 포트를 즉시 Forwarding 상태로 전환한다.

spanning-tree bpduguard enable: PortFast가 활성화된 포트에서 BPDU를 수신하면 포트를 즉시 err-disable 상태로 전환한다. 잘못된 스위치 연결을 방지하여 보안을 강화한다.

Acc-SW2와 Acc-SW3에도 위와 같은 방식으로 동일하게 portfast와 BPDU Guard를 설정한다.

 

설정 확인

show spanning-tree interface ethernet 0/0 detail

출력에서 "Bpdu guard is enabled"가 표시되는지 확인한다.


8. Root Guard 설정

Root Guard는 Distribution 레이어 아래에서 Root Bridge가 선출되는 것을 방지한다. Access 레이어에 잘못 설정된 스위치가 연결되어 Superior BPDU를 전송하면 네트워크 토폴로지가 의도치 않게 변경될 수 있다.

 

왜 Root Guard가 필요한가? 만약 Access 스위치가 Priority 0으로 설정되어 있다면, 그 스위치가 Root Bridge가 되어 모든 트래픽이 Access 레이어로 집중된다. 이는 성능 저하와 네트워크 불안정을 초래한다. Root Guard는 이러한 상황을 방지한다.

8-1. Dist-SW1에 Root Guard 설정

Dist-SW1에서 (Access 스위치로 연결된 포트에 설정)

spanning-tree guard root: 해당 포트에서 Superior BPDU를 수신하면 포트를 root-inconsistent 상태로 전환한다. BPDU Guard와 달리 일시적으로 차단하며, Superior BPDU가 사라지면 자동으로 복구된다.

위와 같은 방식으로 Dist-SW2에도 Root Guard를 똑같이 설정한다.

 

설정 확인

show spanning-tree inconsistentports

정상 상태에서는 아무것도 출력되지 않는다. Superior BPDU 수신 시 root-inconsistent 포트가 표시된다.

 

Root Guard vs BPDU Guard, 무엇이 다른가?

  • Root Guard: Distribution → Access 연결에 사용. Superior BPDU 수신 시 root-inconsistent 상태로 전환. 자동 복구.
  • BPDU Guard: Access → PC 연결에 사용. 모든 BPDU 수신 시 err-disable로 전환. 수동 복구 필요.

9. 링크 장애 시뮬레이션 및 Failover 테스트

이제 실제로 링크를 다운시켜 STP의 Failover 동작을 확인한다. 이중화의 핵심은 장애 발생 시 자동으로 대체 경로가 활성화되는 것이다.

9-1. 테스트 1: Core-SW ↔ Dist-SW1 링크 다운

Core-SW에서 링크 차단

 

Dist-SW1에서 확인

E0/3 포트(Core-SW 연결)가 다운되었으므로, Dist-SW1은 다른 경로를 통해 Root Bridge에 도달해야 한다. Dist-SW2를 거쳐 Core-SW로 가는 경로가 활성화된다.

 

링크 복구

링크가 복구되면 다시 Topology Change가 발생하고, 원래 경로로 트래픽이 전환된다.

9-2. 테스트 2: Dist-SW1 ↔ Dist-SW2 링크 다운

Dist-SW1에서 링크 차단

 

Dist-SW2에서 확인

차단 전:

 

차단 후:

Blocking되어 있던 E0/2 포트가 사라졌으므로, Dist-SW2는 이제 E0/3를 통해 Core-SW와 직접 통신한다.

 

복구

9-3. 테스트 3: Acc-SW1 Primary Uplink 다운

Acc-SW1에서 Primary Uplink 차단

 

Acc-SW1에서 확인

E0/3 포트가 Alternate → Root Port로 변경되어 Dist-SW2를 통해 Root Bridge에 도달한다. PC1은 네트워크 연결이 유지되며, 사용자는 장애를 인지하지 못한다.

 

복구


마무리

이번 실습을 통해 네트워크 이중화 환경에서 필수적인 STP(Spanning Tree Protocol)의 동작 원리를 학습하고, 엔터프라이즈 환경에 맞게 최적화하는 방법을 익혔다.

 

핵심 내용

  1. STP의 기본 동작: Root Bridge 선출, Port Role 결정(Root Port, Designated Port, Alternate Port), Port State 전환(Blocking → Listening → Learning → Forwarding)을 통해 물리적 루프를 논리적으로 차단한다. 이중화 링크로 인한 브로드캐스트 스톰을 방지하면서도 장애 시 자동 Failover를 제공한다.
  2. Root Bridge 수동 설정: 기본적으로 MAC 주소에 따라 Root Bridge가 선출되지만, 엔터프라이즈 환경에서는 Core 계층의 성능 좋은 장비를 Primary Root로, Distribution 계층을 Secondary Root로 설정한다. Priority 값을 조정하여 네트워크 토폴로지를 의도한 대로 제어할 수 있다.
  3. STP 최적화 기법: PortFast를 통해 Access 포트의 수렴 시간을 단축하여 DHCP 타임아웃을 방지하고, BPDU Guard로 잘못된 스위치 연결을 차단하며, Root Guard로 의도하지 않은 Root Bridge 변경을 방지한다. 이러한 최적화 기법은 네트워크의 안정성과 보안을 크게 향상시킨다.
  4. 고가용성 검증: 링크 장애 시뮬레이션을 통해 STP의 Failover 동작을 확인했다. Blocking 상태였던 포트가 자동으로 활성화되어 대체 경로를 제공하며, 사용자는 네트워크 중단을 인지하지 못한다. 재수렴 시간은 기본 STP의 경우 30-50초, Rapid STP의 경우 1-6초 소요된다.

배운 점

STP는 단순히 루프를 방지하는 기능을 넘어, 네트워크 이중화와 고가용성의 핵심 기술임을 이해했다. Root Bridge 선출 과정과 Port Role 결정 알고리즘을 통해 STP가 어떻게 최적 경로를 선택하는지 학습했으며, 실제 장애 상황에서 어떻게 자동으로 대처하는지 확인했다.

 

PortFast, BPDU Guard, Root Guard와 같은 최적화 기법은 각각의 목적과 적용 위치가 명확하다. Access 포트에는 PortFast와 BPDU Guard를, Distribution → Access 연결에는 Root Guard를 적용하여 계층별로 적절한 보안과 최적화를 구현한다.

 

엔터프라이즈 네트워크에서는 Rapid-PVST+나 MST(Multiple Spanning Tree)를 사용하여 재수렴 시간을 단축하고, VLAN별로 Root Bridge를 분산시켜 로드 밸런싱을 구현하기도 한다.

'Network Practice' 카테고리의 다른 글

[WireShark] Filtering - 다양한 복합 필터링 기법  (0) 2025.11.30
[GNS3] EtherChannel Link Aggregation 구성  (0) 2025.11.30
[WireShark] ICMP를 통한 기초적인 Packet 분석 실습  (0) 2025.11.28
[GNS3] 3-Tier 기본 구성 및 VLAN 설계  (0) 2025.11.27
[GNS3] DNS 및 ARP의 동작 원리 실습  (0) 2025.11.18
'Network Practice' 카테고리의 다른 글
  • [WireShark] Filtering - 다양한 복합 필터링 기법
  • [GNS3] EtherChannel Link Aggregation 구성
  • [WireShark] ICMP를 통한 기초적인 Packet 분석 실습
  • [GNS3] 3-Tier 기본 구성 및 VLAN 설계
김슭삵
김슭삵
Layer By Layer. 한 층씩 성장 해가는 네트워크와 서버의 학습 공간
  • 김슭삵
    Layer By Layer
    김슭삵
  • 전체
    오늘
    어제
    • 분류 전체보기 (49)
      • Network Concepts (36)
      • Network Practice (12)
      • Linux (0)
      • AWS & Cloud (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    TCP/IP
    Port Mirroring
    dhcp
    vlan
    dai
    LACP
    gns3
    Nat
    ROAS
    ERSPAN
    ARP
    HSRP
    Cisco
    Etherchannel
    RSPAN
    Network
    WLAN
    dns
    wireshark
    ACL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
김슭삵
[GNS3] STP 최적화 및 루프 방지 실습
상단으로

티스토리툴바