KIMKYUTAE.COM · ©
VLAN과 VXLAN의 차이, 데이터센터 네트워크는 어떻게 연결될까?
네트워크 구성을 보다 보면 VLAN과 VXLAN이라는 용어가 나온다. 이름이 비슷해서 VXLAN을 VLAN의 확장판 정도로 생각하기 쉽다. 실제로 둘 다 네트워크를 논리적으로 나누는 데 쓰이지만, 데이터를 전달하는 방식은 꽤 다르다.
VLAN은 스위치에 연결된 장비들을 서로 다른 네트워크로 나누는 기술이다. VXLAN은 IP 네트워크를 거쳐 떨어져 있는 장비들까지 같은 L2 네트워크로 연결할 수 있게 한다. L2는 이더넷의 MAC 주소를 기준으로 데이터를 주고받는 계층을 말한다. 용어만 보면 복잡하니, 회사의 부서별 네트워크부터 생각해보면 이해가 편하다.
VLAN
VLAN(Virtual Local Area Network)은 같은 물리 스위치에 연결된 컴퓨터라도 서로 다른 네트워크에 속하도록 나눌 수 있는 기술이다. 한 회사에 인사팀과 재무팀, 개발팀이 있다고 가정해 보자.
- 인사팀: VLAN 10
- 재무팀: VLAN 20
- 개발팀: VLAN 30
이렇게 설정하면 같은 스위치를 쓰면서도 부서별로 네트워크를 나눌 수 있다. 한 부서에서 네트워크 전체에 보내는 브로드캐스트 트래픽도 그 VLAN 안에서만 전달된다. 이 범위를 브로드캐스트 도메인이라고 한다.
인사팀과 재무팀처럼 서로 다른 VLAN에 있는 컴퓨터가 통신하려면 라우터나 L3 스위치를 거쳐야 한다. 이 경로에 접근제어 목록인 ACL이나 방화벽 정책을 적용하면 어느 부서에서 어디까지 접근할지 정할 수 있다.
VLAN은 스위치 한 대 안에서만 사용하는 기술은 아니다. 여러 스위치에 걸쳐 같은 VLAN을 연결할 때는 보통 트렁크(Trunk) 포트를 사용한다. IEEE 802.1Q 방식은 이더넷 프레임에 4바이트 태그를 붙여 VLAN을 구분한다. VLAN 번호를 담는 공간은 12비트이며, 일반적으로 1~4094번을 사용한다.
VLAN의 확장
사무실이나 작은 서버 환경에서는 이 정도 구성으로도 충분하다. 그런데 서버가 수백 개의 랙에 나뉘어 있다면 이야기가 달라진다. 같은 VLAN을 멀리까지 연결하려면 중간 스위치들의 설정도 함께 관리해야 하고, 연결 범위가 넓어질수록 변경 작업도 부담스러워진다.
기존 L2 네트워크는 네트워크 루프를 방지하기 위해 STP(Spanning Tree Protocol)를 사용할 수 있다. 이때 일부 연결이 차단되어 대기 경로로 남기도 한다. 클라우드 사업자처럼 많은 고객에게 독립적인 네트워크를 제공하는 환경에서는 VLAN ID의 수량도 제약이 된다.
VXLAN은 이때 중간 전달망을 IP 네트워크로 구성할 수 있게 해준다. 양쪽 끝에서 원래 데이터를 포장하고 풀어주면, 중간 장비는 IP 주소를 보고 전달하는 방식이다.
VXLAN
VXLAN(Virtual Extensible LAN)은 기존 이더넷 프레임을 새로운 IP/UDP 패킷으로 감싸 전송하는 기술이다. 이 과정을 캡슐화(Encapsulation)라고 부른다.
비유하자면 원래 프레임을 택배 상자에 넣고, 겉면에 목적지 주소를 붙여 보내는 셈이다. 중간 배송 구간에서는 상자 안의 내용을 확인할 필요가 없다. 목적지에 도착하면 포장을 벗겨 원래 데이터를 전달한다.
이때 논리 네트워크를 구분하는 번호가 VNI(VXLAN Network Identifier)이다. 24비트 공간을 사용해 약 1,677만 개를 구분할 수 있다. 많은 고객에게 각자의 네트워크를 제공해야 하는 클라우드 환경에서는 VLAN보다 여유가 크다.
데이터 전달
서로 다른 랙에 있는 서버 A와 B를 같은 네트워크로 연결한다고 해보자. 스위치 사이를 L2로 이어주는 VLAN 구성과, 중간을 IP로 연결하는 VXLAN 구성의 경로는 다음과 같다.
| 구성 | 통신 경로 |
|---|---|
| VLAN | Server A → Switch A → L2 Trunk → Switch B → Server B |
| VXLAN | Server A → Leaf A(VTEP) → Spine(IP) → Leaf B(VTEP) → Server B |
표의 Leaf는 서버가 연결되는 스위치이고, Spine은 Leaf들을 연결하는 스위치이다. VLAN을 L2로 확장할 때는 중간 스위치도 해당 VLAN을 전달하도록 설정해야 한다. VXLAN에서는 양쪽 끝 사이의 IP 경로를 이용한다. 중간 Spine은 서버의 VLAN 대신 포장 바깥쪽의 IP 주소를 보고 패킷을 전달한다.
VXLAN 패킷을 만들고 해제하는 지점을 VTEP(VXLAN Tunnel Endpoint)라고 부른다. Leaf 스위치가 이 역할을 할 수도 있고, ESXi나 KVM이 실행되는 서버의 가상 스위치가 담당할 수도 있다.
- Server A가 Server B에 데이터를 보낸다.
- 출발지 VTEP가 원본 이더넷 프레임을 VXLAN/UDP/IP 패킷으로 캡슐화한다.
- Spine 스위치는 외부 IP 주소를 보고 목적지 VTEP까지 전달한다.
- 도착지 VTEP가 캡슐화를 해제하고 원래 프레임을 Server B에 전달한다.
여기서 실제 패킷을 운반하는 스위치와 IP 네트워크가 언더레이(Underlay)이다. 그 위에 VXLAN으로 만든 논리 네트워크는 오버레이(Overlay)라고 부른다. 서버는 같은 네트워크에 연결된 것처럼 통신하고, 실제 데이터는 아래의 IP 경로를 따라 이동한다.

서버의 논리 네트워크 아래에서 실제 데이터를 운반하는 IP 네트워크
패킷 구조
VLAN은 기존 이더넷 프레임에 4바이트의 태그를 추가한다. VXLAN은 원본 프레임 전체를 외부 Ethernet, IP, UDP, VXLAN 헤더로 감싼다.
| VLAN | VXLAN |
|---|---|
| 목적지 MAC · 출발지 MAC · VLAN 태그 · 데이터 | 외부 Ethernet · 외부 IP · UDP · VXLAN 헤더 · 원본 이더넷 프레임 |
| 추가 태그 4바이트 | 일반적인 IPv4/Ethernet 기준 헤더 50바이트 추가 |
VXLAN의 기본 UDP 목적지 포트는 4789이다. 원본 프레임의 FCS(오류 검사용 정보)는 VXLAN 내부에 그대로 담지 않는다. 외부 전송 구간에서는 새 이더넷 프레임에 맞는 FCS가 사용된다.
VLAN과 VNI의 관계
여기서 헷갈리기 쉬운 부분이 VLAN 번호와 VNI의 관계이다. 서로 분리된 접속 구간에서는 같은 VLAN 번호를 재사용할 수 있다. 따라서 서버 쪽 VLAN 번호만 보고 같은 네트워크라고 판단하기는 어렵다. VTEP에서 그 VLAN을 어느 VNI로 연결했는지도 봐야 한다.
아래는 서로 다른 Leaf에 연결된 서버 세 대의 예이다.
| 서버 | 로컬 VLAN | 매핑된 VNI | 관계 |
|---|---|---|---|
| Server A | 100 | 10100 | Server B와 같은 VNI |
| Server B | 100 | 10100 | Server A와 같은 VNI |
| Server C | 100 | 10200 | Server A·B와 다른 VNI |
세 서버 모두 접속 구간에서는 VLAN 100을 사용한다. 하지만 A와 B는 VNI 10100에 연결되고, C는 VNI 10200에 연결된다. 로컬 VLAN 번호는 같아도 VXLAN에서는 서로 다른 네트워크로 나뉘는 구성이다.
같은 VNI 안의 서버끼리는 별도의 접근통제가 없다면 직접 통신할 수 있다. 위 예에서는 A와 B가 여기에 해당한다. 두 서버 사이의 접근까지 제한하려면 호스트 방화벽이나 마이크로세그멘테이션처럼 서버 간 통신을 제어하는 정책이 필요하다.
A와 C처럼 VNI가 다른 서버들도 L3 라우팅을 구성하고 정책에서 허용하면 통신할 수 있다. 라우팅 테이블을 따로 관리하는 VRF로 나누었더라도, VRF 사이에 경로를 연결하면 통신 경로가 생길 수 있다. 네트워크를 구분한 뒤 어떤 통신을 허용할지는 별도로 정해야 한다.
보안 관점에서는 VLAN 번호와 VNI를 확인하는 데서 그치지 않고, 라우팅과 VRF 구성, 실제 적용된 접근통제 정책까지 함께 확인할 필요가 있다.

같은 로컬 VLAN 번호를 사용해도 VNI 매핑에 따라 네트워크가 나뉜다
EVPN
데이터를 포장하는 방법을 정했으니, 이제 어느 VTEP로 보내야 할지 알아야 한다. 목적지 서버의 위치 정보를 교환할 때 많이 사용하는 기술이 BGP EVPN(Ethernet VPN)이다.
BGP EVPN은 장비들이 서버의 MAC 주소와 IP 주소, 해당 정보를 가진 VTEP의 위치 등을 교환하도록 지원한다. 덕분에 대규모 VXLAN 환경에서 목적지 정보를 관리하고 불필요한 브로드캐스트를 줄일 수 있다.
초기의 VXLAN에서는 멀티캐스트를 활용한 Flood-and-Learn 방식도 사용했다. 최근 데이터센터 설계에서는 VXLAN과 BGP EVPN을 결합하는 방식이 널리 쓰인다.
MTU와 처리 성능
VXLAN은 헤더를 추가하므로 패킷 크기가 커진다. 이때 확인해야 하는 설정이 MTU(Maximum Transmission Unit)이다. MTU는 네트워크 인터페이스가 한 번에 전달할 수 있는 데이터 크기의 기준이다.
서버의 IP MTU가 1500바이트라면 일반적인 IPv4 기반 VXLAN의 언더레이 IP MTU는 추가 캡슐화 크기 50바이트를 고려해 적어도 1550바이트를 수용하도록 설계해야 한다. 장비에 따라 MTU 표기 기준이 다르므로 실제 설정값은 확인이 필요하다.
MTU가 맞지 않으면 작은 패킷은 통과하는데 큰 패킷은 손실되거나, 특정 파일 전송만 실패하는 상황이 생길 수 있다. 점보 프레임을 사용하는 환경도 많다. 실제 MTU 값은 서버의 패킷 크기와 캡슐화 방식, 경로에 있는 장비들의 지원 범위를 확인해 정한다.
VXLAN 캡슐화와 해제에도 처리 비용이 발생한다. 대규모 환경에서는 스위치 ASIC이나 서버 NIC의 오프로딩 기능으로 이 작업을 가속할 수 있다.
보안
VXLAN으로 감싼 데이터는 암호화되지 않는다. 패킷을 열어볼 수 있는 위치에서는 내부 데이터도 확인할 수 있으므로, 신뢰하기 어려운 구간을 지날 때는 IPsec이나 MACsec 같은 보호 방식을 전송 구간에 맞게 검토해야 한다.
또 하나는 트래픽 가시성이다. 기존 보안 장비가 VXLAN을 해석하지 못하면 외부 VTEP IP와 UDP 포트는 확인해도 실제 서버 간 통신의 내부 정보를 충분히 분석하기 어렵다. VXLAN 디캡슐화를 지원하는 모니터링·보안 장비 또는 적절한 트래픽 수집 구성이 필요할 수 있다.
앞서 본 동일 VNI 내부 통신은 경계 방화벽을 거치지 않을 수 있다. 이 구간에는 호스트 방화벽이나 분산 방화벽, 마이크로세그멘테이션을 적용해 서버별 접근을 제한한다. 쿠버네티스에서도 해당 기능을 지원하는 CNI, 즉 컨테이너 네트워크 플러그인을 사용하면 NetworkPolicy로 파드 간 통신을 제어할 수 있다.
VTEP 간 통신 구간 역시 보호해야 한다. VXLAN 헤더만으로 송신자를 인증하거나 패킷 무결성을 보장하지 않으므로, 허가되지 않은 장비가 언더레이에 접근하지 못하도록 제한하고 VTEP 통신에 ACL을 적용하는 것이 중요하다.
참고 : VLAN Hopping 공격
적용 환경
내 생각에는 사무실이나 작은 서버 환경이라면 VLAN부터 검토하는 편이 낫다. 지원 장비가 다양하고, 구성과 관리도 비교적 익숙한 방식이다.
서버가 여러 랙에 분산되어 있거나 고객별 네트워크를 대량으로 운영해야 한다면 VXLAN을 검토할 만하다. 실제로는 서버와 Leaf 사이에 VLAN을 쓰고, Leaf 사이에는 VXLAN을 사용하는 식으로 두 기술을 함께 구성하기도 한다.
Spine-Leaf 구성에서 VXLAN을 많이 쓰지만, 클라우드나 쿠버네티스라는 이름만으로 VXLAN 사용 여부를 알 수는 없다. 다른 터널링 기술이나 일반 IP 라우팅을 사용하는 구성도 있으므로 실제 구현을 확인해야 한다.
어느 기술이 더 최신인지보다, 필요한 네트워크 규모와 운영 방식에 맞는 구성을 고르는 것이 좋겠다.






