Windows Server 2019
Nieuwe serverversie met betere TCP-stack en HTTP/2
Microsoft bouwt bij de komende Windows Server 2019 twee wezenlijke verbeteringen in: de Cubicmethode in de TCP-stack én HTTP/2 versnellen het internetverkeer duidelijk en komen ook pc-gebruikers ten goede.
Cubic is een methode die servers met het TCP-protocol gebruiken om internetverbindingen optimaal te benutten. Cubic zit al sinds versie 1703 ook in Windows 10. Cubic is naast Reno, NewReno en Compound TCP een van vele beschikbare opties. Cubic vervangt Compo en TCP (CTCP) als standaardinstelling. Linux werkt er al sinds 2006 mee.
Bij normaal TCP wordt het Congestion Window (CWND) door de zender al doende zodanig aangepast dat de dataverbinding optimaal is benut en het dataverlies zo gering mogelijk blijft. Dat begint langzaam (Slow Start), maar gaat al gauw te snel voor de meeste routers op het pad, zodat die pakketten weggooien. Dan wordt de CWIN weer kleiner gemaakt. Dat werkt sinds 1981 al zo, toen TCP gestandaardiseerd werd. Bij Reno en NewReno werd het CWND na een pakketverlies alleen nog lineair vergroot met één pakket per Round Trip Time (RTT). Dan duurt het wel langer voordat een verbinding optimaal benut wordt, waardoor veel capaciteit onbenut blijft.
Bij CTCP van Microsoft wordt daarnaast een DWND-waarde gebruikt die afhankelijk is van de RTT van de afzonderlijke pakketten. Dat maakt een fijnere regeling mogelijk en verlaagt de zendsnelheid nog voordat er pakketverlies optreedt.
Tegelijkertijd ontstond Cubic. Dat vergroot het CWND met een derdemachtsfunctie, vandaar de naam. Het CNWD wordt na pakketverlies dan minder snel kleiner gemaakt, waardoor het een optimale methode lijkt voor het benutten van de capaciteit van een verbinding.
Cubic is volgens Microsoft sneller dan CTCP bij het versturen van grote hoeveelheden data. In de afbeelding is duidelijk te zien wat het effect is. Het netto resultaat: een hogere datasnelheid. Bij Windows 10 kun je met het Powershell-commando getnettcpsetting -Setting internet controleren of er bij CongestionProvider CUBIC staat. Cubic blijkt in de praktijk sneller dan (New) Reno en CTCP.
HTTP/2
Ook HTTP/2 is een welkome uitbreiding met meerdere voordelen. Dat wordt door alle huidige browsers standaard ondersteund. Bij HTTP 1.0 heeft een browser voor elke HTTP-request een aparte TCP-verbinding nodig. De afbeeldingen, stylesheets, banners en andere elementen worden apart opgevraagd. Bij HTTP 1.0 is een TCP-verbinding wel voor meerdere sequentiële requests te gebruiken. HTTP/2 voert die insteek verder door en stuurt meerdere requests over een enkele TCP-verbinding (multiplexing).
Bovendien comprimeert HTTP/2 de HTTP-header. Dat versnelt met name de requests aan het begin van een TCP-verbinding, want dan zijn er voor de HTMLdocumenten, scripts, stylesheets en dergelijke veel requests nodig. Dan is de CWND nog klein, zodat de boel maar langzaam binnen komt druppelen. Door het comprimeren van de header gaat dat dan sneller. Daarbij mag een HTTP/2-server data zoals scripts en stylesheets zelf versturen, ook als de client daar zelf niet om gevraagd heeft (Server Push).
Server-tuning
Windows Server 2019 moet websites ook via HTTP/2 kunnen leveren. Daarbij blijft de HTTP-server-API gewoon bruikbaar. De server herkent zelf of een browser met HTTP/2 overweg kan en gebruikt dat dan automatisch. Microsoft heeft het TLS-deel voor HTTP/2 in de kernelmode gestopt, zodat er niet meer gewisseld hoeft te worden tussen de user- en kernelmode, wat de latentie een paar milliseconden kleiner maakt.
IIS, Microsofts eigen webserver, gebruikt HTTP/2 op TLS-verbindingen zonder verdere configuratie en biedt configuratiemogelijkheden voor Server Push en een eigen IIS-API voor webdesigners.
Met Firefox kun je makkelijk testen of een server websites via HTTP/2 levert. Open het menu 'Webontwikkeling / Netwerk' en vraag de te testen website op. Firefox laat dan een lijst van HTTP-requests zien. Klik op het basisbestand, bijvoorbeeld index. html. Rechts in het venster verschijnt dan meer informatie, waar bij 'Headers' dan de gebruikte HTTP-versie staat. (nkr)