OpenVPN TCP bidez: rto_min-ek ez du ilararen buruko blokeoa konpontzen
Kanpoko byte-fluxuak ordenan ematen du, beraz falta den segmentu batek barneko fluxu guztiak gelditu ditzake. Barneko tenporizadore luzeago batek erlojua aldatzen du, ez muga hori.
Tunelaren gaineko shell interaktiboa segundo batzuetan izozten da fitxategi-kopia exekutatzen ari den bitartean, eta gero jarraitzen du ezer gertatu ez balitz bezala. Arazoa deskargak bakarrik du, baina shell-ak ere itxaroten du, eta biak une berean berreskuratzen dira. Eredu hori elkarrizketa asko daramatzan fidagarritasun handiko korronte bakar baten sinadura da, eta jendeak lehenengo probatzen duen ia edozein doikuntzari eusten dio.
Sintomari arretaz irakurtzea merezi du, ezarpen bat ez baizik mekanismo bat adierazten duelako: pausa partekatua da, beraz kausa ere partekatua da, eta objektu partekatua kanpoko konexioa da. Gertatzen den bitartean erregistroko gainerako guztia normala dirudi.
Sintoma: dena batera gelditzen da
Barneko bi konexio elkarrekin trabatzea da arrastoa. Deskarga motel batek eta shell motel batek sekuentzia-zenbaki eta kongestio-egoera bereiziak dituzten TCP elkarrizketa bereiziak dira, beraz bateko hutsegiteak ez luke bestea ukitu behar. Erritmo berean gelditzen direnean, haien gaineko zerbait ari da haien byteak ordenatzen.
Zerbait hori tunelaren garraio-geruza da. TCP moduan, OpenVPN kapsulatutako paketeak pare kidearekiko TCP konexio bakarrean idazten ditu, eta TCPren kontratua byte-korronte bakarraren ordenako entrega da. Geroagoko byteak ez zaizkie aplikazioari ematen falta direnen aurretik, barneko zein elkarrizketatakoak diren ere.
Kontuan hartu sintomak zer ez duen esaten. Ez du esaten bidea hautsi denik, zerbitzaria gainezka dagoenik edo zifraketa motela denik. Horietako batzuek beste forma batzuk ematen dituzte: errendimendu baxua uniformeki, denbora-mugak edo norabide bakarrari eragiten dioten hutsegiteak. Segmentu galdu bat berriro bidaltzean amaitzen den pausa partekatua ordena-efektua da zehazki.
Kanpoko byte-korronte bakarra, barneko elkarrizketa asko
Irudikatu tunela aldi berean deskarga bat eta shell bat daramatzala. Kanpoko konexioaren segmentu bat galtzen da. Hurrengo segmentuak harrera-hostera irits daitezke, eta harrera-TCP pilak onartu egingo ditu, baina ezin ditu gorantz entregatu hutsunea bete arte. Horregatik OpenVPN-k ez du ezer irakurtzeko shellarentzat, shellaren beraren byteak aspaldi iritsi baziren ere.
Hau konexio baten barruko ilararen buruko blokeoa da, eta ez du eskatzen bi aplikazioek barneko konexioa partekatzea. Kanpokoa partekatzen dute, eta hori nahikoa da.
Bigarren mailako efektuak okerrera egiten du. Berrespenik ikusten ez duen barne-bidaltzaile batek kanpoko geruza entregatzen saiatzen ari den datuak berriro bidal ditzake. Berbidalketa hori segmentuak galtzeko gai dela oraintxe frogatu duen bidean tunel-trafiko gehigarri bihurtzen da, beraz berreskuratze-lanak garrantzitsua den berreskuratzearekin lehiatzen du.
Horietako ezerk ez du kolapsoa bermatzen. Bidaia labur eta ilara zabaleko bide garbian, antolaketa hori erabat erabilgarria izan daiteke urteetan zehar. Hutsegitea galera, atzerapena eta ilararen sakonera bat datozenean agertzen da, eta horregatik txostenak gainkargatutako igotze-esteken eta mugikor-esteken inguruan pilatzen dira, eta ez ondo hornitutako bulegoen inguruan.
Zergatik ezin duen lagundu barneko tenporizadore luzeago batek
Bide batean rto_min erabiliz berbidalketa-denbora minimoa igotzeak bide hori erabiltzen duen tokian sortutako TCP trafikoarentzako tenporizadore bidezko berbidalketa atzeratzen du. Eragin erreala duen kontrol erreala da, eta bigarren mailako arazoa lantzen du lehenengoa ez ezik.
ip route show
ip route show cache 2>/dev/null | head
ss -tin dst 10.70.0.1
Ezin duena da kanpoko byteak ordenatik kanpo askatzea, falta den segmentua azkarrago berreskuratzea edo urrutiko aplikazio-zerbitzariak tenporizadore bera har dezan lortzea. Harrera-pilak ordenan entregatzen jarraitzen du, eta urrutiko muturreko bidaltzaileak bere bidaia-neurketak erabiltzen jarraitzen du.
Ez ditu galera-berreskuratzeko beste mekanismo guztiak desaktibatzen ere. Benetako galerak tenporizadore bidezko berreskuratzea eskatzen duenean, minimo handiago batek aplikazioa gehiago itxarotera behartzen du jardun aurretik, eta hori latentziarekiko sentikorra den saio batek behar duenaren kontrakoa da.
Hamabi segundoko oinarri finkoa agertzen da gai honi buruzko aholkuetan TCP tunel baten existentziak hori inplikatuko balu bezala. RFC 6298-n deskribatutako berbidalketa-tenporizadorea neurtutako bidaia-denetik eratorria da atzerapen esponentzialarekin, beraz oinarri konstantea bide jakin baterako politika-aukeraketa da, eta ez protokoloaren baldintza. Zabalki aplikatuta, sintoma ezkutatzen du eta aldi berean bide horrek estalitako fluxu bakoitzaren berreskuratzea aldatzen du.
Zer egiten duen eta zer ez duen tcp-nodelay-ek
Garraio-socketean Nagle estiloko bufferra desaktibatzen duen tunel-aukerak helburu estua du: idazketa txikiek bidali aurretik datu gehiago itxaron ez dezaten eragozten du. Horrek trafiko interaktiboari laguntzen dio bestela osasuntsu dagoen bide batean atzerapen gehigarria saihesten.
Ez du garraioa ordenarik gabe bihurtzen, eta ez du laburtzen segmentu galdu baten ondorengo berreskuratzea. Berbidalketa-denboragatik gelditzen den shell bat geldituko da opzioa aktibatuta egonda ere, opzioak ez ziolako inoiz ordena-arauari ukitu.
Biak nahastea erraza da, biak atzerapen-konponketatzat deskribatzen baitira. Batek bufferrak sartutako itxarote artifiziala kentzen du, besteak garraioak bermatzen duena aldatzea eskatuko luke, eta socket aukerak ez du hori egiten.
Garraioak modu justuan nola alderatu
Operadoreak baimena ematen badu eta bi zerbitzuak badaude, alderatu lan-karga bera daramaten UDP zerbitzu bat eta TCP zerbitzu bat zerbitzari berberera doan sarbide-bide berberetik. Bi proben artean herrialdea, hornitzailea edo zerbitzari-belaunaldia aldatzeak emaitzan nagusituko den aldagai bat sartzen du.
Begiratu pausa partekatuari, eta ez errendimendu-zifra bati. Kanpoko galera bitartean hainbat barne-aplikazio elkarrekin trabatzea da ilararen buruko blokeoa identifikatzen duen behaketa; abiadura-probako zifra baxuago batek ez du hori egiten.
Baimendutako harrapaketek tunel-interfazean eta interfaze fisikoan garbi bereizten dituzte bi geruzak, barneko eta kanpoko berbidalketak sekuentzia-espazio ezberdinetako konexio ezberdinei baitagozkie. Kanpoko fluxuak hutsune bat erakusten duen bitartean barneko berbidalketak ikustea da froga zuzena.
UDP-ra aldatzeak fidagarritasun handiko korronte gehigarria kentzen du eta barneko TCP-ari bere berreskuratzea egiten uzten dio. Ez du zero galera edo latentzia baxua agintzen, eta igotze-esteka saturatu batek, ilara handiegiek edo MTU arazo batek konpondu beharra izaten jarraituko dute. Tuneletik kanpoko trafikoa ez da inoiz tunelaren sekuentzia-hutsunearen atzean atxikitzen, baina oraindik sufri dezake bi bideek esteka gainkargatu bakarra partekatzen dutenean, eta estugune partekatu horrek bere ikerketa propioa merezi du, honetan tolestu ordez.