본문 바로가기
카테고리 없음

XDP(eXpress Data Path)는 왜 Linux 패킷 처리를 빠르게 만들까

by by_merry 2026. 5. 28.

고성능 Linux 네트워크 구조를 공부하다 보면 어느 순간부터는 “패킷을 CPU까지 보내는 과정 자체가 너무 무겁다”는 이야기를 자주 보게 된다. 나도 처음에는 인터넷 패킷이 네트워크 카드(NIC)를 통해 들어오면 운영체제 커널이 처리하는 게 당연한 구조라고 생각했었다. 실제로 일반적인 Linux 서버에서는 패킷이 NIC를 지나 Linux 커널 네트워크 스택으로 들어오고, 그다음 소켓(Socket) 계층을 통해 사용자 프로그램으로 전달된다. 그런데 DPDK, eBPF, RDMA 같은 최신 서버 기술 흐름을 보다 보니까 현대 데이터센터에서는 이 과정 자체를 최대한 짧게 만들기 위해 엄청난 최적화가 이루어지고 있다는 걸 알게 됐다. 그리고 그 흐름 속에서 등장한 대표적인 Linux 네트워크 기술 중 하나가 바로 XDP(eXpress Data Path)다. 처음 이름만 들었을 때는 그냥 네트워크 가속 기능 정도로 생각했는데, 구조를 이해하고 나니까 왜 클라우드 기업과 CDN 업체들이 XDP를 굉장히 중요하게 보는지 조금 감이 오기 시작했다. 특히 인상 깊었던 건 XDP가 단순히 “빠른 네트워크 처리” 수준이 아니라, Linux 커널 네트워크 스택에 들어가기 전 단계에서 패킷을 처리하려 한다는 점이었다. 즉 패킷이 운영체제 깊숙이 들어가기 전에 미리 필터링하고 버릴 수 있다는 개념 자체가 굉장히 충격적으로 느껴졌다.

 

기존 Linux 네트워크 스택은 생각보다 굉장히 무거웠다

일반적인 Linux 네트워크 구조에서는 패킷 하나가 들어와도 꽤 많은 과정을 거친다. 네트워크 카드(NIC)가 패킷을 받으면 DMA를 통해 메모리에 데이터를 저장하고, 인터럽트나 NAPI 구조를 통해 CPU가 이를 처리한다. 이후 Linux 커널 네트워크 스택 안에서 패킷 검증, 라우팅, 방화벽 처리, 소켓 전달 같은 여러 단계가 진행된다. 처음에는 나도 “운영체제가 원래 이런 걸 다 처리해야 하는 거 아닌가?”라고 생각했는데, 초고속 네트워크 환경에서는 이 과정 자체가 엄청난 CPU 부담이 될 수 있다고 한다. 특히 초당 수백만 개 패킷이 들어오는 데이터센터 환경에서는 패킷 하나하나가 커널 깊숙이 들어오는 것만으로도 CPU 자원을 상당히 사용하게 된다. 문제는 실제 서비스 입장에서는 이런 패킷들 중 상당수가 굳이 애플리케이션까지 갈 필요 없는 경우도 많다는 점이었다. 예를 들어 DDoS 공격 패킷이나 특정 조건에 맞지 않는 요청들은 가능한 빨리 버리는 게 훨씬 효율적이다. 그런데 예전 방식에서는 이런 패킷들도 일단 Linux 네트워크 스택 깊숙이 들어온 뒤 처리되는 경우가 많았다고 한다. 나도 처음에는 “그냥 CPU가 필터링하면 되는 거 아닌가?”라고 생각했는데, 최신 데이터센터에서는 패킷 양 자체가 너무 많아서 커널 내부로 들어오는 과정만으로도 병목이 생길 수 있다고 한다. 결국 현대 서버는 단순 계산 속도보다 “불필요한 패킷을 얼마나 빨리 제거할 수 있는가”가 훨씬 중요한 시대가 되고 있었던 것이다.

XDP는 패킷이 커널 깊숙이 들어오기 전에 바로 처리한다

XDP의 핵심은 굉장히 흥미롭다. 바로 네트워크 패킷이 Linux 커널 네트워크 스택 깊숙이 들어가기 전에 아주 초기 단계에서 처리할 수 있게 만든 구조라는 점이다. 쉽게 말하면 NIC 근처에서 패킷을 바로 검사하고, 필요 없는 패킷은 즉시 버리거나 특정 방향으로 전달할 수 있게 만드는 것이다. 특히 XDP는 eBPF 기반으로 동작하기 때문에 커널 코드를 직접 수정하지 않고도 매우 빠른 패킷 처리 로직을 실행할 수 있다고 한다. 처음에는 나도 “커널 들어오기 전에 패킷 처리한다고 그렇게 큰 차이가 나나?” 싶었는데, 실제로는 패킷이 Linux 네트워크 스택 전체를 거치지 않게 만드는 것만으로도 엄청난 CPU 절약 효과를 얻을 수 있다고 한다. 예를 들어 DDoS 공격 상황에서는 수많은 악성 패킷이 계속 들어오는데, 예전 방식에서는 이 패킷들이 커널 스택을 상당 부분 거친 뒤에야 차단될 수도 있었다. 하지만 XDP는 NIC 가까운 단계에서 바로 필터링할 수 있기 때문에 CPU 부담을 훨씬 줄일 수 있다고 한다. 나도 DPDK처럼 커널 자체를 우회하는 구조만이 가장 빠른 줄 알았는데, XDP는 Linux 커널 안에 있으면서도 굉장히 빠른 패킷 처리를 가능하게 만든다는 점이 꽤 인상 깊었다. 특히 클라우드와 CDN 환경처럼 엄청난 양의 패킷을 처리해야 하는 서버에서는 이런 초기 단계 패킷 필터링이 매우 중요해지고 있다고 한다. 결국 현대 Linux 네트워크 최적화는 단순히 패킷을 빨리 처리하는 수준이 아니라, “불필요한 패킷을 얼마나 빨리 제거할 수 있는가”로까지 발전하고 있었던 것이다.

그래서 XDP는 현대 클라우드와 데이터센터에서 중요해지고 있다

지금까지 공부했던 NAPI, Interrupt Coalescing, DPDK, eBPF 같은 기술들을 보면 공통 흐름이 하나씩 보인다. 바로 CPU와 커널이 불필요한 작업을 하지 않게 만들고, 데이터 흐름 자체를 최대한 단순화하려는 방향이다. XDP 역시 완전히 같은 흐름 위에 있다. 특히 현대 데이터센터는 엄청난 네트워크 트래픽과 보안 공격, 마이크로서비스 통신을 동시에 처리해야 하기 때문에 패킷 처리 효율이 굉장히 중요해졌다고 한다. 그래서 클라우드 기업들은 XDP를 이용해서 초고속 패킷 필터링, 로드 밸런싱, DDoS 방어 같은 기능을 구현하기도 한다고 한다. 나도 처음에는 Linux 커널 네트워크 구조가 이미 완성된 기술인 줄 알았는데, 실제로는 지금도 계속 “패킷을 더 빠르게, 더 적은 CPU로 처리하기 위한 경쟁”이 이어지고 있다는 게 꽤 흥미로웠다. 특히 XDP는 Linux 커널 자체를 점점 더 프로그래머블하고 네트워크 친화적인 플랫폼으로 만들고 있다는 느낌이 강했다. 예전에는 운영체제가 단순히 하드웨어 관리만 하는 존재처럼 느껴졌는데, 지금은 거의 초고속 네트워크 처리 엔진처럼 발전하고 있는 것이다. 결국 현대 서버 최적화는 CPU 계산 성능 경쟁이 아니라, 패킷과 데이터를 얼마나 빠르고 효율적으로 흐르게 만들 수 있는가의 경쟁으로 계속 진화하고 있었던 것이다.

한 줄로 정리하면 XDP는 Linux 네트워크 패킷을 커널 네트워크 스택 깊숙이 들어가기 전에 아주 초기 단계에서 처리할 수 있게 만든 eBPF 기반 구조이며, CPU 부담을 줄이고 초고속 패킷 필터링과 DDoS 방어를 가능하게 하는 최신 Linux 네트워크 최적화 기술이다.