KUBISK TCP
CUBIC är en algoritm för undvikande av överbelastning i nätverk för TCP som kan uppnå högbandbreddsanslutningar över nätverk snabbare och pålitligare inför hög latens än tidigare algoritmer. Det hjälper till att optimera långa fettnätverk .
2006 släpptes den första CUBIC-implementeringen i Linux- kärnan 2.6.13 . Sedan kärnversion 2.6.19 ersätter CUBIC BIC-TCP som standardalgoritmen för TCP-överbelastningskontroll i Linux-kärnan.
MacOS antog TCP CUBIC med OS X Yosemite -utgåvan 2014, medan den tidigare versionen OS X Mavericks fortfarande använde TCP New Reno.
Microsoft antog det som standard i Windows 10.1709 Fall Creators Update (2017) och Windows Server 2016 1709-uppdateringen.
Egenskaper
CUBIC är en mindre aggressiv och mer systematisk derivata av BIC TCP , där fönsterstorleken är en kubisk funktion av tiden sedan den senaste stockningshändelsen, med böjningspunkten inställd på fönsterstorleken före händelsen. Eftersom det är en kubisk funktion finns det två komponenter för fönstertillväxt. Den första är en konkav del där fönsterstorleken snabbt ökar till storleken före den sista trängselhändelsen. Nästa är den konvexa tillväxten där CUBIC söker efter mer bandbredd, långsamt först och sedan mycket snabbt. CUBIC tillbringar mycket tid på en platå mellan den konkava och konvexa tillväxtregionen vilket gör att nätverket kan stabiliseras innan CUBIC börjar leta efter mer bandbredd.
En annan stor skillnad mellan CUBIC och många tidigare TCP-algoritmer är att den inte förlitar sig på kadensen hos RTT:er för att öka fönsterstorleken. CUBICs fönsterstorlek beror endast på den senaste stockningshändelsen. Med tidigare algoritmer som TCP New Reno kommer flöden med mycket korta fördröjningstider för tur och retur (RTT) att ta emot ACKs snabbare och därför få deras överbelastningsfönster att växa snabbare än andra flöden med längre RTT. CUBIC möjliggör mer rättvisa mellan flöden eftersom fönstertillväxten är oberoende av RTT.
Algoritm
CUBIC ökar sitt fönster för att vara realtidsberoende, inte RTT-beroende som BIC. Beräkningen för cwnd (congestion window) är också enklare än BIC.
Definiera följande variabler:
- β : Multiplikativ minskningsfaktor
- w max : Fönsterstorlek strax före den senaste minskningen
- T : Tid som förflutit sedan den senaste fönsterminskningen
- C : En skalningskonstant
- cwnd : Överbelastningsfönstret vid den aktuella tiden
RFC 8312 indikerar följande:
- Enheten för alla fönsterstorlekar i detta dokument är segment av den maximala segmentstorleken (MSS), och enheten för alla tider är sekunder. (Avsnitt 4)
- β SKA sättas till 0,7 (avsnitt 4.5)
- C BÖR sättas till 0,4 (avsnitt 5)
Sedan kan cwnd modelleras av:
Se även
- TCP-algoritm för att undvika överbelastning
- Transmission Control Protocol § Utveckling
- SCTP
- Sammansatt TCP
Förutom fönsterbaserade algoritmer som Cubic, finns det hastighetsbaserade algoritmer (inklusive BBR från Google) som fungerar annorlunda med "sändningshastighet" istället för fönstret