네트워크 가상화 기술을 공부하다 보면 Underlay Network와 Overlay Network라는 용어를 자주 접하게 된다.
특히 VXLAN, EVPN, SDN, Kubernetes 네트워크 등을 공부할 때 반드시 이해해야 하는 개념이다.
이번 글에서는 Underlay와 Overlay의 개념부터 VXLAN 동작 방식까지 정리해보겠다.

Underlay Network는 실제 물리 네트워크를 의미한다.
일반적으로 다음과 같은 장비들로 구성된다.
즉, " 실제 패킷을 전달하는 기반 인프라 "라고 볼 수 있다.
기존 Underlay 네트워크에서는 VLAN을 이용하여 네트워크를 분리하였다.
하지만 VLAN은 다음과 같은 한계를 가진다.
예를 들어 서로 다른 L3 네트워크에 위치한 VM들을 같은 네트워크처럼 동작시키고 싶을 수 있다.
하지만 일반적인 VLAN만으로는 이러한 요구사항을 해결하기 어렵다.
Overlay Network는 이러한 문제를 해결하기 위해 등장하였다.
Overlay는 Underlay 위에서 동작하는 논리 네트워크이다.
Overlay를 구현하는 핵심 원리는 터널링(Tunneling) 기술이다.
터널링은 원본 패킷을 새로운 패킷 안에 캡슐화하여 전달하는 기술이다.
즉, 패킷 안에 또 다른 패킷을 넣어 전송한다.
요약하면,
Overlay
→ 논리 네트워크
Underlay
→ 실제 운반 네트워크
관계라고 볼 수 있다.
VXLAN(Virtual eXtensible LAN)은 가장 널리 사용되는 Overlay 기술 중 하나이다.
VLAN의 확장 버전이라고 생각할 수 있다.
기존 VLAN은 12bit VLAN ID를 사용하기 때문에 약 4096개의 네트워크만 생성할 수 있다.
반면 VXLAN은 24bit VNI(VXLAN Network Identifier)를 사용하여 약 16,777,216개의 가상 네트워크를 생성할 수 있다.
VNI는 VLAN ID의 확장 개념으로, VXLAN 환경에서 가상 네트워크를 구분하기 위해 사용된다.
결국 VXLAN을 사용하면 대규모 클라우드 및 데이터센터 환경에서도 충분한 네트워크 분리가 가능하다.
VXLAN의 핵심목적은
L3 네트워크 위에서 L2 네트워크를 확장(L2 over L3)하여 VLAN의 한계를 극복하고 대규모 Overlay Network를 구현하는 것
이다.

VXLAN은 VM이 생성한 패킷을 VTEP이 캡슐화하고 Underlay Network를 통해 전달한 뒤, 반대편 VTEP이 다시 복원하는 방식으로 동작한다.
송신자는 단순히 L2 프레임을 전송한다.
1. 송신자는 그냥 L2 통신을 한다.
2. VTEP이 L2 프레임을 캡슐화한다.
3. Underlay는 일반 IP 패킷처럼 전달한다.
4. 반대편 VTEP이 원래 L2 프레임으로 복원한다.
따라서 실제로는 L3 네트워크를 통과했지만, 송신자는 같은 L2 네트워크에 있는 수신자에게 보내는 것처럼 동작하기 때문에 결과적으로 하나의 L2 네트워크처럼 보이게 된다.
VTEP(VXLAN Tunnel Endpoint)는 VXLAN 터널의 시작점과 끝점을 의미한다.
Overlay와 Underlay를 연결하는 핵심 장치이며 VXLAN 캡슐화와 복원 작업을 수행한다.
VTEP은 물리 장비의 이름이 아니라 VXLAN 캡슐화 및 복원을 수행하는 기능 또는 역할을 의미한다.
즉,
Overlay와 Underlay를 연결하는 게이트웨이 역할
을 수행한다.

위 이미지는 VTEP(VXLAN Tunnel Endpoint)가 원본 패킷을 VXLAN으로 캡슐화하는 과정을 나타낸다.
Host A는 일반적인 네트워크 통신과 동일하게 패킷을 생성한다.
원본 패킷의 구조는 다음과 같다.
[Ethernet]
[IP]
[TCP/UDP]
[Data]
즉, 원본 패킷 전체를 하나의 데이터(Inner Packet)처럼 취급한다.
그리고 목적지 VTEP까지 전달하기 위해 새로운 헤더를 추가한다.
캡슐화가 완료된 패킷 구조는 다음과 같다.
[Outer Ethernet]
[Outer IP]
[UDP]
[VXLAN Header]
[Inner Ethernet]
[Inner IP]
[TCP/UDP]
[Data]
Outer Header의 역할은 실제 목적지 Host까지 전달하는 것이 아니라 목적지 VTEP까지 패킷을 전달하는 것이다.
중간의 라우터들은 Outher Header만 확인하기 때문에, VXLAN Header 내부의 VNI나 실제 목적지 Host 정보를 확인하지 않는다.
오직 Outer IP Header만 확인하여 패킷을 목적지 VTEP까지 전달한다.
따라서 Underlay Network 입장에서는 일반적인 IP 패킷 하나를 라우팅하는 것과 동일하게 동작한다.
목적지 VTEP에 도착하면 Outer Header를 제거하고 원래 패킷을 복원한다.
이후 복원된 원본 패킷을 실제 목적지 Host B에게 전달한다.
VTEP은 원본 패킷을 그대로 유지한 채, 다른 VTEP까지 전달하기 위한 Outer Header를 추가하여 VXLAN 터널을 생성하기 때문에
Host A와 Host B는 서로 다른 물리 네트워크에 위치하더라도 마치 같은 네트워크에 있는 것처럼 통신할 수 있게 된다.
#VTEP은 목적지를 어떻게 찾을까?
예를 들어 VM A가 VM B에게 통신한다고 가정해보자.
그러면 VTEP은 "어떤 VTEP으로 보내야 하는가?" 를 알아야 한다.
이를 위해, VTEP은 목적지 MAC 주소가 어느 VTEP 뒤에 존재하는지 알아야 한다.
따라서 , 다음과 같은 매핑 정보를 유지한다.
MAC ↔ VTEP의 매핑 정보를 유지한다.
초기 VXLAN 방식이다.
모르면
↓
Flood
↓
응답
↓
학습
방식으로 동작한다.
현재 대부분의 환경에서는 EVPN을 사용한다.
BGP EVPN
↓
MAC 정보 공유
↓
미리 학습
즉 Flood를 최소화할 수 있다.
Underlay는 실제 패킷을 전달하는 물리 네트워크이고, Overlay는 그 위에 구축되는 논리 네트워크이며, VXLAN과 VTEP은 이를 구현하기 위한 대표적인 기술과 구성 요소이다.