MTU, L2MTU e jumbo frame: dimensionare i frame end-to-end
Capire MTU L3 e L2MTU L2 su RouterOS v7, calcolare l'overhead di VLAN/QinQ/PPPoE/tunnel, abilitare i jumbo frame e usare MSS clamping per evitare i 'black hole' dei pacchetti grandi.
Il dimensionamento dei frame è una delle cause più subdole di malfunzionamenti in una rete WISP: il ping funziona, le pagine web si aprono, ma alcuni siti HTTPS, le VPN o i trasferimenti grandi si bloccano. Quasi sempre è un problema di MTU/L2MTU lungo il percorso. Questo articolo spiega come ragionare e come risolverlo a monte.
MTU (L3) vs L2MTU (L2): chi limita cosa
- MTU = massimo payload IP (default 1500). È ciò che vede il routing/IP.
- L2MTU = massimo frame Ethernet completo (header L2 inclusi). Deve essere ≥ MTU + overhead L2 (tag VLAN, ecc.).
- Le interfacce VLAN, bridge, bonding, tunnel EREDITANO un L2MTU dal sottostante: se il fisico ha L2MTU basso, la VLAN sopra non può alzarlo.
- Se L2MTU non basta per ospitare MTU+overhead, i frame grandi vengono scartati silenziosamente: ecco i 'black hole'.
# Vedere MTU e L2MTU di tutte le interfacce coinvolte /interface print detail # Solo le fisiche con il loro L2MTU massimo supportato /interface/ethernet print detail where l2mtu>0
Jumbo frame: quando e come
I jumbo frame (MTU > 1500, tipicamente 9000) riducono l'overhead per byte su link interni ad alto throughput (es. tra switch core, verso storage/iSCSI). NON vanno propagati verso Internet o i clienti: lì il mondo è a 1500. Per abilitarli devi alzare L2MTU sulle interfacce fisiche e poi MTU sulle logiche, su TUTTI gli hop del percorso jumbo.
# 1) Alzare L2MTU sulle porte fisiche del percorso jumbo /interface/ethernet set ether1 l2mtu=9000 set ether2 l2mtu=9000 # 2) Alzare MTU sull'interfaccia L3 (es. il bridge interno) /interface/bridge set bridge-core mtu=9000 # 3) Verificare che il path supporti 9000 (do-not-fragment) /ping 10.0.0.2 size=8972 do-not-fragment count=5 # 8972 = 9000 - 28 (header IP+ICMP). Se passa, jumbo ok end-to-end.
PPPoE e il classico 1492
Il PPPoE aggiunge 8 byte di overhead, quindi l'MTU IP dentro una sessione PPPoE è tipicamente 1492. Se il link sottostante porta L2MTU a 1500, i pacchetti PPPoE da 1500 non ci stanno (servirebbe 1508). La soluzione pulita per i WISP è il baby-giant: alzare L2MTU a 1508/1520 su tutta la dorsale d'accesso così la sessione PPPoE può mantenere MTU 1500 reale per il cliente.
# Alzare L2MTU sull'accesso per ospitare PPPoE a MTU 1500 /interface/ethernet set ether1 l2mtu=1520 set ether2 l2mtu=1520 # Sul server PPPoE alzare max-mtu/max-mru a 1500 /interface/pppoe-server/server set [find] max-mtu=1500 max-mru=1500
MSS clamping: la rete di salvataggio per TCP
Quando non puoi controllare l'MTU di tutto il percorso (Internet pubblica), il MSS clamping evita i black hole TCP: il router riscrive l'MSS nei pacchetti SYN in transito al valore giusto, così i due capi negoziano segmenti che ci stanno nell'MTU più piccolo del percorso. È quasi obbligatorio su uscite PPPoE/tunnel.
# Clamp MSS al Path MTU per tutto il TCP che attraversa pppoe-out/tunnel
/ip/firewall/mangle
add chain=forward protocol=tcp tcp-flags=syn \
action=change-mss new-mss=clamp-to-pmtu \
out-interface-list=WAN \
comment="MSS clamp to PMTU su uscita WAN/PPPoE"/ping <ip> size=<n> do-not-fragment.Continua con
Configura senza fatica con l'AI
In WispOS l'agente AI genera la configurazione RouterOS dalle tue parole e un tutor ti guida passo passo.
Prova WispOS