이 문서는 Windows 장치에서 BBR 혼잡 제어 알고리즘을 활성화하는 방법과 현재 이 기능을 사용할 때 발생할 수 있는 문제점을 간략하게 소개합니다.
BBR 소개
BBR(Bottleneck Bandwidth and Round-trip propagation time)은 Google에서 개발한 비교적 새로운 TCP 혼잡 제어 알고리즘입니다. 이 알고리즘은 기존 혼잡 제어 알고리즘(예: Reno 또는 CUBIC)이 특정 네트워크 조건(특히 일정량의 패킷 손실률과 지연이 있는 네트워크)에서 대역폭 이용률이 낮고 지연이 큰 문제를 해결하기 위해 설계되었습니다.
핵심 사상
BBR의 핵심 사상은 패킷 손실에 더 이상 네트워크 혼잡을 판단하는 주요 신호로 의존하지 않는 것입니다. 기존의 혼잡 제어 알고리즘은 일반적으로 패킷 손실이 감지되면 전송 속도를 낮추지만, 버퍼가 크거나 약간의 임의 패킷 손실이 있는 네트워크에서는 사용 가능한 대역폭을 충분히 활용하지 못하거나 불필요한 지연(버퍼 팽창)을 유발할 수 있습니다.
BBR은 대신 네트워크의 두 가지 핵심 매개변수를 적극적으로 측정합니다.
- 병목 대역폭(Bottleneck Bandwidth, BtlBw): 네트워크 경로에서 데이터 전송 속도의 상한, 즉 경로에서 가장 좁은 링크의 용량입니다.
- 왕복 전파 시간(Round-trip Propagation Time, RTprop): 데이터 패킷이 네트워크 경로에서 왕복하는 데 필요한 최단 시간이며, 중간 장치 버퍼의 대기 시간은 포함되지 않습니다.
작동 메커니즘
BBR은 주기적으로 이 두 매개변수를 탐지하여 전송 동작을 동적으로 조정합니다.
- 병목 대역폭 탐지: BBR은 일정 기간 동안 현재 추정된 병목 대역폭보다 약간 높은 속도로 데이터를 전송하여 더 높은 사용 가능한 대역폭이 있는지 탐지합니다.
- 왕복 전파 시간 탐지: BBR은 일정 기간 동안 현재 추정된 병목 대역폭보다 약간 낮은 속도로 데이터를 전송하여 경로에서 대기열을 비워 더 정확한 RTprop을 측정합니다.
이러한 방식으로 BBR은 전송 중인 데이터 양(inflight data)을 대역폭 지연 곱(BDP = BtlBw * RTprop)보다 약간 높은 수준으로 유지하려고 시도합니다. 이렇게 하면 병목 링크의 대역폭을 충분히 활용할 수 있을 뿐만 아니라 네트워크에서 과도한 대기열과 높은 지연을 방지할 수 있습니다.
주요 장점
- 높은 처리량: 특히 일정량의 패킷 손실과 지연이 있는 장거리 광대역 네트워크(Long Fat Networks)에서 BBR은 일반적으로 기존 알고리즘보다 높은 처리량을 얻을 수 있습니다.
- 낮은 지연: 대기열을 적극적으로 제어함으로써 BBR은 네트워크 지연을 효과적으로 줄이고 버퍼 팽창 문제를 방지할 수 있습니다.
- 패킷 손실에 둔감: 혼잡을 판단하는 데 주로 패킷 손실에 의존하지 않기 때문에 BBR은 소량의 임의 패킷 손실이 있는 네트워크에서 더 안정적으로 작동합니다.
Windows에서 BBR을 활성화하기 위한 조건
운영 체제에서 지원해야 합니다. 버전 요구 사항은 Windows 11 version 22H2 이상일 수 있습니다.
관리자 권한으로 Powershell을 실행하고 다음 명령을 보내 시스템에서 지원하는 알고리즘을 알아봅니다.
[Enum]::GetNames([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetTCPSetting.CongestionProvider])
다음과 유사한 내용이 출력될 수 있습니다.
Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2
이 목록은 시스템이 TCP 설정에서 인식하고 구성할 수 있는 혼잡 제어 알고리즘 이름을 나타냅니다. Default
는 일반적으로 시스템이 특정 템플릿 또는 전역 설정에 따라 CUBIC 또는 다른 알고리즘을 사용하도록 결정한다는 의미입니다.
Windows에서 BBR 혼잡 제어 알고리즘 사용 시도
현재 구성된 혼잡 제어 알고리즘을 봅니다.
Get-NetTCPSetting | Select SettingName, CongestionProvider
출력은 다음과 같을 수 있습니다.
SettingName CongestionProvider
----------- ------------------
Automatic
InternetCustom CUBIC
DatacenterCustom CUBIC
Compat NewReno
Datacenter CUBIC
Internet CUBIC
활성화 시도:
Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2
오류:
Set-NetTCPSetting : Property CongestionProvider is read-only
At line:1 char:1
+ Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSetti
ng) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting
현재 Windows에서 BBR 알고리즘 사용 시 문제점
이때 검색한 결과 Windows의 BBR 지원은 아직 완전하지 않으며 많은 버그가 있습니다(처음 두 자료에서는 BBR을 활성화하면 “localhost”(루프백 인터페이스) TCP 트래픽이 손상되어 동일한 컴퓨터 내의 연결이 느려지거나 응답하지 않게 된다고 언급함). 예를 들어 다음과 같습니다.
- Steamwebhelper를 더 이상 시작할 수 없기 때문에 Steam을 손상시키고, Internet Download Manager를 사용할 때 모든 다운로드 후크를 손상시키며, CUBIC으로 다시 변경하면 다시 작동함 —— Fix BBR2 bugs on Windows 11 - Microsoft Community , 2025년 5월 8일에 생성됨
- BBR2 24H2의 새로운 버그는 연결이 불안정하다는 것입니다. 내 Firefox 브라우저는 무작위로
NS_BINDING_ABORT
오류를 수신합니다. 내 Visual Studio Code Remote 개발 플러그인은 연결 시 멈추고 다음 오류가 발생합니다.failed to set up socket for dynamic port forward to remote port =: proxy connection timed out.
내 Messenger(UWP) 앱은 거의 충돌합니다(새 메시지가 표시되지 않음). —— Windows 11 24H2 and BBR2 : r/Windows11 - Hyper-V의 로컬 콘솔 연결을 중단합니다(Windows 11 23H2부터). 콘솔에
Connecting to '[VM]'
이 몇 분 동안 표시된 다음Video remoting was disconnected
메시지와 함께 실패하고Could not connect to the virtual machine.
팝업이 표시됩니다. —— Windows에서 TCP BBR을 활성화하는 방법 - Stack Overflow - v2rayN이 지리 파일, 코어 또는 프록시 서버에 연결할 수 없습니다. —— [Bug]: Windows의 BBR2 혼잡 알고리즘으로 인해 v2rayN이 작동을 멈춤 · 2dust/v2rayN
따라서 BBR을 일시적으로 활성화하지 않기로 결정했습니다. 활성화를 시도하려면 다음 명령을 시도해 볼 수 있습니다.
netsh int tcp set supplemental template=Internet congestionprovider=BBR2
netsh int tcp set supplemental template=InternetCustom congestionprovider=BBR2
netsh int tcp set supplemental template=Datacenter congestionprovider=BBR2
netsh int tcp set supplemental template=DatacenterCustom congestionprovider=BBR2
netsh int tcp set supplemental template=Compat congestionprovider=BBR2
여기서 BBR2
를 BBR
(BBR v1)로 바꿀 수도 있습니다. 테스트하여 효과를 비교해 볼 수 있습니다.
그런 다음 현재 구성된 혼잡 제어 알고리즘이 BBR2
로 구성되었는지 확인합니다.
Get-NetTCPSetting | Select SettingName, CongestionProvider
Windows 11 23H2 / 24H2에서 BBR v2를 활성화하면 로컬 TCP 연결을 사용할 수 없게 될 수 있습니다(예: adb를 사용할 수 없거나 Steam이 실패하는 등). 이때 혼잡 제어 알고리즘을 이전 구성으로 복원하십시오. 복원 후 재부팅할 필요 없이 문제가 즉시 해결될 것입니다.
이 문서는 아직 완전하지 않습니다. 최신 정보를 알려주시면 감사하겠습니다.
참고 자료
Set-NetTCPSetting (NetTCPIP) | Microsoft Learn
Enable TCP BBR v2 on Linux & Windows 11 - Coxxs
본 웹페이지의 다른 버전
이 문서는 여러 언어로 제공됩니다.
댓글을 게시하려면 다음 웹페이지를 방문하십시오.
이러한 웹페이지는 보기만 지원하고 댓글을 게시하거나 메시지를 남길 수 없지만 더 많은 언어 옵션을 제공하고 로드 시간이 더 짧습니다.
ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO