Ang sekreto nga hinagiban sa TCP: Network Flow Control ug Network Congestion Control

TCP Kasaligan nga Transport
Kitang tanan pamilyar sa TCP protocol isip usa ka kasaligan nga transport protocol, apan giunsa kini pagsiguro sa pagkakasaligan sa transportasyon?

Aron makab-ot ang kasaligan nga transmission, daghang mga hinungdan ang kinahanglan nga tagdon, sama sa korapsyon sa datos, pagkawala, pagdoble, ug wala’y order nga mga shards. Kung kini nga mga problema dili masulbad, ang kasaligan nga transmission dili makab-ot.

Busa, ang TCP naggamit ug mga mekanismo sama sa sequence number, acknowledgement reply, resend control, connection management, ug window control aron makab-ot ang kasaligan nga transmission.

Niini nga papel, atong ipunting ang sliding window, kontrol sa dagan ug pagkontrol sa paghuot sa TCP. Ang mekanismo sa retransmission gilain-lain sa sunod nga seksyon.

Pagkontrol sa Daloy sa Network
Ang Network Flow Control o nailhan nga Network Traffic Control sa tinuud usa ka pagpakita sa maliputon nga relasyon tali sa mga prodyuser ug mga konsumedor. Tingali daghan ka na nga nakit-an kini nga senaryo sa trabaho o sa mga interbyu. Kung ang kapasidad sa prodyuser sa pagprodyus labi ka molapas sa kapasidad sa konsumidor sa pagkonsumo, kini hinungdan nga motubo ang pila hangtod sa hangtod. Sa usa ka mas seryoso nga kaso, mahimo nimong mahibal-an nga kung ang mga mensahe sa RabbitMQ magtumpok nga sobra, mahimo kini nga hinungdan sa pagkadaot sa pasundayag sa tibuuk nga server sa MQ. Tinuod usab kini alang sa TCP; kung dili mabantayan, daghan kaayo nga mga mensahe ang ibutang sa network, ug ang mga konsumedor molapas sa ilang kapasidad, samtang ang mga prodyuser magpadayon sa pagpadala mga doble nga mensahe, nga makaapekto pag-ayo sa pasundayag sa network.

Aron matubag kini nga panghitabo, ang TCP naghatag usa ka mekanismo alang sa nagpadala aron makontrol ang kantidad sa datos nga gipadala base sa aktwal nga kapasidad sa pagdawat sa tigdawat, nga nailhan nga kontrol sa dagan. Ang tigdawat nagmintinar sa usa ka receive window, samtang ang nagpadala nagmintinar sa usa ka send window. Kinahanglan nga hinumdoman nga kini nga mga Windows alang lamang sa usa ka koneksyon sa TCP ug dili tanan nga koneksyon adunay usa ka bintana.

Ang TCP naghatag og kontrol sa agos pinaagi sa paggamit sa usa ka variable alang sa usa ka window sa pagdawat. Ang makadawat nga bintana naghatag sa nagpadala usa ka timailhan kung unsa kadaghan ang espasyo sa cache nga magamit pa. Gikontrol sa nagpadala ang gidaghanon sa datos nga gipadala sumala sa aktwal nga kapasidad sa pagdawat sa tigdawat.

Ang tigdawat nga host nagpahibalo sa nagpadala sa gidak-on sa datos nga madawat niini, ug ang nagpadala nagpadala hangtod niini nga limitasyon. Kini nga limitasyon mao ang gidak-on sa bintana, hinumdumi ang TCP header? Adunay usa ka uma sa bintana sa pagdawat, nga gigamit aron ipakita ang gidaghanon sa mga byte nga mahimo o andam nga madawat sa tigdawat.

Ang nagpadala nga host matag karon ug unya magpadala usa ka packet sa pagsusi sa bintana, nga gigamit aron mahibal-an kung ang host sa tigdawat makadawat pa ba og datos. Kung ang buffer sa tigdawat nameligro nga mag-awas, ang gidak-on sa bintana gibutang sa usa ka gamay nga kantidad aron matudloan ang nagpadala nga kontrolon ang gidaghanon sa datos nga gipadala.

Ania ang usa ka Network Flow Control diagram:

Pagkontrol sa Trapiko

Pagkontrol sa Paghuot sa Network
Sa dili pa ipaila ang kontrol sa congestion, kinahanglan natong masabtan nga dugang sa receive window ug ang send window, adunay usab congestion window, nga kasagaran gigamit sa pagsulbad sa problema sa unsa nga rate ang nagpadala nagsugod sa pagpadala sa data ngadto sa receive window. Busa, ang congestion window gipadayon usab sa TCP sender. Kinahanglan namon ang usa ka algorithm aron makadesisyon kung pila ang angay nga ipadala, tungod kay ang pagpadala gamay ra o daghan kaayo nga datos dili maayo, busa ang konsepto sa usa ka bintana sa paghuot.

Sa miaging network flow control, ang among gilikayan mao ang nagpadala nga nagpuno sa cache sa tigdawat sa datos, apan wala kami kahibalo kung unsa ang nahitabo sa network. Kasagaran, ang mga network sa kompyuter naa sa gipaambit nga palibot. Ingon nga resulta, mahimong adunay network congestion tungod sa komunikasyon tali sa ubang mga host.

Kung ang network naghuot, kung daghang mga pakete ang padayong ipadala, mahimo’g magpahinabog mga problema sama sa paglangan ug pagkawala sa mga pakete. Niini nga punto, ang TCP mopadala pag-usab sa datos, apan ang retransmission makadugang sa palas-anon sa network, nga moresulta sa mas dagkong mga paglangan ug mas daghang packet loss. Mahimo kining mosulod sa usa ka bisyo nga siklo ug magpadayon nga modako.

Sa ingon, ang TCP dili makabalewala kung unsa ang nahitabo sa network. Kung ang network naghuot, ang TCP nagsakripisyo sa kaugalingon pinaagi sa pagkunhod sa gidaghanon sa datos nga gipadala niini.

Busa, gisugyot ang pagpugong sa paghuot, nga nagtumong sa paglikay sa pagpuno sa tibuok network sa datos gikan sa nagpadala. Aron makontrol ang gidaghanon sa datos nga kinahanglan ipadala sa nagpadala, gihubit sa TCP ang usa ka konsepto nga gitawag nga bintana sa paghuot. Ang congestion control algorithm mag-adjust sa gidak-on sa congestion window sumala sa congestion degree sa network, aron makontrol ang gidaghanon sa data nga gipadala sa nagpadala.

Unsa ang congestion window? Unsa may kalabotan niini sa send window?

Ang Congestion Window usa ka variable sa estado nga gipadayon sa nagpadala nga nagtino sa kantidad sa datos nga mahimo ipadala sa nagpadala. Ang congestion window nagbag-o nga dinamiko sumala sa lebel sa congestion sa network.

Ang Sending Window usa ka gikasabutan nga gidak-on sa bintana tali sa nagpadala ug tigdawat nga nagpakita sa gidaghanon sa datos nga madawat sa tigdawat. Ang bintana sa paghuot ug ang bintana sa pagpadala adunay kalabutan; ang window sa pagpadala kasagaran katumbas sa minimum nga paghuot ug pagdawat sa Windows, nga mao, swnd = min(cwnd, rwnd).

Ang congestion window cwnd mausab sama sa mosunod:

Kung walay congestion sa network, ie, walay retransmission timeout mahitabo, ang congestion window nagdugang.

Kung adunay congestion sa network, ang congestion window mikunhod.

Ang nagpadala nagtino kung ang network naghuot pinaagi sa pag-obserbar kung ang ACK acknowledgement packet nadawat ba sulod sa gitakda nga oras. Kung ang nagpadala dili makadawat sa ACK acknowledgement packet sulod sa gitakda nga oras, giisip nga ang network naghuot.

Dugang sa congestion window, panahon na nga hisgutan ang TCP congestion control algorithm. Ang TCP congestion control algorithm naglangkob sa tulo ka nag-unang bahin:

Hinay nga pagsugod:Sa sinugdan, ang cwnd congestion window medyo gamay, ug ang nagpadala nagdugang sa congestion window nga exponentially aron dali nga mopahiangay sa kapasidad sa network.
Paglikay sa Congestion:Human ang congestion window molapas sa usa ka piho nga threshold, ang nagpadala nagdugang sa congestion window sa linear nga paagi aron mapahinay ang pagtubo sa congestion window ug malikayan ang overloading sa network.
Dali nga Pagbawi:Kung mahitabo ang paghuot, ang nagpadala magtunga sa bintana sa congestion ug mosulod sa estado sa paspas nga pagkaayo aron mahibal-an ang lokasyon sa pagbawi sa network pinaagi sa nadawat nga mga duplicate nga acks, ug dayon magpadayon sa pagdugang sa bintana sa paghuot.

Hinay nga Pagsugod
Sa diha nga ang koneksyon sa TCP matukod, ang congestion window cwnd sa sinugdan gibutang sa minimum nga MSS (maximum segment size) nga bili. Niining paagiha, ang inisyal nga rate sa pagpadala kay mga MSS/RTT bytes/second. Ang aktuwal nga magamit nga bandwidth kasagaran mas dako kay sa MSS/RTT, mao nga gusto sa TCP nga makit-an ang labing maayo nga rate sa pagpadala, nga mahimong makab-ot pinaagi sa hinay nga pagsugod.

Sa hinay nga pagsugod nga proseso, ang bili sa congestion window cwnd magsugod sa 1 MSS, ug sa matag higayon nga ang transmitted packet segment giila, ang value sa cwnd madugangan sa usa ka MSS, nga mao, ang value sa cwnd mahimong 2 MSS. Pagkahuman niana, ang kantidad sa cwnd doble alang sa matag malampuson nga pagpasa sa usa ka bahin sa pakete, ug uban pa. Ang piho nga proseso sa pagtubo gipakita sa mosunod nga numero.

 Pagkontrol sa paghuot sa network

Bisan pa, ang rate sa pagpadala dili kanunay nga motubo; ang pagtubo kinahanglan nga matapos usahay. Busa, kanus-a matapos ang pagtaas sa sending rate? Ang hinay nga pagsugod kasagarang nagtapos sa pagtaas sa rate sa pagpadala sa usa sa daghang mga paagi:

Ang una nga paagi mao ang kaso sa pagkawala sa pakete sa panahon sa proseso sa pagpadala sa hinay nga pagsugod. Kung mahitabo ang pagkawala sa packet, itakda sa TCP ang congestion window sa nagpadala cwnd sa 1 ug i-restart ang hinay nga pagsugod nga proseso. Niini nga punto, usa ka konsepto sa hinay nga pagsugod nga threshold ssthresh gipaila, kansang inisyal nga kantidad mao ang katunga sa kantidad sa cwnd nga nagpatunghag pagkawala sa packet. Sa ato pa, kung makit-an ang paghuot, ang kantidad sa ssthresh katunga sa kantidad sa bintana.

Ang ikaduha nga paagi mao ang direkta nga pag-correlate sa kantidad sa hinay nga pagsugod nga threshold ssthresh. Tungod kay ang kantidad sa ssthresh katunga sa kantidad sa bintana kung makit-an ang paghuot, ang pagkawala sa pakete mahimong mahitabo sa matag pagdoble kung ang cwnd mas dako kaysa ssthresh. Busa, labing maayo nga itakda ang cwnd sa ssthresh, nga magpahinabo sa TCP nga mobalhin sa congestion control mode ug tapuson ang hinay nga pagsugod.

Ang katapusan nga paagi nga ang hinay nga pagsugod mahimong matapos mao kung ang tulo ka mga redundant nga acks makit-an, ang TCP nagpahigayon usa ka paspas nga pagpadala ug mosulod sa kahimtang sa pagkaayo. (Kung dili klaro kung ngano nga adunay tulo nga mga pakete sa ACK, ipasabut kini nga gilain sa mekanismo sa retransmission.)

Paglikay sa Congestion
Sa diha nga ang TCP mosulod sa congestion control state, ang cwnd gibutang sa katunga sa congestion threshold ssthresh. Kini nagpasabot nga ang bili sa cwnd dili madoble sa matag higayon nga ang usa ka packet segment madawat. Hinunoa, usa ka medyo konserbatibo nga pamaagi ang gisagop diin ang bili sa cwnd madugangan sa usa lamang ka MSS (maximum packet segment length) human makompleto ang matag transmission. Pananglitan, bisan kung giila ang 10 ka mga bahin sa pakete, ang kantidad sa cwnd motaas ra sa usa ka MSS. Kini usa ka linear nga modelo sa pagtubo ug kini usab adunay taas nga utlanan sa pagtubo. Kung mahitabo ang pagkawala sa packet, ang bili sa cwnd mausab ngadto sa MSS, ug ang bili sa ssthresh gibutang sa katunga sa cwnd. O mapahunong usab niini ang pagtubo sa MSS kung madawat ang 3 nga sobra nga tubag sa ACK. Kung ang tulo ka mga redundant acks madawat gihapon human matunga ang bili sa cwnd, ang bili sa ssthresh matala isip katunga sa bili sa cwnd ug ang fast recovery state gisulod.

Dali nga Pagbawi
Sa estado sa Fast Recovery, ang bili sa congestion window cwnd madugangan sa usa ka MSS alang sa matag nadawat nga sobra nga ACK, nga mao, ang ACK nga dili moabut sa sunod-sunod. Kini aron magamit ang mga bahin sa packet nga malampuson nga gipasa sa network aron mapaayo ang kahusayan sa transmission kutob sa mahimo.

Kung moabut ang usa ka ACK sa nawala nga bahin sa pakete, ang TCP mokunhod sa kantidad sa cwnd ug dayon mosulod sa kahimtang sa paglikay sa congestion. Kini aron makontrol ang gidak-on sa congestion window ug malikayan ang dugang nga pagdugang sa network congestion.

Kung ang usa ka timeout mahitabo human sa congestion control state, ang network condition mahimong mas seryoso ug ang TCP migrate gikan sa congestion prevention state ngadto sa slow-start state. Niini nga kaso, ang bili sa congestion window cwnd gitakda sa 1 MSS, ang maximum nga packet segment nga gitas-on, ug ang bili sa slow-start threshold ssthresh gibutang sa katunga sa cwnd. Ang katuyoan niini mao ang pag-usab sa hinay-hinay nga pagpadako sa gidak-on sa congestion window pagkahuman naayo ang network aron mabalanse ang transmission rate ug ang lebel sa congestion sa network.

Summary
Ingon usa ka kasaligan nga protocol sa transportasyon, ang TCP nagpatuman sa kasaligan nga transportasyon pinaagi sa numero sa pagkasunod-sunod, pag-ila, pagkontrol sa retransmission, pagdumala sa koneksyon ug pagkontrol sa bintana. Lakip niini, ang mekanismo sa pagkontrol sa dagan nagkontrol sa gidaghanon sa datos nga gipadala sa nagpadala sumala sa aktwal nga kapasidad sa pagdawat sa tigdawat, nga naglikay sa mga problema sa paghuot sa network ug pagkadaut sa performance. Ang mekanismo sa pagkontrol sa congestion naglikay sa panghitabo sa paghuot sa network pinaagi sa pag-adjust sa gidaghanon sa datos nga gipadala sa nagpadala. Ang mga konsepto sa congestion window ug sending window may kalabutan sa usag usa, ug ang gidaghanon sa data sa nagpadala kontrolado pinaagi sa dinamikong pag-adjust sa gidak-on sa congestion window. Ang hinay nga pagsugod, paglikay sa congestion ug paspas nga pagkaayo mao ang tulo ka nag-unang bahin sa TCP congestion control algorithm, nga nag-adjust sa gidak-on sa congestion window pinaagi sa lainlaing mga estratehiya aron ipahiangay sa kapasidad ug congestion degree sa network.

Sa sunod nga seksyon, atong susihon ang mekanismo sa pag-usab sa TCP sa detalye. Ang mekanismo sa retransmission usa ka importante nga bahin sa TCP aron makab-ot ang kasaligan nga transmission. Gisiguro niini ang kasaligan nga pagpasa sa datos pinaagi sa pag-usab sa nawala, nadaot o nalangan nga datos. Ang prinsipyo sa pagpatuman ug estratehiya sa mekanismo sa retransmission ipaila ug tukion sa detalye sa sunod nga seksyon. Pagbantay!


Oras sa pag-post: Peb-24-2025