TCP-inställning
Internetprotokollsvit |
---|
Applikationslager |
Transportlager |
Internetlager |
Länklager |
TCP-inställningstekniker justerar parametrarna för undvikande av överbelastning i nätverket för TCP-anslutningar ( Transmission Control Protocol) över nätverk med hög bandbredd och hög latens . Väljusterade nätverk kan prestera upp till 10 gånger snabbare i vissa fall. Men att blint följa instruktioner utan att förstå deras verkliga konsekvenser kan också skada prestandan.
Nätverks- och systemegenskaper
Bandbreddsfördröjningsprodukt (BDP)
Bandwidth-delay product (BDP) är en term som i första hand används i samband med TCP för att hänvisa till antalet byte som krävs för att fylla en TCP-"sökväg", dvs. det är lika med det maximala antalet samtidiga bitar i transit mellan sändaren och mottagare.
Högpresterande nätverk har mycket stora BDP:er. För att ge ett praktiskt exempel kan två noder som kommunicerar över en geostationär satellitlänk med en tur och retur fördröjningstid (eller tur och returtid, RTT) på 0,5 sekunder och en bandbredd på 10 Gbit/s ha upp till 0,5×10 10 bitar , dvs 5 Gbit = 625 MB obekräftad data under flygning. Trots att de har mycket lägre latenser än satellitlänkar, kan även markbundna fiberlänkar ha mycket höga BDP:er eftersom deras länkkapacitet är så stor. Operativsystem och protokoll som utformades så sent som för några år sedan när nätverken var långsammare var inställda för BDP:er av storleksordningar mindre, med konsekvenser för begränsad prestanda.
Buffertar
De ursprungliga TCP-konfigurationerna som stödde TCP tar emot fönsterstorleksbuffertar på upp till 65 535 (64 KiB - 1) byte, vilket var tillräckligt för långsamma länkar eller länkar med små RTT:er . Större buffertar krävs av de högpresterande alternativen som beskrivs nedan.
Buffring används i hela högpresterande nätverkssystem för att hantera förseningar i systemet. I allmänhet kommer buffertstorleken att behöva skalas proportionellt mot mängden data "under flight" när som helst. För tillämpningar med mycket hög prestanda som inte är känsliga för nätverksfördröjningar är det möjligt att lägga in stora buffringsfördröjningar från slut till ände genom att lägga in mellanliggande datalagringspunkter i ett slut till slut-system, och sedan använda automatiserade och schemalagda icke-realtid dataöverföringar för att få data till sina slutliga slutpunkter.
TCP hastighetsgränser
Maximal möjlig genomströmning för en enskild TCP-anslutning bestäms av olika faktorer. En trivial begränsning är den maximala bandbredden för den långsammaste länken i vägen. Men det finns också andra, mindre uppenbara gränser för TCP-genomströmning. Bitfel kan skapa en begränsning för såväl anslutningen som RTT.
Fönsterstorlek
I datornätverk är RWIN (TCP Receive Window) mängden data som en dator kan acceptera utan att bekräfta avsändaren . Om avsändaren inte har fått bekräftelse för det första paketet den skickade, kommer den att stanna och vänta och om denna väntan överskrider en viss gräns kan den till och med sända om . Detta är hur TCP uppnår tillförlitlig dataöverföring .
Även om det inte finns någon paketförlust i nätverket, kan fönsterbildning begränsa genomströmningen. Eftersom TCP överför data upp till fönsterstorleken innan man väntar på bekräftelserna, kan det hända att hela nätverkets bandbredd inte alltid används. Begränsningen som orsakas av fönsterstorleken kan beräknas enligt följande:
där RWIN är TCP-mottagningsfönstret och RTT är tiden för vägen fram och tillbaka.
Vid varje given tidpunkt motsvarar fönstret som annonseras av mottagningssidan av TCP den mängd ledigt mottagningsminne som den har allokerat för denna anslutning. Annars riskerar det att tappa mottagna paket på grund av utrymmesbrist.
Den sändande sidan bör också allokera samma mängd minne som mottagningssidan för bra prestanda. Det beror på att även efter att data har skickats på nätverket måste den sändande sidan hålla det i minnet tills det har bekräftats som framgångsrikt mottaget, ifall det skulle behöva sändas om. Om mottagaren är långt borta kommer det ta lång tid innan bekräftelserna kommer fram. Om sändningsminnet är litet kan det mätta och blockera emission. En enkel beräkning ger samma optimala sändningsminnesstorlek som för mottagarminnesstorleken som anges ovan.
Paketförlust
När paketförlust inträffar i nätverket sätts en ytterligare gräns på anslutningen. I fallet med lätt till måttlig paketförlust när TCP-hastigheten begränsas av algoritmen för att undvika trafikstockningar, kan gränsen beräknas enligt formeln (Mathis, et al.):
där MSS är den maximala segmentstorleken och P- förlust är sannolikheten för paketförlust. Om paketförlust är så sällsynt att TCP-fönstret regelbundet förlängs helt, gäller inte denna formel.
TCP-alternativ för hög prestanda
Ett antal förlängningar har gjorts till TCP under åren för att öka dess prestanda över snabba hög-RTT-länkar ("long fat networks" eller LFNs).
TCP- tidsstämplar (RFC 1323) spelar en dubbel roll: de undviker oklarheter på grund av att 32-bitars sekvensnummerfältet lindas runt, och de tillåter mer exakt RTT-uppskattning i närvaro av flera förluster per RTT. Med dessa förbättringar blir det rimligt att öka TCP-fönstret över 64 kB, vilket kan göras med för fönsterskalning (RFC 1323).
TCP selektiv bekräftelse (SACK, RFC 2018) tillåter en TCP-mottagare att exakt informera TCP-avsändaren om vilka segment som har gått förlorade. Detta ökar prestandan på länkar med hög RTT, när flera förluster per fönster är möjliga.
Path MTU Discovery undviker behovet av fragmentering i nätverket , vilket ökar prestandan vid paketförlust.
Trimma långsamma anslutningar
Standard IP-kölängd är 1000, vilket i allmänhet är för stort. Föreställ dig en Wi-Fi-basstation med en hastighet på 20 Mbit/s och en genomsnittlig paketstorlek på 750 byte. Hur stor ska IP-kön vara? En röst över IP- klient ska kunna sända ett paket var 20:e ms. Det uppskattade maximala antalet paket i transit skulle då vara:
Uppskattad buffertstorlek = 20000000 * 0,020 / 8 / 750 = 66
Det är bättre att begränsa kölängden till:
ifconfig wlan0 mtu 1492 txqueuelen 100
Se även
externa länkar
- RFC 1323 - TCP-tillägg för hög prestanda
- RFC 2018 - TCP Selective Acknowledgement Options
- RFC 2582 - NewReno-ändringen av TCP:s snabba återställningsalgoritm
- RFC 2488 - Förbättra TCP över satellitkanaler med hjälp av standardmekanismer
- RFC 2883 - En utökning av alternativet Selective Acknowledgement (SACK) för TCP
- RFC 3517 - En konservativ selektiv bekräftelsebaserad algoritm för förluståterställning för TCP
- RFC 4138 - Forward RTO-Recovery (F-RTO): En algoritm för att upptäcka falska återsändningstidsgränser med TCP och Stream Control Transmission Protocol (SCTP)
- TCP Tuning Guide , ESnet
- The Cable Guy: TCP Receive Window Auto-Tuning
- Web100 Data Bandwidth Testing
- DrTCP - ett verktyg för Microsoft Windows (före Vista ) som snabbt kan ändra TCP- prestandaparametrar i registret.
- Information om att "justera" din TCP-stack , bredbandsrapporter
- TCP/IP Analyzer , speedguide.net
- NTTTCP Network Performance Test Tool , Microsoft Windows Server Performance Team Blog
- Bästa metoder för TCP-optimering - ExtraHop