FD.io 프로젝트의 핵심 기술로, Vector Packet Processing(VPP)에 대해 소개해보고자 한다.
VPP란 무엇인가
FD.io의 VPP(Vector Packet Processor)는 벡터 패킷 처리 기술을 활용하여 고성능 패킷 처리를 지원하는 가상 라우터/스위치이다. VPP는 L2에서 L4까지의 네트워크 계층 기능을 제공하며, 네트워크 인프라에서 빠르고 효율적인 패킷 처리를 가능하게 한다. 이 기술은 FD.io 프로젝트의 오픈소스로 공개되었으며, 시스코(Cisco)도 이 프로젝트에 적극적으로 참여하고 있다.

VPP는 시스코가 20년 넘게 사용해 온 검증된 기술로, 약 3년 전에 오픈소스로 공개되었다. 네트워크 카드를 통해 데이터 플레인에서 패킷을 전달하는 데 매우 적합한 기술이며, 오픈소스 커뮤니티에서 다양한 네트워크 관련 프로젝트에서 활용되고 있다. VPP는 터널링 프로토콜을 지원하며, 네트워킹 기능과 더불어 여러 고급 기능들을 제공한다.
이 기술의 핵심은 패킷 처리 그래프(packet processing graph)이다. 이 그래프를 통해 네트워크 패킷을 벡터 단위로 처리하여, 효율성과 성능을 극대화한다. 한 번에 여러 패킷을 처리하는 벡터 방식 덕분에 CPU 리소스를 효과적으로 활용할 수 있으며, 네트워크 인프라에서 발생하는 지연을 최소화할 수 있다.
VPP는 특히 고성능 네트워크 장비나 대규모 데이터 센터에서 유용하며, 사용자 정의 패킷 처리 파이프라인을 구성할 수 있는 유연성을 제공한다. 이러한 특성 덕분에 VPP는 네트워크 카드 간의 빠른 패킷 전송을 필요로 하는 다양한 환경에서 탁월한 성능을 발휘한다. 오픈소스 데이터 플레인 솔루션으로서, 다양한 네트워크 요구 사항을 충족시키는 데 있어 매우 강력한 도구로 자리 잡고 있다.
VPP 라이브러리는 DPDK를 기반으로 동작한다. 그렇다면 DPDK는 무엇일까? DPDK는 네트워크 성능을 극대화하기 위한 고성능 패킷 처리 기술로, VPP의 중요한 구성 요소 중 하나이다. 이제 DPDK에 대해 더 자세히 알아보자.
DPDK란 무엇인가

VPP(Vector Packet Processor)는 DPDK(Data Plane Development Kit)와 함께 사용될 때 최상의 성능을 발휘한다. DPDK는 인텔에서 개발한 고성능 패킷 처리 소프트웨어로, 고속의 패킷 처리를 위한 라이브러리와 드라이버를 제공하며 네트워크 성능을 극대화하기 위한 핵심 기술이다.
DPDK 기반 프로그램은 일반적으로 NIC당 1~2개의 CPU 코어가 할당된다. 해당 CPU 코어는 트래픽의 유무와 관계없이 100%로 작동하여 지속적으로 패킷을 처리하는 방식이다. 이는 매우 높은 처리 성능을 제공하지만, CPU 자원을 많이 사용하는 만큼 상황에 따라 효율적이지 않을 수 있다.
DPDK는 네트워크 인터페이스 카드(NIC)와 직접 통신하여 커널을 우회(kernel bypass)하고, 사용자 공간에서 패킷을 처리하는 기능을 제공한다. 이는 패킷 처리가 커널에서 발생하는 지연을 최소화하고, 전송 속도를 대폭 향상시켜준다. 커널 우회를 통해 DPDK는 고속 패킷 처리 성능을 제공하는데, 이는 polling 모드와 밀접하게 연관되어 있다.
DPDK가 사용하는 polling 모드(polling mode)는 패킷을 수신할 때 인터럽트 기반이 아닌, 지속적으로 NIC에서 패킷을 확인하는 방식이다. 일반적인 네트워크 스택은 인터럽트를 사용하여 NIC가 패킷을 수신할 때마다 CPU가 처리 요청을 받는다. 그러나 DPDK는 이러한 방식 대신, CPU가 지속적으로 NIC의 수신 큐를 확인하여 패킷이 도착하면 즉시 처리하는 방식을 택한다. 이를 통해 패킷이 도착하는 즉시 처리 가능하며, 인터럽트 처리로 인한 오버헤드를 줄인다.
이러한 polling 모드는 CPU 자원을 많이 사용하는 특성이 있다. CPU 코어는 트래픽이 있든 없든 NIC를 지속적으로 확인하기 때문에, 트래픽이 적은 환경에서는 비효율적일 수 있다. 하지만 고속 패킷 처리가 필요한 환경에서는 CPU가 NIC를 끊임없이 모니터링하는 것이 성능을 극대화할 수 있다. 이러한 이유로 DPDK는 CPU 코어당 100%의 자원을 활용하지만, 매우 빠른 패킷 처리 속도를 보장한다.
그러나 DPDK 사용에는 몇 가지 제한이 있다. 예를 들어, CPU 코어가 적은 환경에서는 과도한 리소스 소모로 인해 성능이 저하될 수 있으며, DPDK가 지원하는 네트워크 카드가 제한적이다(e.g., Intel smartNIC). 또한, 커널에서 제공하는 다양한 기능을 애플리케이션에서 처리해야 하므로 시스템 구성이 복잡해질 수 있다.
이 방식은 네트워크 성능을 극대화하며, 특히 고속 데이터 전송 및 수신이 요구되는 네트워크 환경에서 큰 이점을 제공한다. DPDK는 네트워크 트래픽의 부하가 높은 환경에서 특히 유리하며, 고성능이 요구되는 데이터 센터나 네트워크 장비에서 자주 사용된다.
VPP와 DPDK의 조합은 네트워크 성능을 크게 향상시키는 데 최적화된 기술이다. DPDK는 커널을 우회하여 패킷을 처리하고, VPP는 이를 바탕으로 고속으로 복잡한 네트워크 기능을 실행한다. 이 둘을 함께 사용하면 대규모 트래픽 환경에서도 지연 없이 빠른 속도를 유지할 수 있어, 데이터 센터나 고성능 네트워크 장비에서 뛰어난 성능을 발휘한다. 결과적으로, VPP와 DPDK는 효율성과 속도 면에서 매우 강력한 솔루션이라고 할 수 있다.
1. 대규모 메타버스 서비스 지원을 위한 VPP 기반 하이브리드 연결 기술
2. 대규모 메타버스 서비스 지원을 위한 VPP NAT44 로드 밸런싱 가중치 분석
위 두 개의 논문은 VPP와 DPDK를 활용한 연구 결과를 다루고 있으며, 고성능 네트워크 패킷 처리에 대한 심도 있는 내용을 포함하고 있다. VPP의 구조와 성능에 대해 더 자세히 알고 싶다면 이 논문들을 추천한다. (사실 내가 작성한 논문임 ㅎㅎ)
'Network' 카테고리의 다른 글
| HPC(High-Performance Computing) (0) | 2025.02.11 |
|---|---|
| HTTP/3 (0) | 2024.09.27 |
| gRPC (Google Remote Procedure Call) (1) | 2024.09.24 |
| SmartNIC (0) | 2024.09.19 |