TCP salarelv: võrguvoolu juhtimine ja võrgu ummikute juhtimine

TCP usaldusväärsuse transport
Oleme TCP -protokolli kui usaldusväärse transpordiprotokolliga tuttavad, kuid kuidas see tagab transpordi usaldusväärsuse?

Usaldusväärse ülekande saavutamiseks tuleb arvestada paljude teguritega, näiteks andmete korruptsioon, kaotus, dubleerimine ja tellimusteta killud. Kui neid probleeme ei saa lahendada, ei saa usaldusväärset ülekannet saavutada.

Seetõttu kasutab TCP usaldusväärse ülekande saavutamiseks selliseid mehhanisme nagu järjestuse number, kinnitusvastus, kontrollimine, ühenduse haldamine ja akna juhtimine.

Selles artiklis keskendume TCP libisevale aknale, voolu juhtimisele ja ummikutele. Järgmises jaotises käsitletakse ümbersõidumehhanismi eraldi.

Võrguvoolu juhtimine
Võrguvoolu juhtimine või kui teada võrguliikluse juhtimine on tegelikult tootjate ja tarbijate vahelise peene suhte ilming. Tõenäoliselt olete selle stsenaariumi kohanud palju tööl või intervjuudes. Kui tootja suutlikkus toota ületab oluliselt tarbija tarbimisvõimet, põhjustab see järjekorra määramata ajaks kasvamise. Tõsisemal juhul võite teada, et kui RabbitMQ sõnumid liiga palju kuhjavad, võib see põhjustada kogu MQ -serveri jõudluse halvenemise. Sama kehtib TCP kohta; Kui see jäetakse kontrollimata, pannakse võrku liiga palju sõnumeid ja tarbijad on ületanud oma mahu, samal ajal kui tootjad jätkavad duplikaatide saatmist, mis mõjutab oluliselt võrgu jõudlust.

Selle nähtuse lahendamiseks pakub TCP saatjale mehhanismi, et juhtida vastuvõtja tegeliku vastuvõtuvõimsuse põhjal saadetud andmete kogust, mida tuntakse voolu juhtimisena. Vastuvõtja hooldab vastuvõtuaknat, saatja aga saatmise akna. Tuleb märkida, et need aknad on mõeldud ainult ühe TCP -ühenduse jaoks ja mitte kõik ühendused ei jaga akent.

TCP tagab voolu juhtimise, kasutades vastuvõtuakna muutujat. Vastuvõtuaken annab saatjale märku, kui palju vahemälu ruumi veel saadaval on. Saatja kontrollib saadetud andmete hulka vastavalt vastuvõtja tegelikule vastuvõtmisvõimele.

Vastuvõtja host teatab saatjale, mida ta saab saada, ja saatja saadab selle piiri. See piir on akna suurus, kas mäletate TCP päist? Seal on vastuvõtuakna väli, mida kasutatakse baitide arvu, mida vastuvõtja suudab või on valmis saama.

Saatja host saadab perioodiliselt aknatundide paketi, mida kasutatakse tuvastamiseks, kas vastuvõtja host suudab endiselt andmeid aktsepteerida. Kui vastuvõtja puhver on ülevoolu ohus, seatakse akna suurus väiksema väärtuseni, et juhendada saatjat kontrollima saadetud andmete kogust.

Siin on võrguvoolu juhtimisskeem:

Liikluskontroll

Võrgu ummikute kontroll
Enne ummikukontrolli tutvustamist peame mõistma, et lisaks vastuvõtuaknale ja saatmisaknale on olemas ka ummikute aken, mida kasutatakse peamiselt probleemi lahendamiseks, millise kiirusega hakkab saatja andmeid vastuvõtuaknasse saatma. Seetõttu säilitab ummikute aken ka TCP saatja. Vajame algoritmi, et otsustada, kui palju andmeid on asjakohane saata, kuna liiga vähe või liiga palju andmeid saatmine pole ideaalne, seega on ummikute kontseptsioon.

Eelmises võrguvoogude juhtimises vältisime saatja, kes täitis vastuvõtja vahemälu andmetega, kuid me ei teadnud, mis võrgus toimus. Tavaliselt on arvutivõrgud ühises keskkonnas. Selle tulemusel võivad teiste võõrustajate vahelise suhtluse tõttu olla võrguummikuid.

Kui võrk on ülekoormatud, kui jätkatakse paljude pakettide saatmist, võib see põhjustada selliseid probleeme nagu viivitus ja pakettide kadumine. Sel hetkel edastab TCP andmeid, kuid edasiandmine suurendab võrgu koormust, mille tulemuseks on suuremad viivitused ja rohkem pakkide kaotusi. See võib sattuda nõiaringi ja saada pidevalt suuremaks.

Seega ei saa TCP ignoreerida võrgus toimuvat. Kui võrk on ülekoormatud, ohverdab TCP ennast, vähendades saadud andmete hulka.

Seetõttu pakutakse välja ummikuid, mille eesmärk on vältida kogu võrgu täitmist saatja andmetega. Andmete hulga reguleerimiseks, mille saatja peaks saatma, määratleb TCP mõiste, mida nimetatakse ummikute aknaks. Ummikukontrolli algoritm kohandab ummikute aken suurust vastavalt võrgu ummikute kraadile, et kontrollida saatja saadetud andmete hulka.

Mis on ummikute aken? Mis sellel on akende saatmise aknaga?

Ummikute aken on saatja hooldatud olekumuutuja, mis määrab saatja saatmise hulga. Ummikute aken muutub dünaamiliselt vastavalt võrgu ummikute tasemele.

Saadamisaken on saatja ja vastuvõtja vahel kokku lepitud akna suurus, mis näitab andmete hulka, mida vastuvõtja võib saada. Ummikute aken ja saatmisaken on seotud; Saadamisaken on tavaliselt võrdne ummikute ja vastuvõtvate akende miinimumiga, see tähendab SWND = min (CWND, RWND).

Ummikute aken CWND muutub järgmiselt:

Kui võrgus pole ummikuid, IE, ei toimu taasesituse ajalõppu, suureneb ummikute aken.

Kui võrgus on ummikuid, väheneb ummikute aken.

Saatja määrab, kas võrk on ülekoormatud, jälgides, kas ACK kinnituspakett on kindlaks tehtud määratud aja jooksul. Kui saatja ei saa kindlaksmääratud aja jooksul ACK kinnituspaketti, arvatakse, et võrk on ummistunud.

Lisaks ummikute aknale on aeg arutada TCP ummikute tõrje algoritmi. TCP ummikute tõrje algoritm koosneb kolmest peamisest osast:

Aeglane algus:Algselt on CWND ummikute aken suhteliselt väike ja saatja suurendab ummikute aknat eksponentsiaalselt, et kiiresti võrku mahutavusega kohaneda.
Ummikute vältimine:Pärast seda, kui ummikute aken ületab teatud läve, suurendab saatja ummikute akent lineaarselt, et aeglustada ummikute akna kasvukiirust ja vältida võrgu ülekoormamist.
Kiire taastumine:Ummikute ilmnemisel vähendab saatja ummikute akent ja siseneb kiiresse taastamise olekusse, et teha kindlaks võrgu taastamise asukoht vastuvõetud duplikaadi ACK -de kaudu ja jätkab seejärel ummikute akna suurendamist.

Aeglane algus
Kui TCP -ühendus on loodud, seatakse ummikute aken CWND algselt minimaalse MSS -i (maksimaalne segmendi suurus) väärtus. Nii on esialgne saatmiskiirus umbes MSS/RTT baitide kohta/sekund. Tegelik saadaolev ribalaius on tavaliselt palju suurem kui MSS/RTT, nii et TCP soovib leida optimaalse saatmiskiiruse, mida saab saavutada aeglase stardi abil.

Aeglase stardiprotsessi käigus lähtestatakse CWND ummikute akende väärtus 1 MSS-ni ja iga kord, kui edastatud pakettide segment tunnistatakse, suurendab CWND väärtust üks MSS, see tähendab, et CWND väärtus saab 2 MSS-i. Pärast seda kahekordistatakse CWND väärtus iga paketisegmendi eduka edastamise korral jne. Konkreetne kasvuprotsess on näidatud järgmisel joonisel.

 Võrgu ummikute kontroll

Kuid saatmiskiirus ei saa alati kasvada; Kasv peab millalgi lõppema. Niisiis, millal saatmiskiirus lõppeb? Aeglane start lõpetab saatmiskiiruse suurenemise mitmel viisil:

Esimene viis on pakettide kadumise juhtum aeglase alguse saatmisprotsessis. Paki kaotuse korral seab TCP saatja ummikute aken CWND 1-le ja taaskäivitab aeglase stardiprotsessi. Sel hetkel võetakse kasutusele aeglase stardiläve SSTRESH kontseptsioon, mille algväärtus on pool CWND väärtusest, mis tekitab pakettkaotust. See tähendab, et kui ummikuid tuvastatakse, on SSSHRESH väärtus pool akna väärtusest.

Teine viis on otseselt korrelatsioonis aeglase stardi läve SSSHRESH väärtusega. Kuna SSSHRESH väärtus on ummikute tuvastamisel pool akna väärtusest, võib iga kahekordistumise korral tekkida pakkide kadu, kui CWND on suurem kui SSTHRESH. Seetõttu on kõige parem seada CWND SSTRESH-le, mis põhjustab TCP-le ülemineku ummikute juhtimisrežiimile ja lõpetab aeglase stardi.

Viimane viis, kuidas aeglane algus võib lõppeda, kui tuvastatakse kolm üleliigset ACK -d, TCP teostab kiire kättetoimetamise ja siseneb taastamise olekusse. (Kui pole selge, miks on kolm ACK paketti, selgitatakse seda uuesti edastamise mehhanismis eraldi.)

Ummikute vältimine
Kui TCP siseneb ummikute tõrje olekusse, seatakse CWND poole ummikute lävest. See tähendab, et CWND väärtust ei saa kahekordistada iga kord, kui pakkide segment saab. Selle asemel võetakse vastu suhteliselt konservatiivne lähenemisviis, mille käigus suurendatakse CWND väärtust ainult ühe MSS -iga (maksimaalne paketi segmendi pikkus) pärast iga ülekande lõppu. Näiteks isegi kui kinnitatakse 10 pakisegmenti, suureneb CWND väärtus ainult ühe MSS -iga. See on lineaarne kasvumudel ja sellel on ka kasvu ülemine piir. Paki kaotuse korral muudetakse CWND väärtus MSS -i ja SSTRESH väärtus seatakse poole CWND -ni. Või peatab see ka MSS -i kasvu, kui on laekunud 3 üleliigset ACK vastust. Kui pärast CWND väärtuse vähendamist võetakse endiselt kolm koondatud ACK -d, registreeritakse SSSHRESH väärtus CWND väärtusest poole ja sisestatakse kiire taastamise olek.

Kiire taastumine
Kiire taastumise seisundis suurendatakse ummikute akna väärtust iga saadud koondatud ACK jaoks ühe MSS -iga, see tähendab ACK, mis ei jõua järjestusega. See on selleks, et kasutada võrgus edukalt edastatud pakettsegmente, et võimalikult palju parandada ülekande tõhusust.

Kui saabub kadunud pakettide segmendi ACK, vähendab TCP CWND väärtust ja siseneb seejärel ummikute vältimise olekusse. Selle eesmärk on juhtida ummikute akende suurust ja vältida võrgu ummikute veelgi suurendamist.

Kui aegumine toimub pärast ummikute tõrje olekut, muutub võrgutingimus tõsisemaks ja TCP rändab ummikute vältimise olekust aeglasesse olekusse. Sel juhul seatakse CWND ummikute akende väärtus 1 MSS-ni, maksimaalse paketisegmendi pikkuseks ja aeglase stardi läve SSTRESH väärtus on seatud poole CWND-ni. Selle eesmärk on ummikute akende suurust uuesti suurendada pärast seda, kui võrk taastub, et tasakaalustada ülekandekiirust ja võrgu ummikute astet.

Kokkuvõte
Usaldusväärse transpordiprotokollina rakendab TCP usaldusväärset transporti järjestuse numbri, kinnituse, uuesti edastamise juhtimise, ühenduse haldamise ja akna juhtimise järgi. Nende hulgas kontrollib voolujuhtimismehhanism saatja poolt saadud andmete hulka vastavalt vastuvõtja tegelikule vastuvõtmisvõimsusele, mis väldib võrgu ummikute ja jõudluse halvenemise probleeme. Ummikute juhtimise mehhanism väldib võrgu ummikute esinemist, kohandades saatja saadetud andmete hulka. Ummikute aken ja saatmisakna mõisted on üksteisega seotud ning saatja andmete hulka kontrollitakse ummikute akende suuruse dünaamilise kohandamisega. Aeglane algus, ummikute vältimine ja kiire taastumine on TCP ummikute tõrje algoritmi kolm peamist osa, mis korrigeerivad ummikute aken suurust erinevate strateegiate kaudu, et kohaneda võrgu võimsusega ja ummikutega.

Järgmises jaotises uurime TCP edastamise mehhanismi üksikasjalikult. Taastamismehhanism on TCP oluline osa usaldusväärse ülekande saavutamiseks. See tagab andmete usaldusväärse edastamise, saates kadunud, rikutud või hilinenud andmed. Järgmises jaotises tutvustatakse ja analüüsitakse üksikasjalikult ümbersõidumehhanismi rakenduspõhimõtet ja strateegiat. Olge kursis!


Postiaeg: 24. veebruar 20125