Toqba sewda tal-MTU: għaliex it-talbiet żgħar jaħdmu imma l-uploads jieqfu
Talbiet żgħar jispiċċaw waqt li upload kbir jiddendel għal dejjem, u min jibgħat qatt ma jsir jaf li t-triq hi idjaq. Kejjel id-daqs eżatt fejn jinqasam.
Paġna tgħabbi, sejħa API żgħira terġa’ lura, u mbagħad upload ta’ fajl jiddendel sakemm il-klijent jċedi. Xejn fil-log tas-server ma jispjega dan, għax il-pakketti twaqqgħu f’nofs it-triq mingħajr ma ntbagħtet lura tweġiba utli. Dan ix-xejra hi toqba sewda tal-MTU: konnessjoni idjaq milli jassumi min jibgħat, flimkien ma’ ċaħda siekta li tgħid dan. Id-daqs li jfalli hu ripetibbli, u dan hu li jagħmilha dijanjostikabbli.
X’jagħmel it-toqba sewda
Kull konnessjoni għandha unità massima ta’ trażmissjoni, u pakkett ikbar mil-limitu tal-hop li jmiss irid jew jiġi frammentat jew miċħud b’messaġġ ICMP li jgħid dan. L-iskoperta tal-MTU tat-triq tiddependi milli jasal dak il-messaġġ u jiġi rispettat. Li tiffiltrah jew tinjoraħ iħalli lil min jibgħat jirrepeti pakkett li qatt ma jista’ joqgħod.
L-inkapsulament jagħmel dan komuni madwar il-VPN, għax mina żżid intestatura ta’ barra ma’ pakkett li kien diġà mkejjel għall-konnessjoni fiżika. Il-pakkett ta’ ġewwa hu legali f’1500 byte u dak inkapsulat mhuwiex, allura jmut fil-fruntiera waqt li pakketti żgħar jgħaddu. Handshake komplut u paġna tal-login li taħdem jippruvaw biss li pakketti żgħar jaħdmu. L-akbar pakkett li l-applikazzjoni tipprova tibgħat hu dak li jimporta.
Sib id-daqs fejn jinqasam
Fittex b’mod binarju d-daqs tal-payload b’test mingħajr frammentazzjoni, minn host fuq naħa tal-mina għal host fuq in-naħa l-oħra. L-akbar payload li jgħaddi hu l-MTU tat-triq li tista’ tuża nieqes l-overhead tal-intestatura.
ping -M do -s 1400 -c 2 192.0.2.20
ping -M do -s 1200 -c 2 192.0.2.20
ping -f -l 1372 192.0.2.20
Payload ta’ 1472 byte jgħaddi fuq triq Ethernet nadifa ta’ 1500 byte ladarba jiżdiedu t-28 byte tal-intestaturi IPv4 u ICMP. Meta l-istess test jgħaddi biss b’payload iżgħar wara li titla’ l-mina, id-differenza hi l-overhead tal-inkapsulament, u l-fruntiera tal-mina hi fejn kellu jiġi ġġenerat il-messaġġ taċ-ċaħda. Nota ż-żewġ numri, qabel u wara li tikkonnettja, għax dak il-par hu l-prova. Irrepeti t-test għall-IPv6 meta l-applikazzjoni tużah, għax l-intestatura hi akbar u l-limitu tal-falliment jiċċaqlaq.
Aqra l-provi qabel ma tagħti l-ħtija lill-mina
Żbalji ta’ applikazzjonijiet remoti, konġestjoni u telf ordinarju jwaqqfu wkoll l-uploads, allura trasferiment wieħed li jfalli ma jidentifikax toqba sewda. Li jifridhom hi r-relazzjoni tad-daqs: suċċess ripetibbli f’1200 byte u waqfa ripetibbli f’1400 byte, fl-istess direzzjoni, mill-istess punt finali.
Qbid fiż-żewġt iċnut juri l-pakketti kbar ħerġin u qatt ma jaslu, mingħajr ċaħda bejniethom. Dak hu l-mument li tħares lejn l-apparat tal-fruntiera minflok is-server, li qed iwieġeb kull talba li tassew jirċievi. Il-konġestjoni wkoll twaqqaf, imma twaqqaf daqsijiet differenti fi żminijiet differenti, u dik hi firma differenti.
Ivverifika t-tiswija fuq iż-żewġ trasporti
It-tiswija appoġġata hi li tħalli l-fruntiera tirrapporta l-limitu veru, jew li hemmhekk torbot id-daqs massimu tas-segment tat-TCP biex ma jiġix ippruvat segment kbir wisq. Li tnaqqas kull MTU fuq in-netwerk, jew li tiddiżattiva l-firewall, taħbi s-sintomu u tħalli konfigurazzjoni li ħadd ma jista’ jirraġuna dwarha aktar tard.
ip link show dev tun0
sudo nft list ruleset | grep -i -E 'mtu|mss'
sysctl net.ipv4.tcp_mtu_probing
ping -M do -s 1400 -c 2 192.0.2.20
Ivverifika bl-istess test tad-daqs, imbagħad bl-applikazzjoni li fallett, u ċċekkja t-tieni protokoll, għax l-applikazzjonijiet UDP qatt ma jirċievu l-korrezzjoni tad-daqs tas-segment tat-TCP. Żomm il-valuri oriġinali fit-ticket, għax tiswija li ma tistax titreġġa’ lura hi t-tieni problema li qed tistenna li sseħħ. Jekk it-test tad-daqs jgħaddi u l-upload xorta jieqaf, it-toqba sewda ma kinitx il-kawża, u l-investigazzjoni għandha tkompli minflok ma tkompli t-tibdila.