บทความนี้จะแนะนำสั้นๆ เกี่ยวกับวิธีการเปิดอัลกอริทึมควบคุมความคับคั่งของ BBR บนอุปกรณ์ Windows และปัญหาที่อาจเกิดขึ้นเมื่อใช้ฟังก์ชันนี้ในปัจจุบัน

แนะนำ BBR

BBR (Bottleneck Bandwidth and Round-trip propagation time) เป็นอัลกอริทึม ควบคุมความคับคั่ง TCP รูปแบบใหม่ที่พัฒนาโดย Google มีจุดมุ่งหมายเพื่อแก้ไขปัญหาที่อัลกอริทึมควบคุมความคับคั่งแบบเดิม (เช่น Reno หรือ CUBIC) มีอัตราการใช้แบนด์วิดท์ต่ำและความล่าช้ามากในบางสภาวะเครือข่าย (โดยเฉพาะในเครือข่ายที่มีอัตราการสูญเสียแพ็กเก็ตและความล่าช้าในระดับหนึ่ง)

แนวคิดหลัก

แนวคิดหลักของ BBR คือ ไม่พึ่งพาการสูญเสียแพ็กเก็ตเป็นสัญญาณหลักในการตัดสินความคับคั่งของเครือข่ายอีกต่อไป อัลกอริทึมควบคุมความคับคั่งแบบเดิมมักจะลดอัตราการส่งเมื่อตรวจพบการสูญเสียแพ็กเก็ต แต่ในเครือข่ายที่มีบัฟเฟอร์ขนาดใหญ่หรือมีการสูญเสียแพ็กเก็ตแบบสุ่มเล็กน้อย อาจทำให้ไม่สามารถใช้แบนด์วิดท์ที่มีอยู่ได้อย่างเต็มที่ หรือทำให้เกิดความล่าช้าที่ไม่จำเป็น (บัฟเฟอร์พองตัว)

BBR เปลี่ยนไป วัดพารามิเตอร์สำคัญสองอย่างของเครือข่ายเชิงรุก

  1. แบนด์วิดท์คอขวด (Bottleneck Bandwidth, BtlBw):ขีดจำกัดบนของอัตราการถ่ายโอนข้อมูลในเส้นทางเครือข่าย ซึ่งก็คือความจุของส่วนที่แคบที่สุดในเส้นทาง
  2. เวลาในการแพร่กระจายไปกลับ (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

https://github.com/google/bbr

เวอร์ชันอื่นๆ ของหน้าเว็บนี้

บทความนี้มีหลายภาษา

หากคุณต้องการแสดงความคิดเห็น โปรดเยี่ยมชมหน้าเว็บต่อไปนี้:

ZH EN ZH-TW JA

หน้าเว็บเหล่านี้รองรับเฉพาะการเรียกดู ไม่สามารถแสดงความคิดเห็นหรือแสดงความคิดเห็นได้ แต่มีตัวเลือกภาษาเพิ่มเติมและใช้เวลาโหลดน้อยกว่า:

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