
네트워크에서 가장 핵심적인 장비 중 하나가 스위치(Switch)입니다.
스위치는 2계층 주소인 MAC 주소를 기반으로 패킷을 필요한 곳에 전달합니다. 별도의 설정이 없어도 기본적인 MAC 주소 학습과 패킷 전달 기능을 수행하며, VLAN이나 STP와 같은 기능을 통해 네트워크를 논리적으로 분리하거나 루프를 방지할 수도 있습니다.
이번 글에서는 스위치의 기본 동작인 플러딩, 어드레스 러닝, 포워딩/필터링부터 VLAN과 STP까지 정리해보겠습니다.
과거 허브 기반의 이더넷 환경에서는 여러 장비가 동시에 통신하면 충돌이 발생하고, 그만큼 네트워크 성능이 떨어지는 문제가 있었습니다.
스위치는 이러한 문제를 줄이고 여러 장비가 서로 독립적으로 통신할 수 있도록 도와줍니다.
스위치의 핵심은 간단합니다.
어떤 MAC 주소를 가진 장비가 어느 포트에 연결되어 있는지 학습하고, 필요한 포트로만 패킷을 전달합니다.
이를 위해 스위치는 내부에 MAC 주소 테이블(MAC Address Table)을 유지합니다.
예를 들어 다음과 같은 테이블이 있다고 가정해보겠습니다.
| MAC 주소 | 포트 |
|---|---|
| AAAA | Port 1 |
| BBBB | Port 3 |
| CCCC | Port 5 |
목적지 MAC 주소가 BBBB라면 스위치는 Port 3으로만 패킷을 전달합니다.
스위치의 기본 동작은 크게 세 가지로 나눌 수 있습니다.
스위치가 처음 부팅되면 어떤 MAC 주소가 어느 포트에 연결되어 있는지 알 수 없습니다.
따라서 목적지 MAC 주소가 자신의 MAC 주소 테이블에 없다면 패킷이 들어온 포트를 제외한 모든 포트로 패킷을 전달합니다.
이를 플러딩(Flooding)이라고 합니다.
Switch
/ | \
PC A PC B PC C
↑
Packet 수신
MAC Table에 목적지 없음
↓
나머지 모든 포트로 전달
플러딩 자체는 정상적인 스위치 동작입니다.
하지만 플러딩이 지나치게 많이 발생하면 스위치가 목적지를 선택적으로 전달하지 못해 네트워크 효율이 떨어질 수 있습니다.
스위치는 출발지 MAC 주소를 이용해 MAC 주소를 학습합니다.
예를 들어 Port 1으로 들어온 패킷의 Source MAC이 AAAA라면 스위치는 다음과 같이 판단할 수 있습니다.
AAAA → Port 1
즉,
"AAAA라는 MAC 주소를 가진 장비는 Port 1 방향에 있구나."
라고 학습하는 것입니다.
이 과정을 반복하면서 MAC 주소 테이블이 만들어집니다.
Source MAC Port
-----------------------
AAAA 1
BBBB 3
CCCC 5
중요한 점은 스위치가 Destination MAC이 아니라 Source MAC을 보고 주소를 학습한다는 것입니다.
스위치가 목적지 MAC 주소의 위치를 이미 알고 있다면 해당 포트로만 패킷을 전달합니다.
이를 포워딩(Forwarding)이라고 합니다.
반대로 관계없는 다른 포트로 패킷을 보내지 않는 것을 필터링(Filtering)이라고 합니다.
PC A ── Port 1
│
Switch
│
PC B ── Port 2
│
PC C ── Port 3
PC A가 PC B에게 데이터를 보낼 때 스위치가 PC B의 MAC 주소 위치를 알고 있다면 Port 2로만 전달합니다.
PC C가 연결된 Port 3으로는 패킷을 보내지 않습니다.
모든 패킷이 포워딩되는 것은 아닙니다.
다음과 같은 트래픽은 일반적으로 플러딩됩니다.
이를 묶어서 BUM 트래픽이라고 합니다.
Unknown Unicast는 목적지 MAC 주소는 유니캐스트지만 MAC 주소 테이블에 해당 주소가 없는 경우입니다.
Destination MAC = DDDD
MAC Table
AAAA → 1
BBBB → 2
CCCC → 3
DDDD 정보 없음
↓
Flooding
스위치 한 대에 많은 단말을 연결하면 기본적으로 하나의 LAN을 구성하게 됩니다.
하지만 실제 기업 네트워크에서는 부서나 서비스 성격에 따라 네트워크를 분리할 필요가 있습니다.
예를 들어 다음처럼 나눌 수 있습니다.
VLAN 10 → 개발팀
VLAN 20 → 인사팀
VLAN 30 → 서버
VLAN 40 → IP Phone
이처럼 물리적인 스위치를 추가하지 않고 하나의 스위치 안에서 논리적으로 LAN을 분리하는 기술이 VLAN(Virtual LAN)입니다.
VLAN을 사용하는 대표적인 이유는 다음과 같습니다.
VLAN이 다르면 같은 스위치에 연결되어 있더라도 서로 다른 네트워크에 연결된 것처럼 동작합니다.
Switch
┌───────────┐
│ │
VLAN 10 VLAN 20
│ │
PC A PC B
따라서 VLAN 10과 VLAN 20은 직접 통신할 수 없습니다.
서로 다른 VLAN 간 통신이 필요하면 3계층 장비가 필요합니다.
VLAN을 할당하는 방식은 크게 두 가지가 있습니다.
가장 일반적인 VLAN 방식입니다.
스위치 포트 자체에 VLAN을 지정합니다.
Port 1 → VLAN 10
Port 2 → VLAN 10
Port 3 → VLAN 20
Port 4 → VLAN 20
어떤 장비가 연결되더라도 해당 포트에 설정된 VLAN에 속하게 됩니다.
포트가 아닌 단말의 MAC 주소를 기준으로 VLAN을 할당하는 방식입니다.
PC A MAC → VLAN 10
PC B MAC → VLAN 20
따라서 PC A가 어느 포트에 연결되더라도 MAC 주소를 기반으로 VLAN 10을 할당받을 수 있습니다.
VLAN을 사용하는 환경에서는 스위치 간에도 여러 VLAN의 트래픽을 전달해야 합니다.
만약 VLAN이 3개라면 VLAN마다 하나씩 물리 포트를 연결하는 방식도 생각할 수 있습니다.
Switch A Switch B
VLAN 10 ─────────── VLAN 10
VLAN 20 ─────────── VLAN 20
VLAN 30 ─────────── VLAN 30
하지만 VLAN이 많아질수록 연결해야 하는 포트도 증가합니다.
이를 해결하는 것이 VLAN Tagging입니다.
Trunk Port는 하나의 물리적인 링크를 이용해 여러 VLAN을 동시에 전달할 수 있습니다.
Switch A Switch B
VLAN 10 ┐ ┌ VLAN 10
VLAN 20 ├── Trunk ────────┤ VLAN 20
VLAN 30 ┘ └ VLAN 30
프레임에 VLAN ID를 추가해 어느 VLAN의 데이터인지 구분합니다.
일반적인 PC나 서버처럼 하나의 VLAN만 사용하는 단말은 주로 Access Port에 연결됩니다.
| 포트 | 특징 |
|---|---|
| Access Port | 하나의 VLAN 전달 |
| Trunk Port | 여러 VLAN 전달 |
일반적으로 다음처럼 사용합니다.
PC ── Access Port ── Switch
Switch ── Trunk Port ── Switch
다만 VMware ESXi와 같은 가상화 서버는 하나의 물리 인터페이스를 통해 여러 VLAN을 사용해야 할 수 있습니다.
이 경우 서버와 연결된 포트라도 Trunk 방식을 사용할 수 있습니다.
네트워크 장비 하나에 장애가 발생했을 때 전체 서비스가 중단되는 구조를 SPoF(Single Point of Failure)라고 합니다.
이를 방지하기 위해 네트워크에서는 보통 장비와 링크를 이중화합니다.
Switch A
/ \
PC Switch C
\ /
Switch B
하지만 스위치를 여러 경로로 연결하면 새로운 문제가 발생합니다.
바로 네트워크 루프(Loop)입니다.
루프가 존재하는 상태에서 브로드캐스트 패킷이 발생하면 스위치는 해당 패킷을 계속 플러딩합니다.
Switch A
↓
Switch B
↓
Switch C
↓
Switch A
↓
...
2계층에서는 이러한 프레임의 수명을 제한하는 방식이 없기 때문에 패킷이 계속 네트워크를 순환할 수 있습니다.
결국 브로드캐스트 패킷이 급격하게 증가하는 브로드캐스트 스톰(Broadcast Storm)이 발생합니다.
브로드캐스트 스톰이 발생하면 다음과 같은 문제가 나타날 수 있습니다.
루프는 MAC 주소 학습에도 문제를 일으킵니다.
스위치는 Source MAC을 기준으로 MAC 주소 테이블을 학습합니다.
그런데 루프가 있다면 같은 MAC 주소의 패킷이 서로 다른 포트에서 계속 들어올 수 있습니다.
AAAA → Port 1
잠시 후
AAAA → Port 2
다시
AAAA → Port 1
이처럼 하나의 MAC 주소가 여러 포트에서 반복적으로 학습되는 현상을 MAC Address Flapping이라고 합니다.
MAC 주소 테이블이 계속 변경되므로 스위치는 정상적인 포워딩을 수행하기 어려워집니다.
스위치를 이중화하면서도 루프를 방지하기 위해 사용하는 기술이 STP(Spanning Tree Protocol)입니다.
STP의 핵심 아이디어는 간단합니다.
루프가 발생할 수 있는 경로 중 일부를 논리적으로 차단하고, 필요한 경우 다시 활성화합니다.
Switch A
/ \
/ \
Switch B ───── Switch C
↑
일부 경로 차단
이렇게 하면 물리적으로는 이중화된 구조를 유지하면서 논리적으로는 루프가 없는 트리 구조를 만들 수 있습니다.
STP가 전체 스위치 구조를 파악하려면 스위치끼리 정보를 교환해야 합니다.
이때 사용하는 것이 BPDU(Bridge Protocol Data Unit)입니다.
스위치들은 BPDU를 서로 교환하면서 다음과 같은 정보를 파악합니다.
STP는 크게 세 단계를 통해 루프가 없는 구조를 만듭니다.
전체 네트워크에서 기준이 되는 Root Switch를 하나 선정합니다.
스위치들은 BPDU를 교환하고 Bridge ID를 비교해 Root Switch를 결정합니다.
Root Switch가 아닌 스위치들은 Root Switch로 가는 가장 좋은 경로의 포트를 하나 선택합니다.
이를 Root Port라고 합니다.
각 네트워크 구간마다 데이터를 전달할 Designated Port를 선정합니다.
루프가 발생할 수 있는 나머지 경로는 차단됩니다.
Root Switch
/ \
/ \
Root Port Root Port
| |
Switch A ───── Switch B
X
Blocking
결과적으로 물리적인 링크는 여러 개 존재하지만 실제 트래픽은 루프가 없는 경로로만 전달됩니다.
기본 STP에서 포트는 바로 통신 가능한 상태가 되는 것이 아니라 여러 상태를 거칩니다.
Blocking
↓
Listening
↓
Learning
↓
Forwarding
일반 데이터를 전달하지 않고 BPDU를 통해 네트워크 상태를 확인합니다.
포트를 실제 전달 경로로 사용할지 판단합니다.
패킷을 전달하기 전 MAC 주소를 학습합니다.
정상적으로 패킷을 전달합니다.
기본 STP에서는 이러한 상태 전환 때문에 새로운 경로가 활성화되기까지 시간이 걸릴 수 있습니다.
기존 STP는 장애가 발생했을 때 백업 경로를 활성화하는 시간이 비교적 길다는 문제가 있습니다.
이를 개선한 것이 RSTP(Rapid Spanning Tree Protocol)입니다.
RSTP는 기존 STP와 기본적인 목적은 동일하지만, 토폴로지 변화를 더욱 빠르게 감지하고 새로운 경로로 전환할 수 있도록 개선되었습니다.
STP
장애 발생
↓
상태 계산
↓
백업 경로 활성화
RSTP
장애 발생
↓
빠르게 토폴로지 변경 전달
↓
백업 경로 활성화
따라서 네트워크 장애 발생 시 복구 시간을 줄이는 데 도움이 됩니다.
VLAN이 많아지면 STP 역시 VLAN 환경을 어떻게 처리할 것인지 고려해야 합니다.
하나의 STP만 사용하는 방식은 관리 부담은 적지만 모든 VLAN이 동일한 경로를 사용하기 때문에 네트워크 자원을 효율적으로 사용하기 어렵습니다.
반대로 VLAN별로 별도의 STP를 운영하면 경로를 세밀하게 구성할 수 있지만 관리해야 하는 STP 프로세스가 많아집니다.
이를 보완한 것이 MST(Multiple Spanning Tree)입니다.
MST는 여러 VLAN을 하나의 그룹으로 묶고 그룹 단위로 STP를 동작시킵니다.
VLAN 10~50
↓
MST Instance 1
VLAN 100~150
↓
MST Instance 2
이를 통해 STP의 관리 부담을 줄이면서 여러 경로를 보다 효율적으로 활용할 수 있습니다.
이번 내용을 하나의 흐름으로 정리하면 다음과 같습니다.
Switch
│
├─ MAC Address Learning
│ ↓
│ MAC Table
│ ↓
│ Forwarding
│
├─ VLAN
│ ↓
│ 논리적인 네트워크 분리
│ ↓
│ Access / Trunk
│
└─ 이중화
↓
Loop 발생 가능
↓
STP
↓
루프 경로 차단
스위치를 이해할 때 가장 중요한 것은 기능을 따로 외우는 것이 아니라 서로 연결해서 이해하는 것입니다.
이번 장의 핵심을 정리하면 다음과 같습니다.
결국 스위치의 핵심은 다음 한 문장으로 정리할 수 있습니다.
스위치는 MAC 주소를 학습해 필요한 곳으로만 프레임을 전달하고, VLAN으로 네트워크를 분리하며, STP를 통해 이중화된 환경에서 발생할 수 있는 루프를 방지합니다.