KOROMOON

착한 사마리아인이 되고 싶습니다.

5/06/2019

BBR 알고리즘을 적용시켜 리눅스 인터넷 속도 향상시키기


( 1 ) BBR(Bottleneck Bandwidth and Round-trip propagation time)



구글에서 개발된 새로운 TCP 혼잡 제어 알고리즘으로 2016년 09월에 최초 공개 버전이 출시됨.
참고로 TCP 혼잡 제어 알고리즘이란 네트워크에서 부하로 인해 패킷 손실을 발생하는 것을 줄이는 알고리즘을 말함.

구글은 2017년 3월 자제 설계한 BBR 알고리즘을 자사 동영상 서비스인 유튜브에 적용했고 이후 전세계적으로 약 4 % 의 속도 증가 효과를 본 것으로 알려짐. 특히 일부 국가에서는 14 % 이상 향상된 것으로 조사됨.

구글에 따르면 기존의 혼잡 제어 알고리즘은 인터넷에 사용자가 몰리거나 대규모 다운로드나 업로드 등 네트워크 트래픽이 쌓이게 돼 패킷의 손실이 발생하면 자동적으로 네트워크 속도를 반으로 줄여 패킷의 손실을 방지하게 됨.
하지만 구글의 BBR 알고리즘은 손실될 패킷의 현재 위치와 이동 경로를 미리 예측해 네트워크에 트래픽이 몰리더라도 전송 속도가 느려지는 것을 방지함.



( 2 ) BBR 알고리즘 적용 방법

BBR 알고리즘을 적용시켜 리눅스 인터넷 속도를 향상시키는 방법은 아래와 같음.
BBR 알고리즘을 Linux 커널에 적용시킬 수 있으며 커널 버전 4.9 이상에서만 사용이 가능함.

아래 2가지 사항이 BBR 알고리즘과 관련된 사항이며 리눅스 커널에 모듈로 컴파일되거나 내장된 옵션으로 가지고 있는지 확인해야 함.

CONFIG_TCP_CONG_BBR
CONFIG_NET_SCH_FQ

다음 명령어를 통해서 모듈이 있는 지 확인하며 없을 경우 최신 커널로 컴파일하거나 설치해야 함. 
# grep 'CONFIG_TCP_CONG_BBR' /boot/config-$(uname -r)
# grep 'CONFIG_NET_SCH_FQ' /boot/config-$(uname -r)
# egrep 'CONFIG_TCP_CONG_BBR|CONFIG_NET_SCH_FQ' /boot/config-$(uname -r)



있다면 아래 두 파일 중 하나에 다음 두 줄을 추가시키고 저장한 후 재시작함.
(vi /etc/sysctl.conf 입력 후 단축키 i 를 눌러 두 줄 추가함. 그리고 Etc 누른 후 wq 입력하여 /etc/sysctl.conf 파일을 저장함)

/etc/sysctl.conf
OR
/etc/sysctl.d/10-custom-kernel-bbr.conf


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


최종적으로 아래와 같이 sysctl 명령어을 사용하여 BBR 알고리즘 설정이 잘 되어 있는지 확인함.
# sysctl net.core.default_qdisc
net.core.default_qdisc = fq
# sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr





참고 사이트 : 
https://www.cyberciti.biz/cloud-computing/increase-your-linux-server-internet-speed-with-tcp-bbr-congestion-control/
https://github.com/google/bbr
https://cloudplatform.googleblog.com/2017/07/TCP-BBR-congestion-control-comes-to-GCP-your-Internet-just-got-faster.html



============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기