피드로 돌아가기
Dev.toInfrastructure
원문 읽기
CPU 사용률 0% 도전, eBPF 기반 TURN 서버 가속화 전략
Accelerating TURN with eBPF: A Non-Invasive Approach
AI 요약
Context
TURN 서버의 잦은 Kernel-to-User 모드 스위칭으로 인한 CPU 자원 낭비 발생. Stateful한 유저스페이스 릴레이 서버 특성상 기존 eBPF 오프로드 적용 시 복잡한 로직 구현 필요. 서버 코드 수정 없이 네트워크 패킷을 처리해야 하는 기술적 제약 존재.
Technical Solution
- XDP와 TC(Traffic Control) 프로그램을 조합한 'Snooping' 기반의 비침습적 가속 구조 설계
- TC Egress 훅을 통해 서버의 ChannelBind 응답을 가로채 채널 할당 승인 여부를 확인하는 메커니즘 적용
- bpf_fib_lookup 함수를 활용하여 IP 주소에 맞는 MAC 주소와 네트워크 인터페이스를 매핑하는 컨트롤 패스 구현
- XDP Fast Path에서 NAT 처리, TURN 채널 태그 제거/추가, Checksum 업데이트 및 MAC 주소 재작성을 직접 수행
- 유저스페이스 TURN 서버의 세션 유지를 위해 일부 데이터 패킷을 의도적으로 유출시키는 'Heartbeat Spill' 방식 도입
- 서버 소스 코드 수정 없이 인터페이스 이름 설정만으로 작동하는 독립적 실행 구조 확보
Impact
- 오프로드 활성화 시 시스템 전체 CPU 사용률 6-7%에서 0-1%로 감소
- TURN 서버 프로세스의 CPU 점유율 사실상 0% 수준으로 최적화
Key Takeaway
어플리케이션의 상태 변화를 커널 계층에서 관찰(Snooping)하여 동적으로 Fast Path를 구축함으로써 기존 레거시 소프트웨어의 수정 없이도 비약적인 네트워크 성능 향상이 가능함.
실천 포인트
유저스페이스 서버 수정이 불가능한 환경에서 고성능 패킷 처리가 필요할 때 eBPF의 TC/XDP 조합과 Snooping 패턴 검토