CCNA 200-301

CCNA 200–301 따라잡기 7장

STP, 스위치 루프를 막는 가장 기본적인 방법

6장에서는 VLAN을 배웠다. VLAN은 하나의 스위치를 여러 브로드캐스트 도메인으로 나누는 기술이었다. 이제 스위치 네트워크에서 반드시 같이 알아야 하는 주제가 나온다.

바로 STP다.

STP는 Spanning Tree Protocol의 약자다. 한국어로 풀면 스패닝 트리 프로토콜이다. 이름은 어렵지만 목적은 단순하다.

스위치 사이에 루프가 생기지 않게 막는 프로토콜이다.

CCNA에서는 STP를 아주 깊은 알고리즘 수준으로 묻기보다는, 왜 필요한지, Root Bridge가 무엇인지, 포트 역할이 어떻게 정해지는지, 그리고 PortFast와 BPDU Guard를 어디에 쓰는지를 묻는다.

이번 장은 그림을 보면서 흐름으로 이해하면 된다.

  1. 스위치 이중화는 필요하지만 루프는 위험하다

실제 네트워크에서는 장비나 케이블 하나가 끊겨도 서비스가 멈추지 않도록 이중화 링크를 만든다.

예를 들어 SW1, SW2, SW3가 삼각형으로 연결되어 있다고 해보자. 한 링크가 끊겨도 나머지 링크로 우회할 수 있으니 물리적으로는 좋은 구조다.

하지만 Layer 2에서는 이 구조가 위험할 수 있다.

라우터는 TTL 같은 값으로 패킷이 영원히 도는 것을 막는다. 반면 이더넷 프레임에는 IP TTL처럼 매번 감소하는 필드가 없다. 그래서 스위치 루프가 생기면 프레임이 계속 돌 수 있다.

특히 브로드캐스트 프레임은 더 위험하다.

목적지 MAC 주소가 FF:FF:FF:FF:FF:FF이면 스위치는 해당 프레임을 같은 VLAN의 다른 포트로 flood한다. 루프가 있으면 이 flood된 프레임이 다른 스위치를 통해 다시 돌아오고, 다시 flood되고, 또 돌아온다.

이것이 브로드캐스트 스톰이다.

  1. 스위치 루프가 만들 수 있는 문제

스위치 루프가 생기면 보통 세 가지 문제가 같이 나타난다.

첫째, 브로드캐스트와 멀티캐스트 프레임이 계속 복제된다.

처음에는 프레임 하나였는데 스위치를 돌면서 여러 개로 늘어난다. 링크 대역폭이 빠르게 소모되고, 장비 CPU도 영향을 받는다.

둘째, MAC 주소 테이블이 흔들린다.

스위치는 프레임의 출발지 MAC 주소를 보고 “이 MAC은 이 포트 뒤에 있구나”라고 학습한다. 그런데 같은 프레임이 루프를 돌아 다른 포트로 다시 들어오면, 같은 MAC 주소가 다른 포트에서 보이는 것처럼 보인다.

이 현상을 MAC flapping이라고 부른다.

셋째, 정상 트래픽까지 느려지거나 끊긴다.

브로드캐스트 스톰이 커지면 사용자는 “인터넷이 느리다”가 아니라 “네트워크가 거의 멈췄다”고 느낄 수 있다. 스위치끼리 연결된 일부 포트에서 시작된 문제가 같은 VLAN 전체에 영향을 줄 수 있다.

  1. STP가 하는 일

STP는 물리 링크를 없애지 않는다. 대신 논리적으로 일부 포트를 blocking 상태로 만들어 루프를 끊는다.

중요한 점은 이것이다.

물리적으로는 삼각형이어도, 논리적으로는 루프 없는 나무 구조처럼 만든다.

평상시에는 일부 링크가 대기 상태에 있고, 장애가 발생하면 막혀 있던 포트가 열려 우회 경로를 제공한다.

그래서 STP는 이중화와 루프 방지 사이의 균형을 맞추는 기술이라고 볼 수 있다.

  1. BPDU, STP의 대화 메시지

스위치가 STP 결정을 하려면 서로 정보를 주고받아야 한다. 이때 사용하는 메시지가 BPDU다.

BPDU는 Bridge Protocol Data Unit의 약자다.

스위치들은 BPDU를 주고받으며 다음 정보를 비교한다.

어떤 스위치가 Root Bridge가 될 것인가.

Root Bridge까지 가는 경로 비용은 얼마인가.

어떤 포트를 forwarding 상태로 둘 것인가.

어떤 포트를 blocking 상태로 둘 것인가.

CCNA에서는 BPDU를 “STP가 서로 정보를 교환하는 제어 프레임” 정도로 이해하면 된다.

  1. Root Bridge

STP는 먼저 기준점이 되는 스위치를 하나 정한다. 이 스위치를 Root Bridge라고 한다.

Root Bridge는 STP 토폴로지의 중심이다. 모든 스위치는 Root Bridge까지 가장 좋은 경로를 계산한다.

Root Bridge는 Bridge ID가 가장 낮은 스위치가 된다.

Bridge ID는 크게 두 요소로 구성된다.

Bridge Priority

MAC 주소

기본 priority가 같다면 MAC 주소가 낮은 스위치가 Root Bridge가 된다. 그래서 운영자가 원하는 스위치를 Root Bridge로 만들려면 priority를 낮춰준다.

예를 들어 코어 스위치나 배포 스위치를 Root Bridge로 지정하는 식이다. 아무 설정도 하지 않으면 의도하지 않은 액세스 스위치가 Root Bridge가 될 수 있다.

이건 좋은 설계가 아니다.

  1. Root Port

Root Bridge가 정해지면, Root Bridge가 아닌 각 스위치는 Root Bridge로 가는 최적 포트를 하나 고른다.

이 포트를 Root Port라고 한다.

Root Port는 Root Bridge까지 가는 비용이 가장 낮은 포트다.

비용은 링크 속도와 관련이 있다. 빠른 링크일수록 cost가 낮다. 예전 STP 기준에서는 100 Mbps보다 1 Gbps 링크가 더 낮은 cost를 갖는다.

시험에서는 “Root Bridge가 아닌 스위치마다 Root Port는 보통 하나”라고 기억하면 된다.

  1. Designated Port

각 네트워크 세그먼트마다 대표로 forwarding할 포트도 정해야 한다. 이 포트를 Designated Port라고 한다.

Designated Port는 해당 세그먼트에서 Root Bridge로 가는 가장 좋은 방향을 대표한다.

Root Bridge의 포트는 보통 Designated Port가 된다. 왜냐하면 Root Bridge 자신이 기준점이므로, Root Bridge 쪽 포트가 가장 좋은 방향이기 때문이다.

  1. Alternate Port와 Blocking

Root Port도 아니고 Designated Port도 아닌 포트는 루프를 만들 가능성이 있다.

이런 포트는 Alternate Port가 되어 blocking 상태로 들어갈 수 있다.

blocking 상태의 포트는 일반 데이터 프레임을 전달하지 않는다. 그래서 물리 링크는 살아 있어도 논리적으로는 막힌 것처럼 동작한다.

이렇게 해서 STP는 루프를 끊는다.

  1. STP 선출 순서 큰 흐름

STP를 너무 어렵게 외우려고 하면 헷갈린다. 큰 순서는 이렇게 보면 된다.

첫째, Root Bridge를 선출한다.

가장 낮은 Bridge ID를 가진 스위치가 Root Bridge다. Bridge ID는 priority와 MAC 주소로 결정된다.

둘째, Root Bridge가 아닌 스위치마다 Root Port를 고른다.

Root Bridge까지 가는 가장 좋은 포트다.

셋째, 각 세그먼트마다 Designated Port를 고른다.

그 세그먼트에서 Root Bridge 방향으로 대표 forwarding 포트를 정한다.

넷째, 남는 포트는 Alternate Port가 되어 blocking될 수 있다.

이 흐름만 잡혀도 STP 문제를 읽을 때 방향을 잃지 않는다.

  1. STP 포트 상태

전통적인 802.1D STP에서는 포트가 바로 forwarding으로 가지 않는다.

대표적인 상태는 다음과 같다.

Blocking

Listening

Learning

Forwarding

Disabled

Blocking은 데이터 프레임을 전달하지 않는다. BPDU를 듣고 루프가 없는지 확인한다.

Listening은 forwarding으로 가기 전에 STP 정보를 처리하는 상태다. 아직 MAC 주소 학습은 하지 않는다.

Learning은 MAC 주소를 학습하지만 데이터 프레임은 아직 전달하지 않는다.

Forwarding은 정상적으로 프레임을 전달하고 MAC 주소도 학습한다.

Disabled는 관리적으로 꺼져 있거나 오류로 비활성화된 상태다.

시험에서는 각 상태의 세부 타이머보다 “Blocking은 전달하지 않는다, Learning은 MAC을 학습한다, Forwarding은 전달한다”를 먼저 잡으면 된다.

  1. RSTP

RSTP는 Rapid Spanning Tree Protocol이다.

기존 STP보다 수렴 속도가 빠르다. 표준 이름은 802.1w다.

CCNA에서는 RSTP가 STP보다 빠르게 topology 변화에 대응한다는 점을 알아야 한다.

Cisco 환경에서는 PVST+, Rapid PVST+ 같은 이름도 나온다. 여기서 중요한 개념은 VLAN별로 STP 인스턴스를 운용할 수 있다는 점이다.

6장에서 VLAN을 배웠기 때문에 이 연결이 중요하다.

VLAN 10과 VLAN 20이 있을 때, VLAN마다 Root Bridge를 다르게 설계할 수 있다. 예를 들어 VLAN 10은 SW1을 Root로, VLAN 20은 SW2를 Root로 만들어 링크 사용을 분산할 수 있다.

Get David Lee’s stories in your inbox

Join Medium for free to get updates from this writer.

Subscribe

Subscribe

Remember me for faster sign in

  1. PortFast

PC가 연결된 access port를 생각해보자.

일반 PC는 스위치 루프를 만들 장비가 아니다. 그런데 STP 기본 동작 때문에 포트가 forwarding 상태로 가기까지 시간이 걸리면, PC가 부팅되면서 DHCP 주소를 받는 과정이 늦어질 수 있다.

이때 사용하는 기능이 PortFast다.

PortFast를 켠 포트는 바로 forwarding 상태로 올라간다.

대표 명령은 다음과 같다.

text interface range fa0/1–24 spanning-tree portfast

단, PortFast는 단말이 연결된 access port에 쓰는 기능이다.

스위치끼리 연결된 trunk 포트에 아무 생각 없이 PortFast를 켜면 루프 위험이 커진다.

  1. BPDU Guard

PortFast와 같이 기억해야 하는 기능이 BPDU Guard다.

PortFast 포트는 원칙적으로 PC나 프린터 같은 단말이 연결되어야 한다. 그런데 사용자가 그 포트에 작은 스위치를 꽂으면 어떻게 될까?

그 작은 스위치가 BPDU를 보낼 수 있다. 그러면 access edge port라고 생각했던 포트가 갑자기 스위치 네트워크의 일부가 된다.

이런 상황을 막기 위해 BPDU Guard를 사용한다.

BPDU Guard가 켜진 포트에서 BPDU가 들어오면, 스위치는 해당 포트를 err-disabled 상태로 막는다.

대표 명령은 다음과 같다.

text interface fa0/10 spanning-tree bpduguard enable

또는 전역에서 PortFast 기본 포트에 대해 켤 수도 있다.

text spanning-tree portfast default spanning-tree bpduguard default

시험에서는 이렇게 기억하면 된다.

PortFast는 단말 포트를 빨리 forwarding으로 올린다.

BPDU Guard는 단말 포트에서 BPDU가 보이면 포트를 막는다.

둘은 access edge port에서 자주 같이 쓴다.

  1. show spanning-tree 읽기

STP 확인에서 가장 기본 명령은 다음이다.

text show spanning-tree

출력에서 봐야 할 것은 크게 네 가지다.

첫째, 현재 VLAN의 Root Bridge가 누구인지 본다.

출력에 Root ID가 나온다. 그리고 현재 스위치가 Root인지 아닌지도 확인할 수 있다.

둘째, Bridge ID를 본다.

현재 스위치의 priority와 MAC 주소를 확인한다.

셋째, 포트 역할을 본다.

Role 항목에 Root, Desg, Altn 같은 값이 보인다.

Root는 Root Port다.

Desg는 Designated Port다.

Altn은 Alternate Port다.

넷째, 포트 상태를 본다.

Sts 항목에 FWD, BLK 같은 값이 나온다.

FWD는 forwarding이다.

BLK는 blocking이다.

문제가 있을 때는 “어떤 VLAN에서, 어떤 스위치가 Root이고, 어떤 포트가 막혔는가”를 먼저 확인하면 된다.

  1. 자주 나오는 명령 정리

STP 상태 확인:

text show spanning-tree

특정 VLAN 확인:

text show spanning-tree vlan 10

Root Bridge를 의도적으로 낮은 priority로 설정:

text spanning-tree vlan 10 priority 4096

Cisco 매크로 방식으로 Root Primary 설정:

text spanning-tree vlan 10 root primary

PortFast 설정:

text interface fa0/1 spanning-tree portfast

BPDU Guard 설정:

text interface fa0/1 spanning-tree bpduguard enable

  1. 트러블슈팅 루틴

STP 문제를 보면 다음 순서로 보면 된다.

첫째, 장애가 특정 VLAN에만 있는지 확인한다.

VLAN별 STP가 다를 수 있기 때문이다. VLAN 10은 정상인데 VLAN 20만 이상할 수 있다.

둘째, Root Bridge가 의도한 장비인지 확인한다.

액세스 스위치가 Root Bridge가 되어 있으면 경로가 비효율적이거나 장애 시 예상과 다르게 동작할 수 있다.

셋째, 어떤 포트가 blocking인지 확인한다.

blocking 자체는 문제가 아니다. STP가 루프를 막기 위해 정상적으로 막은 것일 수 있다. 다만 의도하지 않은 포트가 막혔다면 Root Bridge나 cost 설계를 확인해야 한다.

넷째, edge port에 PortFast와 BPDU Guard가 적절히 설정되어 있는지 본다.

PC 포트에 PortFast가 없으면 DHCP 지연이 생길 수 있다. 반대로 스위치 연결 포트에 PortFast가 켜져 있으면 위험하다.

다섯째, err-disabled 포트가 있는지 확인한다.

BPDU Guard가 동작하면 포트가 err-disabled가 될 수 있다. 이 경우 사용자가 스위치나 허브를 꽂았는지 확인해야 한다.

  1. 시험에서 자주 틀리는 부분

첫째, STP가 링크를 물리적으로 끊는다고 생각하는 것.

STP는 물리 링크를 제거하지 않는다. 포트 상태를 blocking으로 만들어 논리적으로 프레임 전달을 막는다.

둘째, Root Bridge가 자동으로 가장 성능 좋은 장비가 된다고 생각하는 것.

Root Bridge는 Bridge ID가 낮은 장비가 된다. priority를 설계하지 않으면 원하지 않는 스위치가 Root가 될 수 있다.

셋째, Root Port와 Designated Port를 섞는 것.

Root Port는 Root Bridge가 아닌 스위치가 Root로 가기 위해 선택한 포트다. Designated Port는 각 세그먼트의 대표 forwarding 포트다.

넷째, PortFast를 trunk에 아무 데나 켜도 된다고 생각하는 것.

PortFast는 기본적으로 단말 access port용이다.

다섯째, BPDU Guard를 STP를 끄는 기능으로 이해하는 것.

BPDU Guard는 BPDU가 들어오면 포트를 막는 보호 기능이다. STP를 끄는 기능이 아니다.

  1. 7장 정리

STP는 Layer 2 루프를 막기 위한 프로토콜이다.

스위치 루프가 생기면 브로드캐스트 스톰과 MAC flapping이 발생할 수 있다.

STP는 BPDU를 사용해 스위치끼리 정보를 교환한다.

Root Bridge는 가장 낮은 Bridge ID를 가진 스위치다.

Bridge ID는 priority와 MAC 주소로 구성된다.

Root Port는 Root Bridge로 가는 최적 포트다.

Designated Port는 각 세그먼트의 대표 forwarding 포트다.

Alternate Port는 루프 방지를 위해 blocking될 수 있다.

전통적인 STP 포트 상태에는 Blocking, Listening, Learning, Forwarding, Disabled가 있다.

RSTP는 기존 STP보다 빠르게 수렴한다.

PortFast는 단말 access port를 빠르게 forwarding 상태로 올린다.

BPDU Guard는 PortFast 포트에서 BPDU가 들어오면 포트를 막는다.

show spanning-tree는 STP 확인의 기본 명령이다.

  1. 다음 장 예고

8장에서는 EtherChannel을 다룬다. 여러 물리 링크를 하나의 논리 링크처럼 묶는 이유, LACP와 PAgP의 차이, 그리고 EtherChannel이 STP와 어떤 관계를 갖는지 살펴본다. STP가 루프를 막기 위해 링크를 차단한다면, EtherChannel은 여러 링크를 하나처럼 보이게 만들어 대역폭과 이중화를 함께 얻는 기술이다.

댓글 0