Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

TCP BBR로 리눅스 서버 대역폭 향상시키기: 실전 가이드

TCP BBR이란 무엇인가?

BBR(Bottleneck Bandwidth and RTT)는 구글의 소프트웨어 엔지니어들이 개발한 비교적 최신의 혼잡 제어(congestion control) 알고리즘입니다. 인터넷의 근간을 이루는 TCP 프로토콜을 통해 인터넷을 더 빠르게 만들려는 구글의 오랜 연구 끝에 탄생한 솔루션입니다.

BBR의 핵심 목표는 네트워크 활용도를 높이고 큐(queue) 발생을 줄여 느려진 네트워크 성능을 개선하는 것입니다. BBR은 네트워크 장비나 클라이언트가 아니라 반드시 서버 측에 배포해야 하며, 리눅스에서는 커널 버전 4.9 이상부터 지원됩니다.

이 글에서는 TCP BBR을 간략히 소개한 뒤, 리눅스에서 TCP BBR 혼잡 제어를 적용해 서버의 인터넷 속도를 향상시키는 방법을 단계별로 살펴보겠습니다.

사전 요구 사항

리눅스 커널 4.9 이상이 설치되어 있어야 하며, 다음 옵션이 모듈 형태 또는 커널에 내장된 형태로 포함되어 컴파일되어 있어야 합니다.

  • CONFIG_TCP_CONG_BBR
  • CONFIG_NET_SCH_FQ
  • CONFIG_NET_SCH_FQ_CODEL

리눅스에서 커널 모듈 확인 방법

위 옵션들이 커널에 포함되어 있는지 확인하려면 터미널에서 다음 명령어를 실행합니다.

# cat /boot/config-$(uname -r) | grep 'CONFIG_TCP_CONG_BBR'
# cat /boot/config-$(uname -r) | grep 'CONFIG_NET_SCH_FQ'

만약 커널 버전이 낮아 업그레이드가 필요하다면 아래 가이드를 참고하세요.

  1. Ubuntu에서 최신 버전으로 커널 업그레이드하기
  2. CentOS 7에 최신 커널 설치 또는 업그레이드하기

리눅스에서 TCP BBR 혼잡 제어 활성화하기

BBR은 페이싱(pacing)과 함께 사용할 때 가장 효과적이므로, 트래픽 페이싱을 위해 fq qdisc 클래스리스 패킷 스케줄러와 반드시 함께 사용해야 합니다. fq qdisc에 대한 자세한 정보는 다음 명령어로 확인할 수 있습니다.

# man tc-fq

BBR의 동작 원리를 이해했다면 이제 서버에 실제 설정을 적용해 보겠습니다. 선호하는 편집기로 /etc/sysctl.conf 파일을 엽니다.

# vi /etc/sysctl.conf

파일 맨 끝에 아래 두 줄을 추가합니다.

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

파일을 저장하고 닫은 뒤, sysctl 명령어로 변경 사항을 시스템에 즉시 적용합니다.

# sysctl --system

명령 실행 결과에서 위에서 추가한 옵션들이 올바른 값과 함께 적용된 것을 확인할 수 있습니다.

TCP BBR 설정 테스트하기

설정을 마친 후에는 실제로 정상 작동하는지 테스트해 볼 수 있습니다. 대역폭 속도를 측정하는 도구는 여러 가지가 있으며, 그중 대표적인 것이 Speedtest-CLI입니다. 이 도구를 사용하면 명령줄에서 양방향 인터넷 속도를 간편하게 측정할 수 있습니다.

이 외에도 bmon(대역폭 모니터), nload, Wget(명령줄 기반 파일 다운로더), cURL처럼 네트워크 대역폭 정보를 보여주는 다양한 도구를 활용해 테스트할 수 있습니다.

BBR 공식 GitHub 저장소: https://github.com/google/bbr

함께 읽으면 좋은 관련 글

  1. "Speedtest Mini Server" 직접 구축해서 인터넷 대역폭 속도 테스트하기
  2. Trickle로 리눅스 애플리케이션의 네트워크 대역폭 제한하기
  3. 커널 런타임 파라미터를 영구적·일시적으로 변경하는 방법

마무리

이번 글에서는 리눅스에서 TCP BBR 혼잡 제어 알고리즘을 적용해 서버의 인터넷 속도와 대역폭 효율을 높이는 방법을 알아보았습니다. 실제 운영 환경에 적용하기 전 다양한 조건에서 충분히 테스트해 보시길 권장하며, 테스트 결과나 피드백은 댓글로 공유해 주세요.

출처: Nixcraft · 원문: Aaron Kili (TecMint)