Linux Checksum Offload란 무엇이며 RX/TX Checksum 설정 및 성능 최적화 방법

Linux 서버에서 대량의 네트워크 트래픽을 처리할 때 CPU는 TCP, UDP, IP 패킷마다 Checksum 값을 계산하고 검증해야 합니다. 트래픽이 많아질수록 이러한 계산 작업은 CPU 사용률을 높이는 원인이 됩니다.

이를 해결하기 위해 대부분의 최신 네트워크 카드(NIC)는 Checksum Offload 기능을 제공합니다. Checksum Offload는 CPU 대신 NIC가 Checksum 계산과 검증을 수행하여 CPU 부하를 줄이고 네트워크 성능을 향상시키는 기술입니다.

이번 글에서는 Checksum Offload의 개념, RX/TX Checksum 차이점, 설정 방법, 성능 확인 방법 및 실무 활용 방법을 자세히 알아보겠습니다.

Checksum Offload란?

Checksum Offload는 네트워크 카드가 IP, TCP, UDP 패킷의 Checksum 계산과 검증을 대신 수행하는 기능입니다.

동작 과정은 다음과 같습니다.

Application
      │
      ▼
Linux Kernel
      │
      ▼
NIC
      │
Checksum 계산
또는 검증
      │
      ▼
Network

CPU는 Checksum 연산을 수행하지 않아도 되므로 다른 작업에 자원을 사용할 수 있습니다.

RX Checksum과 TX Checksum의 차이

Checksum Offload는 두 가지 기능으로 나뉩니다.

기능설명
RX Checksum Offload수신한 패킷의 Checksum 검증을 NIC가 수행
TX Checksum Offload송신하는 패킷의 Checksum 계산을 NIC가 수행

일반적으로 두 기능 모두 활성화하는 것이 권장됩니다.

Checksum Offload를 사용하는 이유

다음과 같은 환경에서 효과가 큽니다.

  • Nginx 웹 서버
  • Apache 서버
  • API 서버
  • Kubernetes
  • Docker Host
  • NAS
  • Redis
  • MySQL
  • PostgreSQL
  • CDN 서버

실무에서는 대부분 기본 활성화되어 있습니다.

1. Checksum Offload 상태 확인하기

현재 설정을 확인합니다.

ethtool -k eth0

예시

rx-checksumming: on
tx-checksumming: on

on이면 활성화된 상태입니다.

2. RX Checksum 활성화하기

수신 Checksum 기능을 활성화합니다.

ethtool -K eth0 rx on

설정 후 다시 확인합니다.

ethtool -k eth0

3. TX Checksum 활성화하기

송신 Checksum 기능을 활성화합니다.

ethtool -K eth0 tx on

송신량이 많은 서버에서는 매우 중요한 기능입니다.

4. Checksum Offload 비활성화하기

문제 분석이나 패킷 캡처를 위해 비활성화할 수 있습니다.

ethtool -K eth0 rx off
ethtool -K eth0 tx off

운영 서버에서는 특별한 이유가 없다면 비활성화하지 않는 것이 좋습니다.

5. CPU 사용률 확인하기

설정 전후 CPU 사용률을 비교합니다.

mpstat -P ALL 1

또는

top

트래픽이 많은 환경일수록 CPU 감소 효과가 크게 나타납니다.

6. NIC 기능 확인하기

NIC가 지원하는 Offload 기능을 확인합니다.

ethtool -k eth0

다음 기능도 함께 확인합니다.

  • GRO
  • GSO
  • TSO
  • LRO
  • Scatter Gather

이 기능들은 Checksum Offload와 함께 동작하는 경우가 많습니다.

7. 네트워크 성능 확인하기

송수신 처리량을 확인합니다.

sar -n DEV 1

또는

iperf3 -c 서버IP

설정 전후 처리량을 비교합니다.

8. 인터럽트 및 SoftIRQ 확인하기

cat /proc/interrupts
cat /proc/softirqs

CPU 부하가 감소했는지 함께 확인합니다.

9. NIC 드라이버 확인하기

ethtool -i eth0

드라이버가 오래된 경우 Checksum Offload 관련 문제가 발생할 수 있으므로 최신 버전 사용을 권장합니다.

10. 커널 로그 확인하기

dmesg | grep -Ei "checksum|eth|net"

또는

journalctl -k | grep -Ei "checksum|driver"

드라이버 오류나 Offload 관련 메시지가 있는지 확인합니다.

Checksum Offload 점검 순서

실무에서는 다음 순서대로 점검하는 것이 효율적입니다.

  1. Checksum Offload 상태 확인
  2. RX/TX 활성화 여부 확인
  3. CPU 사용률 확인
  4. NIC 기능 확인
  5. 네트워크 처리량 측정
  6. 인터럽트 확인
  7. SoftIRQ 확인
  8. NIC 드라이버 확인
  9. 커널 로그 확인
  10. 성능 비교 테스트

Checksum Offload 사용 시 주의사항

다음 사항을 고려해야 합니다.

  • 최신 NIC 드라이버 사용
  • 최신 펌웨어 유지
  • 패킷 분석 시 비활성화 고려
  • 가상화 환경 호환성 확인
  • 다른 Offload 기능과 함께 사용
  • 운영 환경 적용 전 성능 테스트 수행

패킷 캡처 도구(tcpdump, Wireshark)를 사용할 때는 Checksum 오류가 보일 수 있는데, 이는 Offload 기능 때문에 발생하는 정상적인 현상일 수 있습니다.

자주 묻는 질문

Checksum Offload는 기본적으로 활성화되어 있나요?

대부분의 최신 Linux 배포판과 서버용 NIC에서는 기본적으로 활성화되어 있습니다.

패킷 캡처에서 Checksum 오류가 보이는 이유는 무엇인가요?

Checksum 계산이 NIC에서 전송 직전에 수행되기 때문에, 캡처 시점에서는 아직 계산되지 않아 오류처럼 보일 수 있습니다. 실제 네트워크 오류가 아닌 경우가 많습니다.

Checksum Offload를 비활성화하면 어떤 영향이 있나요?

CPU가 직접 Checksum을 계산해야 하므로 CPU 사용률이 증가할 수 있습니다. 따라서 운영 환경에서는 특별한 이유가 없다면 활성화 상태를 유지하는 것이 좋습니다.

마무리

Checksum Offload는 CPU 대신 네트워크 카드가 Checksum 계산과 검증을 수행하여 CPU 부하를 줄이는 핵심 네트워크 최적화 기술입니다. ethtool, mpstat, iperf3, /proc/interrupts 등을 활용하면 기능 활성화 여부와 성능 효과를 확인할 수 있으며, TSO, GSO, GRO 등 다른 Offload 기능과 함께 사용하면 대규모 트래픽 환경에서도 효율적인 네트워크 성능을 유지할 수 있습니다.

댓글 남기기