VXLAN과 오버레이 네트워킹 커널 처리 흐름 완벽 가이드

VXLAN(Virtual Extensible LAN)은 현대 데이터센터 네트워킹의 핵심 기술 중 하나입니다. 물리적인 네트워크 제약 없이 가상 머신(VM)이나 컨테이너를 자유롭게 이동시키고 확장할 수 있도록 해주는 오버레이 네트워킹 기술이죠. 이 가이드에서는 VXLAN의 기본 개념부터 커널 내부 처리 흐름, 실제 활용 사례, 그리고 VXLAN을 효과적으로 운영하기 위한 팁까지 자세하게 다뤄보겠습니다.

VXLAN이란 무엇일까요?

VXLAN은 간단히 말해, 기존 네트워크 위에 또 다른 네트워크를 덮어씌우는 ‘오버레이’ 기술입니다. 마치 터널처럼 작동하여, 서로 다른 네트워크 세그먼트 간에 L2 연결을 제공합니다. 여기서 핵심은 VXLAN 헤더를 사용하여 원래 패킷을 캡슐화한다는 점입니다. 이 캡슐화된 패킷은 기존 IP 네트워크를 통해 전송될 수 있습니다. VXLAN은 24비트의 VNI(VXLAN Network Identifier)를 사용하여 최대 1600만 개의 논리 네트워크를 지원할 수 있습니다. 이는 기존 VLAN의 4096개 제한을 훨씬 뛰어넘는 규모입니다.

핵심 용어

VXLAN은 왜 중요할까요?

VXLAN은 다음과 같은 이유로 현대 데이터센터에서 매우 중요합니다.

VXLAN 커널 처리 흐름 상세 분석

VXLAN의 작동 방식을 이해하려면 커널 내부의 데이터 처리 흐름을 파악하는 것이 중요합니다. 여기서는 패킷이 VTEP에서 어떻게 캡슐화되고, 네트워크를 통해 전송되며, 다시 VTEP에서 캡슐화 해제되는지 살펴보겠습니다.

1. 캡슐화 과정 (Encapsulation)

VM이 네트워크를 통해 패킷을 보내면, 해당 패킷은 먼저 VTEP에 도달합니다. VTEP는 다음과 같은 단계를 거쳐 패킷을 캡슐화합니다.

    • Inner Header 분석: VTEP는 원래 패킷(Inner Header)의 목적지 MAC 주소를 확인합니다.
    • VNI 결정: 목적지 MAC 주소를 기반으로 해당 패킷이 속해야 할 VNI를 결정합니다. 이는 일반적으로 MAC 주소와 VNI 간의 매핑 테이블을 통해 이루어집니다.
    • Outer Header 생성: VTEP는 다음과 같은 정보를 포함하는 새로운 헤더(Outer Header)를 생성합니다.
      • Outer Ethernet Header: VTEP의 MAC 주소를 소스 MAC 주소로, 목적지 VTEP의 MAC 주소를 목적지 MAC 주소로 설정합니다.
      • Outer IP Header: VTEP의 IP 주소를 소스 IP 주소로, 목적지 VTEP의 IP 주소를 목적지 IP 주소로 설정합니다.
      • UDP Header: VXLAN은 일반적으로 UDP를 전송 프로토콜로 사용합니다. 잘 알려진 VXLAN 포트(일반적으로 4789)를 사용합니다.
      • VXLAN Header: VNI 정보를 포함합니다.
    • 패킷 캡슐화: VTEP는 Outer Header를 Inner Header 앞에 추가하여 전체 패킷을 캡슐화합니다.

2. 전송 과정

캡슐화된 패킷은 이제 기존 IP 네트워크를 통해 목적지 VTEP로 전송됩니다. 이 과정은 일반적인 IP 패킷 전송과 동일합니다. 네트워크 스위치와 라우터는 Outer IP Header의 목적지 IP 주소를 기반으로 패킷을 라우팅합니다.

3. 캡슐화 해제 과정 (Decapsulation)

목적지 VTEP는 패킷을 수신하면 다음과 같은 단계를 거쳐 캡슐화를 해제합니다.

    • Outer Header 제거: VTEP는 Outer Ethernet, IP, UDP, VXLAN 헤더를 제거합니다.
    • VNI 확인: VXLAN 헤더에서 VNI를 확인하여 패킷이 올바른 VXLAN 세그먼트에 속하는지 확인합니다.
    • Inner Header 전달: 캡슐화 해제된 원래 패킷(Inner Header)을 해당 VM으로 전달합니다.

리눅스 커널에서의 VXLAN 구현

리눅스 커널은 VXLAN을 기본적으로 지원합니다. `iproute2` 유틸리티를 사용하여 VXLAN 인터페이스를 설정하고 관리할 수 있습니다. 다음은 VXLAN 인터페이스를 생성하는 예시입니다.



ip link add vxlan0 type vxlan id 1000 dstport 4789 dev eth0

ip link set vxlan0 up

ip addr add 192.168.10.1/24 dev vxlan0

위 명령어는 다음과 같은 작업을 수행합니다.

리눅스 커널은 또한 FDB(Forwarding Database)를 사용하여 MAC 주소와 VTEP 간의 매핑을 관리합니다. FDB는 `bridge fdb` 명령어를 사용하여 관리할 수 있습니다.



bridge fdb add 00:11:22:33:44:55 dev vxlan0 dst 10.0.0.1

위 명령어는 MAC 주소 `00:11:22:33:44:55`를 VTEP IP 주소 `10.0.0.1`에 연결합니다. 이렇게 하면 `00:11:22:33:44:55`으로 향하는 트래픽이 `10.0.0.1`로 캡슐화되어 전송됩니다.

VXLAN 활용 사례

VXLAN은 다양한 환경에서 활용될 수 있습니다. 몇 가지 대표적인 사례는 다음과 같습니다.

VXLAN 운영 팁

VXLAN을 안정적이고 효율적으로 운영하기 위한 몇 가지 팁을 소개합니다.

흔한 오해와 사실 관계

VXLAN에 대한 몇 가지 흔한 오해를 살펴보고, 사실 관계를 명확히 해보겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다