# Slow-start

Slow-start TCP protokoloaren kongestio kontrolerako teknika bat da.
Ez igorleak ezta hartzaileak ere ezin dute jakin zein den sarean zehar transmititu daitekeen datu-fluxua, ez daukatelako informazio hori transmitituko duten elementuen xehetasunen berri. Sarean kongestioa ematen bada, sarea bera paketeak alboratzen hasiko da eta hauek birtransmitituak izan beharko dira. Honek sareko kongestioa handiagotuko du. Algoritmo honek proposatzen duen irtenbidea datu kopuru txiki bat bidaltzen hastean datza, zeina inkrementatuz joango den sarea gainezkatu arte. Egoera honetara iristen denean, bidaltze-tasa txikitzen da, gainezkatzea ekiditeko.

## Algoritmoaren osagaiak
### Slow-start

Protokolo honek kongestio-leiho izeneko leihoa definitzen du, zeinak honako funtzionamendua duen:
* Kongestio-leihoa segmentu tamaina maximo batekin hasieratzen da (Maximum Segment Size).
* Leihoa jasotzen duen ACK bakoitzeko ACK horrek onartutako byte kopuruan handitzen da (honekin RTT bakoitzeko leihoaren tamaina bikoizten da), baina trama baten ACK iristen ez denean, TCP protokoloak kongestio-seinaletzat hartzen du eta hemendik aurrera hazkundea lineala da (RTT bakoitzeko unitate batean inkrementatzen da leihoa, geroago ikusiko dugun congestion avoidance aplikatzen da).
* Igorleak transmisio-leihoaren eta kongestio-leihoaren arteko baliorik txikiena (bytetan) igortzen du.
Funtzionamendu honek kongestio-leihoaren hazkundea logaritmikoa izatea dakar, orokorrean. Hala ere, hartzaileak ACK onespenak atzeratu ditzake, onespen bat bidaliz jasotako bi segmentuko. Segmentu baten bidalketarekin hasten da algoritmoa, honen onespena jasotakoan (suposatuz ACK bakoitzak byte baten onarpena suposatzen duela) beste bi bidaliko dira, hauen bi onespenak jasotakoan lau segmentu bidali daitezke bi onespenak iritsi badira, baina hiru bakarrik ACK bakar bat jaso badugu. Prozesuak berdin jarraitzen du sarearen kongestioa eman arte edo kongestio-leiho honen tamaina transmisio-leihoarenaren berdina izan arte.
Bidalitako segmentu baten onespenik iristen ez bada, protokoloak sarea gainezkatu dela suposatuko du eta bere transmisio-tasa txikituko du, berriz ere segmentu bakarra bidaliz hasieran eta honen kopurua handiagotuz, azaldutakoaren arabera.

### Congestion avoidance

Slow-start algoritmoaren adibidea jarraitzen du, baina honen hazkundea ez da logaritmikoa izango, lineala baizik. Hau da, bidalitako leiho oso bakoitzeko (eta ez jasotako onespen bakoitzeko) MSS unitate batean handitzen da.

### Kongestio muga

Kongestio muga 65535 bytekoa da hasiera batean eta balioa kongestio-leihoaren tamainaren erdira murrizten da igorleak sarean kongestio bat atzematerakoan, baina ez da inoiz ere bi segmentu baino gutxiagokoa izango.
Baldin eta kongestio-leihoaren tamaina kongestio-mugarena baino txikiagoa edo berdina bada, Slow-Start algoritmoa erabiliko da eta besterako kasuetan congestion avoidance algoritmoa erabiliko da.

## Algoritmo orokorraren funtzionamendua

Hasiera batean kongestio-muga 65535 byte-koa da eta Slow-start algoritmoa erabiltzen da. Kongestio bat atzematerakoan, hau da, ACK onespen bat falta denean, kongestio-muga kongestio-leihoaren tamainaren erdira txikitzen da (balio hau bi segmentu baino txikiagoa ez delarik) eta Slow-start algoritmoarekin berrasieratzen da. Behin kongestio-muga gainditutakoan, congestion avoidance algoritmoa aplikatzen da (hazkunde lineala), berriz ere sarean kongestio bat atzeman arte, kasu honetan kongestio-muga eguneratu eta Slow-Start algoritmoa aplikatzen da, lehengo pausoa errepikatuz.
Transmisio-leihoak ezarritako transmisio-tasa ezin izango da inoiz gainditu.

## Ikus, gainera

Kongestioa kontrolatzeko algoritmo

## Kanpo estekak

* Datuak: Q2630516