HUM KYA control karte hain:cwnd. KYUN: rwnd receiver ki RAM ko protect karta hai; cwnd network ki queues ko — yeh do alag bottlenecks hain.
Hum cwnd ko MSS (Maximum Segment Size) ki units mein measure karte hain clarity ke liye. Throughput ≈RTTcwnd, toh bada cwnd = faster — jab tak loss na ho.
HOW (derivation): Hum chahte hain RTT mein +1 segment, lekin ACKs poore RTT mein aate rehte hain. cwnd = W segments ke saath, W ACKs per RTT aate hain, aur hum chahte hain ki unka total effect +1 MSS ho:
per ACK: cwnd+=cwndMSS×MSSW ACKs pe sum karne par: W×W⋅MSSMSS2=MSS. ✓ Exactly +1 per RTT.
Toh per-RTT:
cwnd(t+RTT)=cwnd(t)+1MSS
Yeh AIMD ka AI hai (Additive Increase, Multiplicative Decrease).
WHY halve karo (AIMD mein MD)? Aadha karna ek strong, multiplicative back-off hai jo jaldi congestion relieve karta hai aur, additive increase ke saath combine hokar, ek fair, stable sawtooth deta hai jo converge karta hai (AIMD chart se proven — fairness line).
K ki derivation (WHY woh cube root): Loss ke baad, cwnd βWmax tak drop hota hai... ruko — actually CUBIC (1−β) factor se drop karta hai, toh new window =(1−β)Wmax hoti hai. Hum chahte hain ki cubic curve t=0 par new window se guzre aur t=K par Wmax tak pahunche (uska inflection plateau). Wcubic(0)=(1−β)Wmax set karo:
C(0−K)3+Wmax=(1−β)Wmax−CK3=−βWmax⇒K=3CβWmax
Recall Feynman: 12-saal ke bachche ko explain karo
Socho ki tum ek patli pipe mein paani daal rahe ho lekin pipe dikhi nahi. Tum ek trickle se shuru karte ho, phir har second flow ko double karte ho yeh dhundhne ke liye ki kitna laggta hai. Jis moment paani wapas splash kare (ek packet lost ho gaya), tum samajh jaate ho ki tumne bahut hard push kiya, toh tum flow ko aadha kaar do aur phir sirf thodi thodi si zyada har second mein add karo, perfect amount ki taraf sneaking up karte hue. Agar splash ek tiny dribble tha (3 duplicate "mujhe abhi bhi ek missing hai!" notes), toh sirf halve karo. Agar pipe completely silent ho gayi (timeout), toh trickle par wapas slam karo. CUBIC ek smarter version hai: yeh yaad rakhta hai woh flow rate jisne last splash cause kiya, race back up karta hai just below tak, usse test karne ke liye pause karta hai, phir carefully upar push karta hai dekhne ke liye ki kahin pipe badi toh nahi hui.
Exactly TEEN duplicate ACKs kyun fast retransmit trigger karte hain?
1–2 dup ACKs packet reordering ho sakti hai; 3 strong evidence hai ki segment truly lost ho gaya, toh RTO ka wait kiye bina retransmit karo.
CUBIC ka window function likho.
W(t) = C·(t−K)³ + W_max, t = last loss ke baad ka time.
CUBIC mein K derive karo.
W(0)=(1−β)W_max require karo ⇒ −C·K³ = −β·W_max ⇒ K = ∛(β·W_max / C).
CUBIC ki concave-then-convex shape clever kyun hai?
Concave: fast grow karo phir purane W_max ke paas slow karo (danger zone ke paas caution); K ke baad convex: new bandwidth probe karne ke liye accelerate karo.
CUBIC Reno se better RTT fairness kyun deta hai?
Iski growth RTT par nahi balki loss ke baad real elapsed time par depend karti hai, toh different RTTs wale flows similarly grow karte hain.