DPU와 SmartNIC, 서버 CPU가 넘긴 일을 맡는 칩
동네 병원에서 의사가 진료만 하는 것이 아니라 접수와 수납, 보험 서류, 처방전 전달까지 직접 한다고 상상해 보세요. 환자가 늘수록 진료 시간은 줄고 대기실은 길어질 겁니다. 그래서 규모가 있는 병원은 원무과를 따로 두어 의사가 진료에만 집중하게 하죠.
서버 안에서 이 원무과 역할을 맡는 칩이 DPU와 SmartNIC입니다. 서버 CPU가 애플리케이션 연산에 집중하도록, 네트워크와 스토리지, 보안 같은 인프라 작업을 따로 떼어 처리합니다.
비유와 다른 점도 있습니다. 원무과는 접수만 돕지만 DPU는 자체 코어와 운영체제를 갖춘 작은 컴퓨터여서, 서버를 빌려 쓰는 쪽과 서버를 운영하는 쪽 사이의 경계로도 쓰입니다.
서버 CPU가 인프라 작업에 발목 잡히는 이유
서버 CPU는 어떤 프로그램이든 돌릴 수 있는 범용 연산 장치입니다. 그래서 웹 서버나 데이터베이스 같은 본업 외에도, 네트워크 패킷을 받아 분류하고 가상 머신 사이의 통신 규칙을 적용하고 데이터를 암호화하는 일까지 소프트웨어로 처리해 왔습니다.
문제는 네트워크 속도가 빨라질수록 이 곁다리 일이 함께 커진다는 점입니다. 가상의 숫자로 얼마나 커지는지 계산해 보겠습니다.
패킷 처리 부담 계산 예시 (가상 수치, 이더넷 헤더와 프레임 간격은 무시한 단순 계산)
- 100 Gb/s 링크에 1,500바이트 패킷이 가득 들어오면: 1,500 × 8 = 12,000비트이고, 100 × 10⁹ ÷ 12,000 ≈ 8.3 × 10⁶, 즉 초당 약 830만 패킷
- 코어 하나가 3 GHz로 돌고 패킷 하나에 1,000 사이클을 쓴다고 가정하면: 3 × 10⁹ ÷ 1,000 = 초당 300만 패킷
- 830만 ÷ 300만 ≈ 2.8이므로, 코어 약 3개가 패킷 처리에만 묶임
패킷당 사이클 수는 소프트웨어 구성에 따라 크게 달라지므로 숫자 자체보다 흐름이 중요합니다. 링크 속도가 두 배가 되면 필요한 코어도 두 배로 늘고, 패킷이 작아지면 개수는 더 많아집니다.
서버를 임대하는 사업자에게 코어는 곧 판매할 수 있는 자원입니다. 인프라 일에 쓰이는 코어는 손실로 보이기 때문에, 이 작업을 CPU 밖으로 옮기려는 요구가 커졌습니다.
일반 NIC에서 SmartNIC으로, 오프로드가 넓어진 과정
NIC(Network Interface Controller, 네트워크 인터페이스 컨트롤러)는 서버를 네트워크에 연결하는 카드입니다. 일반 NIC도 체크섬 계산처럼 정해진 몇 가지 일은 하드웨어로 덜어 주는데, 이렇게 CPU의 일을 장치로 넘기는 것을 오프로드(offload)라고 합니다.
SmartNIC은 이 오프로드의 범위를 프로그램으로 바꿀 수 있게 넓힌 NIC입니다. 패킷 분류와 전달 규칙, 터널 처리, 암호화 같은 일을 카드 위의 전용 처리 파이프라인이나 FPGA, 소형 코어가 맡습니다.
DPU와 SmartNIC이 등장하기 전에는 이런 규칙을 서버 CPU의 소프트웨어 스위치가 처리했습니다. 규칙을 하드웨어 경로로 옮기면 CPU는 처음 보는 흐름처럼 예외적인 경우에만 관여하면 됩니다.
DPU의 구조, 네트워크 포트 뒤에 작은 컴퓨터를 두다
DPU(Data Processing Unit, 데이터 처리 장치)는 네트워크 인터페이스에 여러 개의 범용 코어와 하드웨어 가속기, 자체 메모리를 한 칩에 묶은 구조입니다. 암호화, 압축, 패킷 매칭 같은 반복 작업은 가속기가 맡고, 정책 결정처럼 유연성이 필요한 일은 범용 코어가 소프트웨어로 처리합니다.
DPU는 서버와 PCIe로 연결되지만 자체 운영체제를 따로 돌릴 수 있습니다. 호스트 CPU가 고객의 프로그램으로 가득 차 있어도 DPU 안의 인프라 소프트웨어는 분리되어 동작하므로, 보안 경계를 나누는 데에도 쓰입니다.
DPU가 있는 서버에서 수신 패킷이 처리되는 일반적인 경로
- 패킷이 DPU의 네트워크 포트로 들어옵니다.
- 하드웨어 파서와 매칭 엔진이 헤더를 읽어 어느 흐름에 속하는지 가려냅니다.
- 이미 규칙이 있는 흐름이면 가속기가 터널 해제, 방화벽 검사, 복호화를 하드웨어로 처리합니다.
- 처음 보는 흐름이면 DPU의 범용 코어가 정책을 확인해 규칙을 정하고 하드웨어에 등록합니다.
- 처리가 끝난 데이터가 DMA로 호스트 메모리에 직접 쓰입니다.
- 호스트 CPU는 정리된 데이터를 받아 애플리케이션 연산만 합니다.
3번과 4번의 분업이 핵심입니다. 자주 반복되는 일은 빠른 하드웨어 경로로, 드물고 복잡한 판단은 유연한 코어로 나눕니다.
스토리지와 보안까지 넘기는 이유
인프라 작업은 네트워크 패킷에만 있지 않습니다. 네트워크 너머의 원격 스토리지를 서버의 로컬 디스크처럼 보이게 하는 일, 저장 데이터와 전송 데이터의 암호화, 접근 정책 검사도 CPU에 부담이 됩니다. DPU는 이 일들을 같은 칩 안의 가속기와 코어가 맡습니다.
이렇게 하면 호스트에는 평범한 디스크처럼 보이는 장치가 나타나고, 그 뒤의 네트워크 스토리지 처리는 DPU가 맡습니다. 호스트 운영체제에 문제가 생겨도 DPU 안의 정책은 별도 영역에서 유지되도록 설계할 수 있다는 점이 보안 쪽의 장점입니다.
DPU를 쓰면 얻는 것과 치르는 것
얻는 것은 세 가지로 정리됩니다. 호스트 CPU 코어를 본업에 돌려줄 수 있고, 인프라 처리 때문에 생기던 지연 시간의 들쭉날쭉함이 줄며, 고객 영역과 인프라 영역을 분리할 수 있습니다.
치르는 것도 분명합니다. 카드 하나의 비용과 전력이 추가되고, DPU 위에서 돌 인프라 소프트웨어를 따로 개발하고 운영해야 합니다. 카드마다 개발 환경이 달라 소프트웨어를 옮겨 쓰기 어려울 수도 있습니다.
그래서 DPU와 SmartNIC은 모든 서버에 넣는 부품이 아니라, 네트워크 속도가 높고 코어 하나가 곧 매출인 환경에서 효과가 큰 부품입니다. 도입 여부는 사업자마다 계산이 다릅니다.
DPU와 SmartNIC을 둘러싼 흔한 오해
DPU가 서버 CPU를 대체한다는 이해는 정확하지 않습니다. DPU의 범용 코어는 인프라 작업을 위한 것이고, 데이터베이스나 AI 학습 같은 본업은 여전히 서버 CPU와 가속기가 맡습니다.
SmartNIC과 DPU는 칼로 자르듯 구분되는 제품군이다라는 생각도 조심해야 합니다. 두 용어의 경계는 업계에서 고정되어 있지 않아서, 제품 자료를 볼 때는 이름보다 범용 코어가 있는지, 가속기가 어떤 일을 하는지, 호스트와 분리된 운영체제를 돌릴 수 있는지를 확인하는 편이 정확합니다.
서버 CPU와 SmartNIC, DPU 비교 표
| 구분 | 서버 CPU | SmartNIC | DPU |
|---|---|---|---|
| 주된 역할 | 애플리케이션 범용 연산 | 패킷 처리 등 네트워크 오프로드 | 네트워크, 스토리지, 보안 인프라 작업의 분리 |
| 처리 방식 | 소프트웨어, 코어 수와 클록으로 성능 확보 | 전용 파이프라인이나 FPGA, 소형 코어 | 하드웨어 가속기와 범용 코어의 조합 |
| 유연성 | 가장 높음 | 프로그래밍할 수 있는 범위 안에서 | 범용 코어가 있어 높은 편 |
| 호스트와의 관계 | 호스트 그 자체 | 호스트를 돕는 보조 장치 | 호스트와 분리해 독립 운영체제도 가능 |
| 한계 | 인프라 일이 본업 코어를 잠식 | 프로그래밍 범위와 개발 난도 | 비용, 전력, 별도 소프트웨어 운영 |
핵심 정리
서버 CPU는 범용 연산을, SmartNIC은 네트워크 처리의 오프로드를, DPU는 네트워크와 스토리지와 보안 인프라 작업을 호스트에서 떼어 맡습니다. DPU와 SmartNIC의 차이는 얼마나 많은 일을 얼마나 유연하게 넘기느냐에 있습니다.
병원 비유로 돌아가 보면, 원무과가 생겼다고 의사가 필요 없어지지는 않지만 의사의 진료 시간은 늘어납니다. 서버 구성을 볼 때는 코어 수만 세지 말고, 그중 얼마가 인프라 일에 묶여 있는지부터 물어보면 구조가 읽힙니다.
면접 대비 질문
면접 대비 질문데이터센터 서버에 DPU를 도입하는 이유와, 서버 CPU 및 SmartNIC과의 역할 차이를 설명해 보세요.
[답변 포인트] 네트워크 속도가 빨라질수록 패킷 처리와 가상 스위치, 암호화, 스토리지 처리 같은 인프라 작업이 호스트 코어를 점점 더 많이 쓴다는 점으로 시작합니다. SmartNIC은 이 가운데 패킷 처리를 하드웨어로 오프로드하고, DPU는 범용 코어와 가속기, 독립된 운영체제까지 갖춰 인프라 전체를 호스트에서 분리한다고 구분합니다. 한계로 비용과 전력, 별도 소프트웨어 운영 부담, 모든 환경에 필요하지는 않다는 점까지 짚으면 좋습니다.









