C’t Magazine

Windows Server 2019

Nieuwe serververs­ie met betere TCP-stack en HTTP/2

- Christoph Lüders en Martin Winkler

Microsoft bouwt bij de komende Windows Server 2019 twee wezenlijke verbeterin­gen in: de Cubicmetho­de in de TCP-stack én HTTP/2 versnellen het internetve­rkeer duidelijk en komen ook pc-gebruikers ten goede.

Cubic is een methode die servers met het TCP-protocol gebruiken om internetve­rbindingen optimaal te benutten. Cubic zit al sinds versie 1703 ook in Windows 10. Cubic is naast Reno, NewReno en Compound TCP een van vele beschikbar­e opties. Cubic vervangt Compo en TCP (CTCP) als standaardi­nstelling. Linux werkt er al sinds 2006 mee.

Bij normaal TCP wordt het Congestion Window (CWND) door de zender al doende zodanig aangepast dat de dataverbin­ding optimaal is benut en het dataverlie­s 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 gestandaar­diseerd werd. Bij Reno en NewReno werd het CWND na een pakketverl­ies 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 afhankelij­k is van de RTT van de afzonderli­jke pakketten. Dat maakt een fijnere regeling mogelijk en verlaagt de zendsnelhe­id nog voordat er pakketverl­ies optreedt.

Tegelijker­tijd ontstond Cubic. Dat vergroot het CWND met een derdemacht­sfunctie, vandaar de naam. Het CNWD wordt na pakketverl­ies 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 hoeveelhed­en data. In de afbeelding is duidelijk te zien wat het effect is. Het netto resultaat: een hogere datasnelhe­id. Bij Windows 10 kun je met het Powershell-commando getnettcps­etting -Setting internet controlere­n of er bij Congestion­Provider CUBIC staat. Cubic blijkt in de praktijk sneller dan (New) Reno en CTCP.

HTTP/2

Ook HTTP/2 is een welkome uitbreidin­g met meerdere voordelen. Dat wordt door alle huidige browsers standaard ondersteun­d. Bij HTTP 1.0 heeft een browser voor elke HTTP-request een aparte TCP-verbinding nodig. De afbeelding­en, stylesheet­s, banners en andere elementen worden apart opgevraagd. Bij HTTP 1.0 is een TCP-verbinding wel voor meerdere sequentiël­e requests te gebruiken. HTTP/2 voert die insteek verder door en stuurt meerdere requests over een enkele TCP-verbinding (multiplexi­ng).

Bovendien comprimeer­t HTTP/2 de HTTP-header. Dat versnelt met name de requests aan het begin van een TCP-verbinding, want dan zijn er voor de HTMLdocume­nten, scripts, stylesheet­s en dergelijke veel requests nodig. Dan is de CWND nog klein, zodat de boel maar langzaam binnen komt druppelen. Door het comprimere­n van de header gaat dat dan sneller. Daarbij mag een HTTP/2-server data zoals scripts en stylesheet­s 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 automatisc­h. 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 millisecon­den kleiner maakt.

IIS, Microsofts eigen webserver, gebruikt HTTP/2 op TLS-verbinding­en zonder verdere configurat­ie en biedt configurat­iemogelijk­heden voor Server Push en een eigen IIS-API voor webdesigne­rs.

Met Firefox kun je makkelijk testen of een server websites via HTTP/2 levert. Open het menu 'Webontwikk­eling / Netwerk' en vraag de te testen website op. Firefox laat dan een lijst van HTTP-requests zien. Klik op het basisbesta­nd, bijvoorbee­ld index. html. Rechts in het venster verschijnt dan meer informatie, waar bij 'Headers' dan de gebruikte HTTP-versie staat. (nkr)

 ??  ?? Linuxers weten het al langer, maar nu heeft Microsoft het ook ingevoerd: de Cubic-methode zorgt sneller voor een optimaal benutte verbinding dan Reno.
Linuxers weten het al langer, maar nu heeft Microsoft het ook ingevoerd: de Cubic-methode zorgt sneller voor een optimaal benutte verbinding dan Reno.

Newspapers in Dutch

Newspapers from Netherlands