846. DPDK (Data Plane Development Kit) - 커널 우회 패킷 고속 처리 폴링 구조
핵심 인사이트: 1초에 1억 개의 패킷이 쏟아져 들어오는 클라우드 서버. 랜카드가 패킷 하나를 받을 때마다 리눅스 OS(운영체제)한테 톡톡 치며 "택배 왔어요!(인터럽트)"라고 보고하면, 리눅스가 하던 일을 멈추고 문을 열어준다. 패킷 1억 개가 오면 1초에 1억 번 문을 두드린다. 서버 CPU는 문 열어주다가 뇌정지가 와서 폭발한다. 천재적인 엔지니어들이 선언했다. "야! OS한테 보고(인터럽트)하지 마! 문 두드리지 말고 냅둬! 프로그램이 알아서 0.0001초마다 현관문을 감시하면서(폴링), 택배가 쌓여있으면 한 바가지씩 푹푹 퍼담아 갈게!" 커널의 복잡한 서류 결재를 모조리 패스하고 빛의 속도로 퍼담는 흑마법, 그것이 DPDK다.
Ⅰ. 기존 리눅스 커널 네트워킹의 끔찍한 병목 현상 🌟
네트워크 속도가 10기가, 100기가로 치솟으며 리눅스 뼈대 자체가 아킬레스건이 되었습니다.
- 인터럽트(Interrupt)의 폭풍: 랜카드(NIC)에 패킷이 들어올 때마다 CPU에 전기 자극(인터럽트)을 줘서 하던 일을 멈추게 합니다. 100기가망에서는 초당 수천만 번의 인터럽트가 터져 CPU가 덜덜 떨며 기절합니다(Context Switching 과부하).
- OS 커널 스택의 무거움: 패킷이 들어오면 무조건 리눅스 커널 스페이스(밑바닥)로 들어간 뒤, TCP/IP 보안 검사를 다 받고 나서야 사용자 프로그램 스페이스(유저 공간)로 힘겹게 메모리가 복사(Copy)되어 올라옵니다. 이 복사 과정에서 서버 성능의 50%가 증발합니다.
Ⅱ. DPDK (Data Plane Development Kit)의 개념과 마법 🌟
- 개념: 인텔(Intel)이 주도하여 만든 오픈소스 라이브러리로, 패킷을 처리할 때 무겁고 느린 리눅스 OS 커널을 완전히 통째로 무시하고(우회, Kernel Bypass), 랜카드(NIC)에서 곧바로 유저 공간(사용자 프로그램)의 메모리로 데이터를 다이렉트로 쏴버리는 초고속 패킷 처리 소프트웨어 엔진입니다.
DPDK가 패킷을 빛의 속도로 쓸어 담는 2가지 흑마법 🌟
-
인터럽트(Interrupt) 금지 ➜ 폴링(Polling) 방식 무한루프 🌟
- 랜카드가 CPU에게 "패킷 왔어요"라고 알리는 알람(인터럽트)을 영구 정지시켜 버립니다.
- 대신 DPDK 애플리케이션 코어(CPU의 스레드 1개)가 24시간 내내 쉬지 않고 무한루프(100% 점유율)를 돌면서, 랜카드 바구니를 계속 쳐다보고 감시(Polling)합니다.
- 바구니에 패킷이 30개 쌓여있으면? 한 번에 뜰채로 푹 퍼서 30개를 동시에 가져옵니다. 알람 듣고 깰 필요가 없으니 딜레이가 0이 됩니다. (단점: 패킷이 없어도 CPU 코어 1개는 무한 감시를 하느라 100% 팽팽 돌아가며 전기세를 퍼먹습니다.)
-
커널 우회 (Kernel Bypass)와 제로 카피 (Zero-Copy)
- 리눅스 커널을 아예 쓰레기통에 넣습니다. 랜카드의 메모리 저장소와, 유저 프로그램의 메모리 저장소를 거대한 파이프로 딱 붙여버립니다(Hugepages 기술 등).
- 패킷이 랜카드에 들어오자마자 리눅스 결재 없이 유저 프로그램(vSwitch 등) 입구로 다이렉트로 복사 없이(Zero-Copy) 바로 꽂힙니다.
Ⅲ. DPDK의 압도적 도입 효과와 활용 (NFV의 구원자)
- 앞선 844번 문서에서 배운 가상 스위치(OVS)의 무거운 렉을 잡기 위해 이 DPDK를 입힌 OVS-DPDK를 쓰면 가상 스위치 처리 속도가 10배 폭발합니다.
- 클라우드 서버에 방화벽, L4 로드밸런서, 5G 코어망(UPF)을 소프트웨어(NFV)로 띄울 때, 이 DPDK 라이브러리를 안 쓰면 성능이 쓰레기가 되어 상용화가 불가능합니다. 현대 모든 5G 클라우드 인프라 데이터 평면(Data Plane)의 숨은 심장입니다.
📢 섹션 요약 비유: 기존 리눅스 커널 통신은 '초인종을 누르는 택배 배달'입니다. 택배(패킷)가 1개 올 때마다 기사님이 딩동!(인터럽트) 누르면, 방에서 자던 주인(CPU)이 하던 일을 멈추고 나와서 문(커널 스택)을 열고 택배를 거실(유저 스페이스)로 힘겹게 옮깁니다. 1초에 택배가 1만 개 오면 초인종이 1만 번 울려 주인이 미쳐버립니다. DPDK는 '무한 감시 뜰채 모드'입니다. 초인종 선을 아예 싹둑 잘라버립니다(인터럽트 해제). 대신 주인 한 명이 24시간 내내 잠도 안 자고 눈에 불을 켠 채 창문(폴링, Polling) 밖을 쳐다봅니다. 마당에 택배가 수백 개 우르르 쏟아지면, 뜰채로 거실 바닥(제로 카피)까지 한 번에 푹 퍼담습니다. 문 열어주는 과정(커널 결재)이 완전히 생략되어 초당 수억 개의 짐을 미친 속도로 퍼 나를 수 있는 궁극의 단순 무식 고속 노동 시스템입니다.