Eskaera txikiek funtzionatzen dute, deskarga handiak blokeatu egiten dira, eta norbaitek MSS clamping proposatzen du. Proposamen hori askotan nahikoa zuzena da orden egokian probatzea merezi izateko, eta askotan nahikoa okerra arratsalde bat galtzeko itsu-itsuan aplikatzen baduzu. Beheko hiru egiaztapenek TCP tamaina arazo benetakoa UDP arazo batetik, path-MTU aurkikuntza hautsitik eta berridatzi beharko lukeen eskuhartzea inoiz ikusten ez duen clamp batetik bereizten dute.

Hasi hutsegitearen formarekin

Tamaina hutsegiteak sinadura bat du: konexioa ezartzen da, autentifikazioak eta erantzun txikiek arrakasta dute, eta gero transferentzia mugagabe gelditzen da tamaina osoko segmentua behar duenean. Testua kargatzen duten baina irudia inoiz amaitzen ez duten orriek hutsegite bera dira eskala txikiagoan. Ezer inola ere konektatzen ez bada, arazoa bidean lehenago dago eta clamping-ak ez du lagunduko. Clamp batek inoiz iritsi ez den eskuhartze bat ezin du konpondu.

Sinadura existitzen da eskuhartzea segmentu tamaina adosten den tokia delako. Alde bakoitzak segmentu tamaina maximoa iragartzen du TCP aukera gisa, eta bidaltzaileek parearen iragarkia errespetatzen dute. Bideak hain segmentu handia ezin badarama, hutsegitea geroago agertzen da, bidaltzaileak azkenean bat probatzen duenean.

Eduki garraioa begi-bistan sintoma hori irakurtzen duzun bitartean. Clamping TCP aukera baten berridazketa da, beraz tunel beraren azpian gelditzen den ahots edo bideo deia ez da MSS arazoa eta ez da hobetuko. Idatzi garraioa TCP aukera bat ukitu aurretik.

Preziatu bidea, eta gero alderatu tunelekin

Bi zenbaki garrantzitsuak dira eta askotan nahasten dira. path-MTU bideak zatiketarik gabe daraman pakete handiena da, eta IPv4-rako iragarritako MSS balio hori ken IP eta TCP goiburuen 40 byteak da, edo ken 60 IPv6-rako. Tunelaren kapsulatzeak aurrekontuaren zati bat jaten du barne paketea hasi baino lehen ere.

ping -M do -s 1400 198.51.100.20
tracepath 198.51.100.20

do-not-fragment biteko ping-ak esaten dizu karga tamaina horretako paketea bizirik ateratzen den; doitzen ezazu tamaina huts egiten duen arte eta bidearen muga enpirikoki aurkitu duzu. tracepath-ren irteerak ibilbidean zehar aurkitutako MTU-a jakinarazten du, hau azkarragoa da funtzionatzen duenean eta fidagarriagoa ez hop ertain batek zundak iragazten dituenean.

Orain kendu tunelaren gainkarga. Kanpo IP goiburua, UDP goiburua eta tunelari dagokion goiburua 1500 byte beretatik ateratzen dira, beraz Ethernet oinarri tipiko batean erabil daitekeen barne MTU-a esteka fisikoak iradokitzen duena baino baxuagoa da. Kalkulatutako barne MTU-a zure pareek iragartzen dutena baino baxuagoa bada, clamp hautagai benetakoa aurkitu duzu, ez susmo bat. Kalkulatutako balioa pareen iragarkia baino altuagoa bada jada, gelditu hemen eta begiratu beste nonbait.

Jarri clampa eskuhartzea pasatzen den tokian

Clamp-ak MSS aukera SYN eta SYN-ACK paketeetan berridatziz funtzionatzen du, atea zeharkatzen duten bitartean. Erregela bi norabideek inoiz zeharkatzen ez duen interfaze batean badago, negoziazioa aldaketarik gabe amaitzen da eta sintoma irauten du, horregatik kokapenak erabakitzen du emaitza balioak baino gehiago.

SymptomWhat it points toNext check
Handshake completes, large transfer stallsSegment size larger than the path can carryPath MTU against the tunnel's effective MTU
Nothing connects, small or largeRouting, firewall or keying failureNot MSS; look at the tunnel state
Only UDP applications stallDatagram size or a dropped ICMP errorPlatform-specific UDP handling, not clamping
Fixed after reconnect, returns laterClamp applied to one direction or one interfaceRule placement and the handshake path

Norabidea da beste erdia. Norabide bakarrean clamp egiteak fluxuen erdia konpontzen du eta gainerakoa noizbehikakoa dirudien moduan huts egiten uzten du, beraz aplikatu birbidalitako trafikoaren bi norabideetan. Tunel interfaze baterako Linux-en forma klasikoa SYN paketeei dagokien mangle erregela da:

iptables -t mangle -A FORWARD -o tun0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Kontuan hartu --clamp-mss-to-pmtu-k benetan egiten duena: balioa ibilbidearen MTU-tik ateratzen du, eta hori ez da beti tunelaren karga aurrekontu erreala. Ibilbide aldetik oinarritutako tunelean, barne ibilbidea eta kanpo bidea desberdinak direnean, aurreko egiaztapenean kalkulatutako balio esplizitua automatikoa baino aurreikusgarriagoa da.

Egiaztatu konexio berri batekin eta mantendu feedback-a bizirik

Ezarritako konexioak negoziatu zuen MSS-a gordetzen du, beraz saio berean probatzeak ez du ezer frogatzen. Aldaketaren ondoren konexio berri bat ireki eta negoziatutako balioa zuzenean irakurri, kasualitatez amaitzen den transferentzia batetik ondorioztatu beharrean.

ss -tin dst 198.51.100.20
iptables -t mangle -S | grep TCPMSS

Lehen komandoak socket-aren MSS-a jakinarazten du kongestio egoerarekin batera, eta hori da clamp-ak eragin duela baieztatzeko modurik azkarrena. Bigarrenak uste duzun gehitu duzun erregela existitzen den erregela dela baieztatzen du, jarri zen taulan.

Gero babestu konpondu ez duzun mekanismoa. path-MTU aurkikuntzak ICMP fragmentation-needed mezuak bidaltzailearengana iristea behar du, beraz horiek botatzen dituen suebaki batek transferentzia handiak hausten jarraituko du clamp zuzena izanik ere. Baimendu mezu horiek tunelaren biderako, edo onartu clamping-ak aukeratu zenuen politika bat konpentsatzen duela.

Azkenik, aurk egin clamp-a doikuntza botoi gisa tratatzeko tentazioari. Segmentu tamaina mugatzen du, eta horrek throughput-a kostatzen du inoiz behar izan ez zuten bideetan. Hiru egiaztapenen ondoren aplikatuta konponketa zuzendua da; lehenengo aplikatuta jatorrizko hutsegitea ezkutatzen duen eta ondorengo proba bakoitzari bigarren aldagai bat gehitzen dion aldaketa da. Truke hori nahita egin behar da, ez lehenespenez.

Idatzi neurtutako path-MTU-a, kendutako tunel gainkarga, gehitutako erregela eta geroago ikusitako MSS-a. Lau zenbakik hurrengo gertaera bilaketa bihurtzen dute, ikerketa izan beharrean.

Erlazionatutako artikuluak