Stopio OpenVPN dros TCP: nid yw rto_min yn trwsio blocio pen y llinell
Mae ffrwd beit allanol yn danfon mewn trefn, felly gall un segment coll oedi pob ffrwd fewnol. Mae amserydd mewnol hirach yn newid cloc, nid y cyfyngiad hwnnw.
Mae cragen ryngweithiol dros y twmnel yn rhewi am sawl eiliad tra bo copi ffeil yn rhedeg, yna'n ailddechrau fel pe na bai dim wedi digwydd. Y lawrlwytho yw'r unig beth â phroblem, eto mae'r gragen yn aros hefyd, ac mae'r ddau yn gwella ar yr un eiliad. Arwydd o un ffrwd ddibynadwy sy'n cario llawer o sgyrsiau yw'r patrwm hwnnw, ac mae'n goroesi bron pob newid tiwnio y mae pobl yn ei roi gyntaf.
Mae'n werth darllen y symptom yn ofalus oherwydd ei fod yn pwyntio at fecanwaith yn hytrach nag at osodiad: mae'r saib yn cael ei rannu, felly mae'r achos yn cael ei rannu, a'r gwrthrych a rennir yw'r cysylltiad allanol. Mae popeth arall yn y cofnod yn edrych yn normal tra bo hyn yn digwydd.
Y symptom: mae popeth yn oedi ar unwaith
Dau gysylltiad mewnol yn stopio gyda'i gilydd yw'r cliw. Mae lawrlwytho araf a chragen araf yn sgyrsiau TCP ar wahân â rhifau dilyniant ar wahân a chyflwr tagfeydd ar wahân, felly ni ddylai nam yn y naill gyffwrdd â'r llall. Pan fyddant yn oedi gyda'i gilydd, mae rhywbeth uwch eu pennau yn trefnu eu beitiau.
Y rhywbeth hwnnw yw cludiant y twmnel. Yn y modd TCP, mae OpenVPN yn ysgrifennu'r pecynnau caëdig i un cysylltiad TCP at y cymar, a chontract TCP yw danfon ffrwd beit sengl mewn trefn. Ni roddir beitiau diweddarach i'r rhaglen cyn y rhai coll, waeth i ba sgwrs fewnol y maent yn perthyn.
Sylwch ar yr hyn nad yw'r symptom yn ei ddweud. Nid yw'n dweud bod y llwybr wedi torri, bod y gweinydd wedi gorlwytho, neu bod y seiffr yn araf. Mae'r rheini'n cynhyrchu siapiau gwahanol: trwyput isel unffurf, terfynau amser, neu fethiannau sy'n effeithio ar un cyfeiriad. Mae saib a rennir sy'n dod i ben pan aildrosglwyddir un segment coll yn effaith trefnu yn benodol.
Un ffrwd beit allanol, llawer o sgyrsiau mewnol
Dychmygwch y twmnel yn cario lawrlwytho a chragen ar yr un pryd. Mae segment o'r cysylltiad allanol yn cael ei golli. Gall y segmentau dilynol gyrraedd y gwesteiwr sy'n derbyn, a bydd y pentwr TCP sy'n derbyn yn eu cydnabod, ond ni all eu danfon i fyny nes bod y bwlch wedi'i lenwi. Felly nid oes gan OpenVPN unrhyw beth i'w ddarllen ar gyfer y gragen, er bod beitiau'r gragen ei hun wedi cyrraedd ers amser maith.
Mae hyn yn flocio pen y llinell o fewn un cysylltiad, ac nid yw'n gofyn i'r ddau raglen rannu cysylltiad mewnol. Maent yn rhannu'r un allanol, ac mae hynny'n ddigon.
Mae'r effaith ail-radd yn ei waethygu. Gall anfonwr mewnol nad yw'n gweld cydnabyddiaeth aildrosglwyddo data y mae'r haen allanol eisoes yn ceisio ei ddanfon. Daw'r aildrosglwyddiad hwnnw'n draffig twmnel ychwanegol ar lwybr sydd newydd brofi y gall golli segmentau, felly mae'r gwaith adfer yn cystadlu â'r adfer sy'n bwysig.
Nid oes unrhyw beth o hyn yn gwarantu cwymp. Ar lwybr glân â theithiau crwn byr a chyflau hael, gall y trefniant fod yn gwbl ddefnyddiol am flynyddoedd. Mae'r methiant yn ymddangos pan fydd colled, oedi a dyfnder y ciw yn cyd-fynd, a dyna pam mae'r adroddiadau'n crynhoi o amgylch dolenni uwchlwytho tagfaog a dolenni symudol yn hytrach nag o amgylch swyddfeydd â darpariaeth dda.
Pam na all amserydd mewnol hirach helpu
Mae codi'r terfyn amser isaf ar gyfer aildrosglwyddo ar lwybr, gyda rto_min, yn gohirio aildrosglwyddo yn seiliedig ar amserydd ar gyfer traffig TCP a gynhyrchir yn lleol sy'n defnyddio'r llwybr hwnnw. Mae'n glicied go iawn ag effaith go iawn, ac mae'n mynd i'r afael â'r broblem ail-radd yn hytrach na'r gyntaf.
ip route show
ip route show cache 2>/dev/null | head
ss -tin dst 10.70.0.1
Yr hyn na all ei wneud yw rhyddhau beitiau allanol allan o drefn, adfer y segment coll yn gyflymach, na gwneud i weinydd y rhaglen bell fabwysiadu'r un amserydd. Mae'r pentwr sy'n derbyn yn dal i ddanfon mewn trefn, ac mae'r anfonwr yn y pen draw yn dal i ddefnyddio ei fesuriadau teithio crwn ei hun.
Nid yw ychwaith yn analluogi pob mecanwaith adfer colled arall. Lle mae colled go iawn yn gofyn am adferiad yn seiliedig ar amserydd, mae isafswm mwy yn gwneud i'r rhaglen aros yn hirach cyn gweithredu, sef y gwrthwyneb i'r hyn y mae sesiwn sy'n sensitif i oedi ei angen.
Mae llawr sefydlog o ddeuddeg eiliad yn ymddangos mewn cyngor ar y pwnc hwn fel pe bai bodolaeth twmnel TCP yn ei awgrymu. Mae'r amserydd aildrosglwyddo a ddisgrifir yn RFC 6298 yn deillio o amser teithio crwn a fesurwyd gyda chwtogi esbonyddol, felly mae llawr cyson yn ddewis polisi ar gyfer llwybr penodol yn hytrach na gofyniad protocol. Wrth ei gymhwyso'n eang, mae'n cuddio'r symptom tra'n newid adferiad ar gyfer pob ffrwd y mae'r llwybr hwnnw'n ei chwmpasu.
Yr hyn y mae tcp-nodelay yn ei wneud a'r hyn nad yw'n ei wneud
Mae gan yr opsiwn twmnel sy'n analluogi byffro ar ddull Nagle ar y soced cludo bwrpas cul: mae'n atal ysgrifau bach rhag aros am fwy o ddata cyn trosglwyddo. Mae hynny'n helpu traffig rhyngweithiol i osgoi oedi ychwanegol ar lwybr iach fel arall.
Nid yw'n troi'r cludiant yn un anghyderus, ac nid yw'n byrhau adferiad ar ôl segment coll. Bydd cragen sy'n oedi am derfyn amser aildrosglwyddo yn dal i oedi gyda'r opsiwn hwnnw wedi'i alluogi, oherwydd ni chyffyrddodd yr opsiwn â'r rheol drefnu erioed.
Mae'n hawdd drysu'r ddau oherwydd disgrifir y ddau fel atgyweiriadau oedi. Mae un yn tynnu aros artiffisial a gyflwynwyd gan byffro; byddai'r llall yn gofyn am newid yr hyn y mae'r cludiant yn ei warantu, nad yw unrhyw opsiwn soced yn ei wneud.
Sut i gymharu cludiant yn deg
Os yw'r gweithredwr yn caniatáu hynny ac mae'r ddau wasanaeth yn bodoli, cymharwch wasanaeth UDP a gwasanaeth TCP sy'n cario'r un llwyth gwaith dros yr un llwybr mynediad i'r un gweinydd. Mae newid gwlad, darparwr neu genhedlaeth gweinydd rhwng y ddau brawf yn cyflwyno newidyn a fydd yn dominyddu'r canlyniad.
Gwyliwch am y saib a rennir yn hytrach nag am rif trwyput. Mae sawl rhaglen fewnol yn stopio gyda'i gilydd yn ystod colled allanol yw'r arsylwad sy'n adnabod blocio pen y llinell; nid yw ffigur prawf cyflymder unigol is yn gwneud hynny.
Mae cipiadau awdurdodedig ar ryngwyneb y twmnel ac ar y rhyngwyneb ffisegol yn gwahanu'r ddwy haen yn lân, oherwydd mae aildrosglwyddiadau mewnol ac allanol yn perthyn i gysylltiadau gwahanol â gofodau dilyniant gwahanol. Gweld aildrosglwyddiadau mewnol tra bo'r ffrwd allanol yn dangos bwlch yw'r dystiolaeth uniongyrchol.
Mae newid i UDP yn tynnu'r ffrwd ddibynadwy ychwanegol ac yn gadael i TCP mewnol wneud ei adferiad ei hun. Nid yw'n addo dim colled na hwyrddydd isel, a bydd angen trwsio dolen uwchlwytho lawn, cyflau gor-fawr neu broblem MTU o hyd. Ni chedwir traffig y tu allan i'r twmnel y tu ôl i fwlch dilyniant y twmnel byth, er y gall ddioddef pan fydd y ddau lwybr yn rhannu un ddolen dagfaog, ac mae'r cyfyngder a rennir hwnnw'n haeddu ei ymchwiliad ei hun yn hytrach na chael ei blygu i'r un hwn.