এই নিবন্ধটি সংক্ষেপে আলোচনা করে কিভাবে উইন্ডোজ ডিভাইসে BBR কঞ্জেশন কন্ট্রোল অ্যালগরিদম চালু করা যায়; এবং বর্তমানে এই ফাংশনটি ব্যবহার করলে কী সমস্যা হতে পারে।

BBR পরিচিতি

BBR (Bottleneck Bandwidth and Round-trip propagation time) হল Google দ্বারা ডেভেলপ করা একটি নতুন ধরনের TCP কঞ্জেশন কন্ট্রোল অ্যালগরিদম। এটি ঐতিহ্যবাহী কঞ্জেশন কন্ট্রোল অ্যালগরিদম (যেমন Reno বা CUBIC) কিছু নেটওয়ার্ক পরিস্থিতিতে (বিশেষ করে কিছু প্যাকেট লস এবং লেটেন্সির নেটওয়ার্কে) ব্যান্ডউইথের ব্যবহার কম হওয়া এবং লেটেন্সি বেশি হওয়ার সমস্যা সমাধানের জন্য ডিজাইন করা হয়েছে।

মূল ধারণা

BBR এর মূল ধারণা হল নেটওয়ার্ক কঞ্জেশনের প্রধান সংকেত হিসেবে প্যাকেট লসের উপর নির্ভর না করা। ঐতিহ্যবাহী কঞ্জেশন কন্ট্রোল অ্যালগরিদম সাধারণত প্যাকেট লস সনাক্ত করার পরেই পাঠানোর গতি কমিয়ে দেয়, কিন্তু এটি বড় বাফার বা সামান্য র্যান্ডম প্যাকেট লসের নেটওয়ার্কে উপলব্ধ ব্যান্ডউইথ সম্পূর্ণরূপে ব্যবহার করতে ব্যর্থ হতে পারে অথবা অপ্রয়োজনীয় লেটেন্সি (বাফার ইনফ্লেশন) তৈরি করতে পারে।

BBR পরিবর্তে সক্রিয়ভাবে নেটওয়ার্কের দুটি গুরুত্বপূর্ণ প্যারামিটার পরিমাপ করে:

  1. বোতলনেক ব্যান্ডউইথ (Bottleneck Bandwidth, BtlBw): নেটওয়ার্ক পথের ডেটা ট্রান্সমিশন গতির ঊর্ধ্বসীমা, অর্থাৎ পথের সবচেয়ে সংকীর্ণ অংশের ক্ষমতা।
  2. রাউন্ড-ট্রিপ প্রোপাগেশন টাইম (Round-trip Propagation Time, RTprop): নেটওয়ার্ক পথে ডেটা প্যাকেটের রাউন্ড ট্রিপের জন্য প্রয়োজনীয় সর্বনিম্ন সময়, মধ্যবর্তী ডিভাইসের বাফারে সারিবদ্ধ হওয়ার সময় অন্তর্ভুক্ত নয়।

কাজের প্রক্রিয়া

BBR পর্যায়ক্রমে এই দুটি প্যারামিটার অনুসন্ধান করে গতিশীলভাবে তার পাঠানোর আচরণ সামঞ্জস্য করে:

  • বোতলনেক ব্যান্ডউইথ অনুসন্ধান: BBR একটি নির্দিষ্ট সময়ের জন্য বর্তমান আনুমানিক বোতলনেক ব্যান্ডউইথের চেয়ে সামান্য বেশি হারে ডেটা পাঠাবে, যাতে আরও বেশি উপলব্ধ ব্যান্ডউইথ আছে কিনা তা পরীক্ষা করা যায়।
  • রাউন্ড-ট্রিপ প্রোপাগেশন টাইম অনুসন্ধান: BBR একটি নির্দিষ্ট সময়ের জন্য বর্তমান আনুমানিক বোতলনেক ব্যান্ডউইথের চেয়ে সামান্য কম হারে ডেটা পাঠাবে, যাতে পথের সারি খালি করা যায় এবং আরও নির্ভুল RTprop পরিমাপ করা যায়।

এইভাবে, BBR ট্রান্সমিট করা ডেটার পরিমাণ (inflight data) ব্যান্ডউইথ ডিলে প্রোডাক্ট (BDP = BtlBw * RTprop) এর চেয়ে সামান্য বেশি স্তরে বজায় রাখার চেষ্টা করে। এটি যেমন বোতলনেক লিঙ্কের ব্যান্ডউইথ সম্পূর্ণরূপে ব্যবহার করতে পারে, তেমনই নেটওয়ার্কে অতিরিক্ত সারিবদ্ধকরণ এবং উচ্চ বিলম্ব এড়াতে পারে।

প্রধান সুবিধা

  • উচ্চ থ্রুপুট: বিশেষ করে কিছু প্যাকেট লস এবং লেটেন্সির দীর্ঘ এবং মোটা নেটওয়ার্কে (Long Fat Networks), BBR সাধারণত ঐতিহ্যবাহী অ্যালগরিদমের চেয়ে বেশি থ্রুপুট অর্জন করতে পারে।
  • কম লেটেন্সি: সক্রিয়ভাবে সারিবদ্ধকরণ নিয়ন্ত্রণ করে, BBR কার্যকরভাবে নেটওয়ার্ক লেটেন্সি কমাতে এবং বাফার ইনফ্লেশনের সমস্যা এড়াতে পারে।
  • প্যাকেট লসের প্রতি সংবেদনশীল নয়: যেহেতু এটি মূলত কঞ্জেশন বিচার করার জন্য প্যাকেট লসের উপর নির্ভর করে না, তাই BBR সামান্য র্যান্ডম প্যাকেট লসের নেটওয়ার্কে আরও স্থিতিশীল থাকে।

উইন্ডোজে BBR চালু করার শর্ত

অপারেটিং সিস্টেমের সমর্থন থাকতে হবে। সম্ভবত Windows 11 version 22H2 বা তার বেশি সংস্করণ প্রয়োজন।

অ্যাডমিনিস্ট্রেটর হিসাবে পাওয়ারশেল চালান এবং সিস্টেম দ্বারা সমর্থিত অ্যালগরিদম জানতে নিম্নলিখিত কমান্ডটি পাঠান:

[Enum]::GetNames([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetTCPSetting.CongestionProvider])

এটি সম্ভবত এইরকম আউটপুট দেবে:

Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2

এই তালিকাটি TCP সেটিংসে সিস্টেম দ্বারা সনাক্ত করা এবং কনফিগার করা যেতে পারে এমন কঞ্জেশন কন্ট্রোল অ্যালগরিদমের নামগুলি উপস্থাপন করে। Default সাধারণত বোঝায় যে সিস্টেমটি CUBIC বা অন্য কোনও অ্যালগরিদম ব্যবহার করবে কিনা তা নির্দিষ্ট টেমপ্লেট বা গ্লোবাল সেটিংসের উপর ভিত্তি করে সিদ্ধান্ত নেবে।

উইন্ডোজে 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 অ্যালগরিদম ব্যবহারের সমস্যা

এই মুহূর্তে, অনুসন্ধানে জানা গেছে যে উইন্ডোজে BBR সমর্থন এখনও ত্রুটিপূর্ণ, অনেকগুলি বাগ রয়েছে (প্রথম দুটি তথ্যে উল্লেখ করা হয়েছে যে BBR চালু করলে “localhost” (লুপব্যাক ইন্টারফেস) TCP ট্র্যাফিক ভেঙে যায়, যার ফলে একই মেশিনের মধ্যে সংযোগ ধীর বা প্রতিক্রিয়াশীল হয় না), যেমন:

  • এটি Steam কে ভেঙে দেবে, কারণ Steamwebhelper আর শুরু করা যাবে না, এবং যখন Internet Download Manager ব্যবহার করা হয়, তখন এটি সমস্ত ডাউনলোড হুক ভেঙে দেয়, যখন CUBIC এ পরিবর্তন করা হয়, তখন সেগুলি আবার কাজ করে - Fix BBR2 bugs on Windows 11 - Microsoft Community , তৈরি করা হয়েছে 8 মে, 2025 তারিখে
  • BBR2 24H2 এর নতুন বাগ হল সংযোগ অস্থির। আমার ফায়ারফক্স ব্রাউজার এলোমেলোভাবে NS_BINDING_ABORT এরর পায়। আমার ভিজ্যুয়াল স্টুডিও কোড রিমোট ডেভেলপমেন্ট প্লাগইন সংযোগ করার সময় আটকে যায় এবং নিম্নলিখিত এরর দেখায়: failed to set up socket for dynamic port forward to remote port =: proxy connection timed out. । আমার মেসেঞ্জার (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 সক্ষম করবেন - 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

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