Bosh sahifa Wiki Congestion control

Congestion control

Congestion control — tarmoq ichidagi router, link va queue sig‘imi ortiqcha yuklanmasligi uchun sender yuborish tezligini moslashtiradigan mexanizmlar majmuasidir. Congestion paket yo‘qolishi, queue kechikishi va throughputning pasayishiga olib keladi. TCP va QUIC receiver capacitydan tashqari network capacityni ham hisobga oladi.

Congestion window

Sender congestion window, ya’ni cwnd orqali acknowledgement olinmasdan tarmoqda bo‘lishi mumkin bo‘lgan data miqdorini cheklaydi. Haqiqiy yuborish limiti congestion window va receiver flow-control windowining kichigiga bog‘liq. Cwnd network holati haqidagi signalga qarab o‘zgaradi.

Flight size yuborilgan, ammo hali tasdiqlanmagan data. Cwnd byte yoki packet ekvivalentida yuritilishi mumkin. RTT bilan birga u taxminiy throughputni belgilaydi: window kichik, RTT katta bo‘lsa link bandwidthi to‘liq ishlatilmaydi.

Slow start va avoidance

Yangi connection network capacityni bilmaydi. Slow start cwndni kichikdan boshlab ACKlar kelishi bilan tez oshiradi. Yo‘qotish yoki thresholddan keyin congestion avoidance sekinroq o‘sishga o‘tadi.

Traditional loss-based algoritm paket yo‘qolishini congestion signali deb qabul qiladi. CUBIC window o‘sishini vaqtga bog‘liq cubic funksiya bilan boshqaradi. BBR bandwidth va minimum RTT modelidan foydalanishga urinadi. Har algoritm fairness, latency va wireless loss sharoitida turli xatti-harakatga ega.

Signal turlari

Packet loss retransmission timeout yoki duplicate ACK orqali aniqlanishi mumkin. ECN routerga paketni tashlamasdan congestion belgisini qo‘yish imkonini beradi. RTTning oshishi queue to‘layotganini ko‘rsatishi mumkin, ammo path o‘zgarishi ham RTTni o‘zgartiradi.

AQM, masalan CoDel, queue to‘lib ketishidan oldin drop yoki mark orqali senderga signal beradi. Juda katta buffer packet lossni kamaytirib ko‘rinsa-da, bufferbloat sabab interaktiv latencyni keskin oshiradi.

QUIC xususiyatlari

QUIC congestion control UDP ustidagi user-space transportda amalga oshiriladi. Packet number space, acknowledgement range va loss detection transportga signal beradi. Bir connectiondagi ko‘p stream umumiy congestion controllerdan foydalanadi; bitta stream network capacityni mustaqil ko‘paytirmaydi.

Connection migrationda yangi pathning RTT va capacitysi eski yo‘ldan farq qiladi. Controller yangi pathni tekshiradi va congestion stateini ehtiyotkor boshlaydi. Eski Wi-Fi capacitysini mobil linkka to‘liq ko‘chirish burst loss keltirishi mumkin.

Flow controldan farqi

Flow control receiver bufferini himoya qiladi, congestion control tarmoqni himoya qiladi. Receiver katta window bersa ham network kichik capacityga ega bo‘lishi mumkin. Aksincha, tarmoq bo‘sh bo‘lsa ham application sekin o‘qisa flow-control limiti senderni to‘xtatadi.

Application parallel connection ochib, har biriga alohida controller bilan fairnessni chetlab o‘tishi mumkin. Protocol va deployment connection soni, pacing va retry burstlarni nazorat qiladi.

Pacing va burst

Window faqat jami outstanding data ni cheklaydi; sender uning hammasini bir onda yuborsa router queue sida burst hosil bo‘ladi. Packet pacing yuborishni RTT davomida taqsimlaydi. Timer aniqligi va kernel offload haqiqiy packet vaqti bilan farq qilishi mumkin.

Application katta response ni bir nechta connectionga bo‘lib fairness va link xarajatini o‘zgartiradi. Congestion controller per-connection bo‘lsa host-level umumiy limit yo‘q. Server connection quota va egress scheduler bilan bir clientning ko‘p parallel oqimini boshqarishi mumkin.

Pacing rate real yuborish metricida kuzatiladi.

Bog‘liq tushunchalar

Congestion window, Slow start, CUBIC, BBR, ECN, Bufferbloat, Flow control