본문 바로가기
Routing/VXLAN-EVPN

[VXLAN] VXLAN 패킷 구조 완전 해부

by chan10 2025. 10. 26.

VXLAN은 기존 이더넷 프레임을 캡슐화 구조(Encapsulation) 로 감싸서 Underlay 네트워크 위에서 전송하는 데 있으며, 이 과정에서 VXLAN Header, UDP Header, IP Header 등이 추가되어 원래의 프레임이 목적지까지 전달됩니다.

 

캡슐화 동작 흐름 🧩

  • 호스트가 (Inner)Ethernet 프레임 생성 (동일 세그먼트 통신)
  • 송신 Leaf의 VTEP이 원본 프레임을 수신 → VXLAN 헤더 + UDP + IP + Outer Ethernet을 붙여 캡슐화.
  • Underlay 라우팅으로 원격 VTEP의 IP까지 전달 (Underlay ECMP 가능)
  • 수신 Leaf의 VTEP의 디캡슐화 (Outer Ethernet - IP - UDP - VXLAN 제거) → 원래 Inner 프레임을 호스트에 전달.

 

헤더별 상세 해부 📌

 

[Outer Ethernet Header]

원본 Layer 2 Ethernet 프레임의 헤더와 페이로드

  • `Scr MAC Address` : 송신 VTEP의 물리적 네트워크 인터페이스 MAC 주소입니다.
  • `Dst MAC Address` : 다음 홉 라우터(스파인 등)의 MAC 주소입니다.
  • `(Optional)VLAN ID Tag` : VLAN Tag ID(+4바이트 오버헤드), VLAN Tagging 환경일 경우 추가됩니다.
  • `Ethernet Type` : encapsulated payload가 IPv4 패킷임을 나타내는 Ethertype(0x0800)이 사용됩니다.

[Outer IP Header]

VXLAN 캡슐화된 패킷을 전달하는 실제 IP 네트워크 헤더

  • `Src IP` : 송신 VTEP의 Underlay IP
  • `Dst IP` : 수신 VTEP의 Underlay IP, 유니캐스트 또는 멀티캐스트 그룹 IP가 될 수 있습니다.
  • `Protocol` : UDP(0x11)를 명확히 지정해야, 수신장비가 VXLAN 패킷임을 인식하고 UDP 헤더 뒤의 VXLAN 헤더를 파악할 수 있습니다.

[Outer UDP Header]

VXLAN 패킷 전송에 사용되는 UDP 헤더 (기본 포트: 4789)

  • `Scr Port` : 보통 임의 값을 사용하지만, 패킷 분산(ECMP) 등 네트워크 로드 밸런싱에 활용하기 위해 내부 프레임의 해시값 등으로 설정하기도 합니다.
  • `VXLAN Port (Destination Port)` : 4789(표준 VXLAN)
  • `Checksum` : UDP 표준 필드로 패킷 무결성 체크.

[VXLAN Header]

주요 필드로 24비트 VNI(VXLAN Network Identifier)가 포함됨

  • `VXLAN Flags` : 현재 3번째 비트만 사용되며`(VNI bit)`, 나머지는 예약되어 0으로 표시합니다. 유효한 VNI의 경우 `VNI bit`는 `1`로 설정됩니다.
  • `VNI` : VXLAN 네트워크 ID로 VXLAN의 주요 필드, 약 1,600만 개의(24bit) VXLAN 세그먼트를 식별할 수 있습니다.
  • `Reserved` : 24비트 및 8비트로 구성된 예약된 필드로, 0으로 설정됩니다.

 

‼️ 오버헤드 & MTU 계산 ‼️

VXLAN은 기존 이더넷 프레임을 UDP/IP 패킷으로 캡슐화하므로, 기존 패킷에 추가적인 헤더가 붙어 전송됩니다. 이로 인해 패킷 크기가 커지며, 이 크기만큼 MTU를 조정해야 합니다.

  • 총 추가 오버헤드(IPv4 기준): `50byte` (8 + 8 + 20 + 14) (VLAN 태그 시 +4 → 54byte)
  • 총 추가 오버헤드(IPv6 기준): `70byte` (8 + 8 + 40 + 14) (VLAN 태그 시 +4 → 74byte)

Underlay MTU ≥ 1550byte(IPv4, 태그 無) 또는 ≥ 1600byte 이상으로 조정해 패킷 단편화나 손실 없는 통신이 이루어 질수 있습니다. 점보 프레임(예: 9000byte)을 사용하면 단편화 리스크가 줄어듭니다.

 

[VXLAN과 Packet Fragmentation]

  • Packet Fragmentation (패킷 분할)
    • VXLAN 패킷 자체는 VTEP에 의해 분할(fragmentation)되지 않습니다. VXLAN을 캡슐화하는 VTEP 장비는 내부에서 IP 분할을 수행하지 않는 것이 RFC 7348에서도 명시되어 있습니다.
    • 캡슐화된 VXLAN 패킷의 크기가 네트워크 경로상의 MTU를 초과하면, 중간 라우터에서 IP 수준의 패킷을 분할할 수 있습니다.
    • 목적지 VTEP는 분할된 IP 패킷을 수신하여 재조립 후 VXLAN 디캡슐레이션을 수행합니다.
  • 주의 사항
    • VXLAN의 캡슐화 오버헤드(약 50바이트)를 감안해 MTU를 적절히 설정하지 않으면, 큰 패킷이 중간 경로에서 분할되거나 드롭될 수 있습니다.
    • 경로 MTU 탐지(Path MTU Discovery)를 통해 MTU를 조정하는 것도 한 방법입니다.
    • 만약 MTU 미조정 상태라면, VM 레벨 등 상위 계층에서 IP 패킷 분할(fragmentation)이 발생하여 네트워크 성능 저하나 패킷 손실 위험이 생길 수 있습니다.
    • Underlay 네트워크에서 MTU 조정이 불가능한 경우 출발지 Host(서버, VM 등)에서 MTU를 낮춰 패킷을 보내는 방법도 있습니다. → VXLAN 오버헤드(약 50바이트)만큼 MTU 감소 → 1450byte

 

 

[참고 사이트]

https://datatracker.ietf.org/doc/html/rfc7348

https://www.arista.com/assets/data/pdf/Whitepapers/Arista_Networks_VXLAN_White_Paper.pdf

https://www.cisco.com/en/US/docs/switches/datacenter/nexus1000/kvm/config_guide/vxlan/b_VXLAN_Configuration_Guide_for_KVM_Release_x_chapter_01.pdf

'Routing > VXLAN-EVPN' 카테고리의 다른 글

[VXLAN] VXLAN 구조와 구성 요소  (0) 2025.10.20
[VXLAN] VXLAN(Virtual eXtention LAN)이란?  (0) 2025.10.11