บทความนี้จะแนะนำสั้นๆ เกี่ยวกับวิธีการเปิดอัลกอริทึมควบคุมความคับคั่งของ BBR บนอุปกรณ์ Windows และปัญหาที่อาจเกิดขึ้นเมื่อใช้ฟังก์ชันนี้ในปัจจุบัน
แนะนำ BBR
BBR (Bottleneck Bandwidth and Round-trip propagation time) เป็นอัลกอริทึม ควบคุมความคับคั่ง TCP รูปแบบใหม่ที่พัฒนาโดย Google มีจุดมุ่งหมายเพื่อแก้ไขปัญหาที่อัลกอริทึมควบคุมความคับคั่งแบบเดิม (เช่น Reno หรือ CUBIC) มีอัตราการใช้แบนด์วิดท์ต่ำและความล่าช้ามากในบางสภาวะเครือข่าย (โดยเฉพาะในเครือข่ายที่มีอัตราการสูญเสียแพ็กเก็ตและความล่าช้าในระดับหนึ่ง)
แนวคิดหลัก
แนวคิดหลักของ BBR คือ ไม่พึ่งพาการสูญเสียแพ็กเก็ตเป็นสัญญาณหลักในการตัดสินความคับคั่งของเครือข่ายอีกต่อไป อัลกอริทึมควบคุมความคับคั่งแบบเดิมมักจะลดอัตราการส่งเมื่อตรวจพบการสูญเสียแพ็กเก็ต แต่ในเครือข่ายที่มีบัฟเฟอร์ขนาดใหญ่หรือมีการสูญเสียแพ็กเก็ตแบบสุ่มเล็กน้อย อาจทำให้ไม่สามารถใช้แบนด์วิดท์ที่มีอยู่ได้อย่างเต็มที่ หรือทำให้เกิดความล่าช้าที่ไม่จำเป็น (บัฟเฟอร์พองตัว)
BBR เปลี่ยนไป วัดพารามิเตอร์สำคัญสองอย่างของเครือข่ายเชิงรุก:
- แบนด์วิดท์คอขวด (Bottleneck Bandwidth, BtlBw):ขีดจำกัดบนของอัตราการถ่ายโอนข้อมูลในเส้นทางเครือข่าย ซึ่งก็คือความจุของส่วนที่แคบที่สุดในเส้นทาง
- เวลาในการแพร่กระจายไปกลับ (Round-trip Propagation Time, RTprop):เวลาที่สั้นที่สุดที่แพ็กเก็ตข้อมูลใช้ในการเดินทางไปกลับในเส้นทางเครือข่าย โดยไม่รวมเวลาที่รอคิวในบัฟเฟอร์ของอุปกรณ์กลาง
กลไกการทำงาน
BBR ปรับลักษณะการส่งแบบไดนามิกโดยการตรวจสอบพารามิเตอร์ทั้งสองนี้เป็นระยะๆ:
- ตรวจจับแบนด์วิดท์คอขวด:BBR จะส่งข้อมูลด้วยอัตราที่สูงกว่าแบนด์วิดท์คอขวดที่ประมาณการไว้เล็กน้อยในช่วงเวลาหนึ่ง เพื่อตรวจจับว่ามีแบนด์วิดท์ที่ใช้ได้สูงกว่าหรือไม่
- ตรวจจับเวลาในการแพร่กระจายไปกลับ:BBR จะส่งข้อมูลด้วยอัตราที่ต่ำกว่าแบนด์วิดท์คอขวดที่ประมาณการไว้เล็กน้อยในช่วงเวลาหนึ่ง เพื่อล้างคิวในเส้นทาง เพื่อวัด RTprop ที่แม่นยำยิ่งขึ้น
ด้วยวิธีนี้ BBR พยายามรักษาสมดุลของปริมาณข้อมูลที่กำลังส่ง (inflight data) ให้อยู่ในระดับที่สูงกว่าผลคูณของแบนด์วิดท์และความล่าช้า (BDP = BtlBw * RTprop) เล็กน้อย วิธีนี้ไม่เพียงแต่ ใช้ประโยชน์จากแบนด์วิดท์ของลิงก์คอขวดอย่างเต็มที่ แต่ยัง หลีกเลี่ยงการสร้างคิวที่ยาวเกินไปและความล่าช้าสูงในเครือข่าย
ข้อได้เปรียบหลัก
- ปริมาณงานสูง:โดยเฉพาะอย่างยิ่งในเครือข่าย LFN (Long Fat Networks) ที่มีการสูญเสียและความล่าช้าในระดับหนึ่ง BBR มักจะได้รับปริมาณงานที่สูงกว่าอัลกอริทึมแบบเดิม
- ความล่าช้าต่ำ:ด้วยการควบคุมคิวเชิงรุก BBR สามารถลดความล่าช้าของเครือข่ายได้อย่างมีประสิทธิภาพ และหลีกเลี่ยงปัญหาบัฟเฟอร์พองตัว
- ไม่ไวต่อการสูญเสียแพ็กเก็ต:เนื่องจากไม่ได้พึ่งพาการสูญเสียแพ็กเก็ตเป็นหลักในการตัดสินความคับคั่ง BBR จึงมีเสถียรภาพมากกว่าในเครือข่ายที่มีการสูญเสียแพ็กเก็ตแบบสุ่มเล็กน้อย
เงื่อนไขในการเปิด BBR บน Windows
ระบบปฏิบัติการต้องรองรับ อาจต้องใช้ Windows 11 เวอร์ชัน 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
ปัญหาปัจจุบันในการใช้อัลกอริทึม BBR ของ Windows
ในขณะนี้ จากการสอบถามพบว่าการรองรับ BBR ของ Windows ยังไม่สมบูรณ์และมีข้อผิดพลาดมากมาย (เอกสารสองฉบับแรกกล่าวถึงการเปิด BBR จะทำลายทราฟิก TCP “localhost” (อินเทอร์เฟซวนรอบ) ทำให้การเชื่อมต่อภายในเครื่องเดียวกันช้าหรือไม่ตอบสนอง) เช่น:
- จะทำลาย Steam เนื่องจาก Steamwebhelper ไม่สามารถเริ่มทำงานได้อีกต่อไป และเมื่อใช้ Internet Download Manager จะทำลายการเชื่อมต่อดาวน์โหลดทั้งหมด เมื่อเปลี่ยนกลับเป็น CUBIC การเชื่อมต่อเหล่านั้นจะทำงานอีกครั้ง —— แก้ไขข้อผิดพลาด BBR2 บน Windows 11 - ชุมชน Microsoft สร้างเมื่อวันที่ 8 พฤษภาคม 2025
- ข้อผิดพลาดใหม่ของ 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.
—— วิธีการเปิดใช้งาน TCP BBR บน Windows - Stack Overflow - v2rayN ไม่สามารถอัปเดตไฟล์ภูมิศาสตร์ แกนกลาง หรือเชื่อมต่อกับพร็อกซีเซิร์ฟเวอร์ —— [ข้อผิดพลาด]: อัลกอริทึมความคับคั่ง BBR2 ใน Windows ทำให้ 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
เปิดใช้งาน TCP BBR v2 บน 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