Hoofdindex » Servers » TechTalk » Sliding Window
Webservers en meer
TechTalk
Sliding window
Reklame!
"Telenet verdubbelt de downloadsnelheid blah blah blah..." kreeg ik een paar dagen geleden ongevraagd in mijn hoogstpersoonlijke mailbox. En verder kon ik lezen "Praktijktests in oktober van dit jaar door Telenet leerden dat consumenten wel degelijk de positieve impact voelden van een snelheidsverdubbeling, vooral voor multimediatoepassingen.". Je kan de klanten alles doen geloven, als je je boodschap maar vaak genoeg herhaalt. Ethernet is zo'n complex systeem, dat waarschijnlijk minder dan 1% van de bevolking precies weet hoe het internet eigenlijk werkt.

Ethernet: pakjesdienst

Als je een bestand van een server naar een klant wenst te versturen, wordt het bestand eerst in stukken gekapt. Bij ethernet (het internet-protocol) is dit ongeveer 1500 bytes, bij ATM 48 bytes. Het voordeel van de paketten (segmenten is de juiste benaming) is dat het netwerk optimaal wordt benut: pakketten van andere gebruikers kunnen terzelfdertijd verstuurd worden over eenzelfde verbinding. Bij klassieke telefonie is de lijn in gebruik van zodra een gebruiker in verbinding is, zelfs als hij niet spreekt.

bestand wordt in pakketten verdeeld

Bij ethernet volgt iedere pakket zijn eigen weg. De centrales onderweg sturen ieder pakket door, gebruik makend van de verbinding dat het minst belast is (bij ATM wordt vooraf een vaste pad vastgelegd en alle pakketten volgen dezelfde weg).

Verschil TCP en UDP

Bij het versturen van gegevens over het ethernet kan er gebruik gemaakt worden van twee protocollen: UDP of TCP.
UDP user datagram protocol
Bij dit protocol worden de gegevens verstuurd zonder bevestiging van de ontvanger. Bij de post is dit vergelijkbaar met een normale verzending, wij techniekers gebruiken het begrip connectionless. UDP is supersnel en wordt vooral gebruikt voor DNS berichten (waarbij de snelheid primeert). Een ander kenmerk van DNS berichten is dat ze altijd korter zijn dan de MTU (maximum transfer unit, de maximale grootte van een segment), en dus in één pakket verstuurd kunnen worden. Bij UDP weet de zender niet of de ontvanger het bericht wel ontvangen heeft.
TCP transfer control protocol
Na ieder pakket stuurt de ontvanger een bevestiging (ACK = acknowledgment) dat hij het pakket ontvangen heeft. Het is vergelijkbaar met een aangetekende zending met ontvangstbevestiging. Voor de hogere protocollen in het OSI model (http=web of smtp=mail) lijkt het of er een fysieke verbinding (connection of VC = virtual circuit) bestaat tussen server en client.

IP internet protocol
Het internet protocol is een lager protocol. Zowel TCP als UDP maken gebruik van IP om hun gegevens te versturen. Het voorziet niet in foutcorrectie en geeft enkel een "best service" zonder garantie dat een pakket foutloos toekomt. IP zou je kunnen vergelijken met de vervoersmaatschappij zelf, die alle pakjes op dezelfde manier verstuurd (namelijk in éénzelfde camionette). Het bovenliggend protocol (TCP alias de opdrachtgever) moet ervoor zorgen dat de pakketten bevestigd worden en ze zonodig opnieuw versturen.
Er bestaan nog talrijke andere protocollen die over het IP (=ethernet) verstuurd worden, maar die worden hier niet in detail besproken. Het zijn bijvoorbeeld netbeheer-protocollen zoals ICMP. Zonder deze protocollen zou het internet niet goed kunnen werken.

Bestandsoverdracht met TCP


TCP wordt hier verder uitgelegd.
Het gros van het internet-verkeer gebeurt met het TCP protocol. Dit protocol zorgt ervoor dat de zender kan nazien of de pakketten wel degelijk toekomen, en kan ze eventueel opnieuw versturen.

Foutcorrectie is eveneens ingebouwd in ieder pakket. Bij het ontvangen van een verminkt pakket stuurt de client een NAK = negative acknowledgment of negatieve bevestiging terug. Als de bevestiging zelf verminkt is, wordt het als verloren beschouwd, waarbij de server na een tijdje het pakket opnieuw zal versturen. Voor bestanden is foutcorrectie van groot belang, het is niet de bedoeling dat de bestanden verminkt worden, zelfs al kunnen pakketten onderweg vermist worden.

bestand wordt over het internet verstuurd

In het voorbeeld wordt het bestand foto.jpg over het internet verstuurd (de rode blokjes). Iedere pakket (van ongeveer 1500 bytes) volgt zijn eigen weg, en kan dus uit sekwentie (in de verkeerde volgorde) toekomen. De ontvanger heeft dus al pakket 1 en 3 ontvangen. Voor ieder pakket dat ontvangen werd, stuurt de ontvanger een bevestiging terug (de blauwe blokjes).

Nu is het zo dat de zender niet zomaar zijn pakketten het internet mag insturen. Ten eerste moeten de pakketten in het geheugen bewaard worden (voor het geval een pakket niet zou toekomen en opnieuw verstuurd moet worden), ten tweede, er moet ervoor gezorgd worden dat het internet niet overbelast wordt met talrijke pakketten die onderweg zijn. Er moet er dus voor gezorgd worden dat het aantal pakketten dat onderweg is beperkt is. Bij die pakketten worden de data-paketten gerekend, maar ook de bevestigingspaketten. Dit is een taak van één van de andere ethernet protocollen.
Veronderstel dat er 6 paketten onderweg zijn (we nemen aan dat de bevestiging voor pakket 3 ondertussen is toegekomen).

De situatie aan de kant van de zender ziet er als volgt uit:

Sliding window (wachtvenster)

de sliding window in de praktijk

Pakket 1 en 3 zijn bij de ontvanger toegekomen en bevestigd. De pakketten 2 4 5 6 en 7 zijn nog onderweg (misschien dat 2 en 4 reeds zijn toegekomen en dat de bevestiging onderweg is, maar de afzender kan dit niet weten). De zender zal nu wachten totdat pakket 2 bevestigd wordt, vooraleer pakket 8 verstuurd kan worden (omdat de sliding window op 6 staat ingesteld). Eenmaal pakket 2 ontvangen verschuift het wachtvenster (vandaar de naam 'sliding window').

Veronderstel dat een pakket verloren is gegaan (de data òf de bevestiging). Na een tijdje (de zender bepaalt de round-trip time (RTT) van de overige paketten die wel bevestigd zijn en telt daar een paar kilosmoks bij) wordt het pakket als verloren beschouwd en opnieuw verstuurd.

  • Hoe groot de sliding window is wordt bepaald door het netwerk zelf (hoe zwaar het belast wordt: bij dreigende overbelasting (congestion) wordt de sliding window verkleind: ICMP Source Quelch).
    Maar het wordt ook bepaald door de beperkingen van zowel zender als ontvanger:
  • de zender moet de nog niet bevestigde stukken in een buffer bewaren mocht er iets mis lopen, en
  • de ontvanger moet de ontvangen pakketten kunnen bufferen, zodat er een ononderbroken datastroom (het bestand zonder gaten) aan het bovenliggend protocol (web of mail toepassing) aangeboden kan worden.

Waarom is de uploadsnelheid
zo laag bij Telenet
?

Downloadsnelheid bepaald door de uploadsnelheid

Veronderstel dat een provider een downloadsnelheid van 1000 kB adverteert. De uploadsnelheid bedraagt slechts 10 kB maar dat wordt slechts in heel kleine lettertjes vermeld.

Je hebt gelezen dat een pakket 1500 bytes aan data bevat. Per seconde worden er dus maximaal 666 paketten ontvangen (1000000 gedeeld door 1500). Per seconde kunnen er echter maar 185 bevestigingspaketten verstuurd worden (10000 gedeeld door 54). Die 54 is de minimale pakketgrotte dat bij een bevestiging gebruikt wordt. Omdat de server op de bevestiging moet wachten, is de uiteindelijke snelheid beperkt tot 185 * 1500 = 277.5 kB, —éénvierde van de aangekondigde snelheid! In de praktijk is de downloadsnelheid beperkt tot 28 × de uploadsnelheid voor grote bestanden.

Je hebt dat waarschijnlijk zelf ondervonden: bij het downloaden van een groot bestand verloopt het downloaden aanvankelijk heel snel, om na een paar seconden terug te vallen op een veel lagere waarde. De server stuurt namelijk de eerste pakketten aan de maximale netwerksnelheid, maar moet later vertragen omdat er nog geen bevestigingen ontvangen zijn. Wat verkopers je allemaal niet doen geloven!

Downloadsnelheid in de praktijk

Hebben de verkopers dan gelogen door te claimen dat de downloadsnelheid 1000 kB bedraagt? Neen, natuurlijk niet. De downloadsnelheid bedraagt theoretisch 1000 kB. Bij kleine bestanden zal je daar geen hinder van ondervinden (de bestanden passen ofwel in een pakket of kunnen verstuurd worden zonder dat de sliding window in aktie moet treden). Speed tests gebruiken UDP om de exacte downloadsnelheid aan te geven (bij UDP moet de zender niet wachten op een bevestiging).

Surfers geloven maar al te graag wat hun voorgeschoteld wordt, zeker als het door "wetenschappelijke metingen" wordt bevestigd.

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's