Problemi MTU/Jumbo frame su vari hardware e OS

Il Mac e le reti

Moderatore: ModiMaccanici

EdoFede
Stato: Non connesso
Hardware Expert
Hardware Expert
Iscritto il: mer, 01 feb 2017 22:50
Messaggi: 36

Top

Buondì,

volevo segnalarvi un bug (presumo software) di Mac che ho riscontrato con diverse combinazioni hardware e software.
Già segnalato anche ad Apple in modo molto dettagliato su form apposito e anche su Bug reporter due mesi fa, ma non ho mai avuto risposte.

Il problema riguarda l'instabilità della rete (cablata) quando si utilizza un MTU superiore al classico 1500 bytes (comunemente chiamato Jumbo Frames) ed è piuttosto assurdo.

Perché MTU superiore a 1500
Dunque, senza stare a scendere troppo nel tecnico di come funziona una rete, il layer 3, ecc...
il concetto è che con la velocità della rete gigabit, in caso di alto throughput (es. backup in corso, trasferimento di dati, ecc..) si va ad aumentare il carico CPU per gestire l'elevato numero di pacchetti (cosa più vera in passato rispetto ad ora, quando le schede di rete non facevano offload tramite buffer ed algoritmi, ma comunque presente in certe situazioni).

Quindi ad esempio, se sto trasferendo un file grosso da un NAS al mio computer, mi troverò un processo "kernel_task" che mi occupa 30-40% di un thread (su iMac 5K con cpu i7). Su questa macchina la faccenda non è rilevante, ma finché avevo il Mac Mini, il carico era moooolto più marcato.
Portando l'MTU a valori più elevati, il carico sulla CPU diminuisce sensibilmente (perché chiaramente il mio dato in transito dovrà essere "spezzato" in molti meno pacchetti).

Quindi è una cosa utile solo in particolari situazioni e con particolari condizioni. Ad esempio: tutti i device dello stesso segmento di rete devono avere lo stesso MTU impostato (oltre a supportarlo, ovviamente) perché il tutto funzioni senza problemi.
Suggerisco di evitare sperimentazioni, se non sapete bene cosa state facendo, perché potreste trovarvi "problemi inspiegabili" più avanti :)


Setup jumbo frame su Mac
Ve lo descrivo nel caso qualcuno abbia avuto esperienze analoghe.

Su Mac è possibile impostare un MTU dal pannello "Hardware" della configurazione di rete.
Network settings.jpg
Network settings.jpg (74.78 KiB) Visto 744 volte
Dopo di che, si può verificare il corretto funzionamento da Terminale con il comando "ping".

Codice: Seleziona tutto

ping -D -s <packet size> <destinazione>
Il packet size è il vostro MTU meno 28 bytes di overhead, quindi se avete impostato un MTU di 4000, in <packet size> va usato 3972 per testare.

Esempio del risultato verso il mio nas, prima con packet size giusto per rete standard a 1500 bytes di MTU, dopo con un byte in più:

Codice: Seleziona tutto

edo@eMac:~> ping -D -s 1472 nas.local
PING nas.local (10.0.1.3): 1472 data bytes
1480 bytes from 10.0.1.3: icmp_seq=0 ttl=64 time=0.427 ms
1480 bytes from 10.0.1.3: icmp_seq=1 ttl=64 time=0.457 ms

edo@eMac:~> ping -D -s 1473 nas.local
PING nas.local (10.0.1.3): 1473 data bytes
ping: sendto: Message too long
ping: sendto: Message too long
Request timeout for icmp_seq 0
ping: sendto: Message too long
Request timeout for icmp_seq 1
Il problema
Bene, veniamo ora al problema.

Avevo impostato correttamente tutta la rete per MTU elevato e tutto funzionava correttamente tra ogni singolo apparato.
Dopo diverse settimane di utilizzo, mi trovo un giorno con il Mac mini (che avevo prima) che non naviga più e non da segni di vita sulla scheda di rete.
Disattivo-riattivo e torna a funzionare, poi dopo qualche ora crolla nuovamente.
Dopo varie prove, sembra che mantenendo un terminale con un ping sempre attivo, la cosa si stabilizzi.

Dopo diverso tempo di prove e questo problema che si ripresenta in maniera del tutto casuale (senza alcuna correlazione con uptime o carico sulla rete), scopro che il tutto è relazionato al settaggio di un MTU più elevato del 1500 bytes standard!

A questo punto ho fatto una serie di prove man mano che cambiava qualcosa (versioni di OS X, e passaggio da Mac Mini mid 2011 al nuovo iMac), ma niente... il comportamento è sempre il medesimo.
Appena preso il nuovo iMac ho fatto una serie di test a macchina totalmente pulita, appena installata.. stesso comportamento.

- Attivo MTU superiore a 1500
- Riconnessione perfetta alla rete, recupero indirizzo da DHCP ok, test di trasferimenti a piena banda perfetti
- Dopo un certo lasso di tempo (casuale e variabile), rete morta

Per "rete morta" intendo che il sistema operativo sembra non accorgersi affatto della disconnessione (sia da preferences, sia con comando "ifconfig") e non da alcun log strano in console.
Disabilitando e riabilitando la rete, la stessa riprende a funzionare per qualche istante e poi muore nuovamente.

Qua lo screenshot del terminale, dove si nota che l'OS sembra non accorgersi del problema:
ifconfig before and after network fail.jpg
ifconfig before and after network fail.jpg (147.02 KiB) Visto 744 volte
(primo comando dato a rete funzionante, secondo comando dato dopo qualche secondo che non era più funzionante)


Le prove sono state fatte con diverse configurazioni hardware:
- Mac Mini - Mid 2011 (Macmini5,2)
- iMac 5K - Late 2015 (iMac17,1)

...con diversi OS:
- Sierra (10.12.3)
- El capitan, quasi tutti i minor updates
Da quanto ricordo, mi pare non succedesse con Yosemite o versioni precedenti, ma non sono sicuro

e con diversi switch di rete:
- Cisco Catalyst 3560G-24TS
- ZyXEL GS108B
- D-Link DGS-1008D
- D-Link DGS-1005D

ed anche con diversi cablaggi..tanto per essere sicuri :D


Qualcuno ha mai avuto problemi analoghi?
(oddio...bisognerebbe prima trovare qualcuno che abbia mai avuto esigenze simili in effetti... :D )


Ciao,
Edo

Avatar utente
Uno_qualunque
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: lun, 12 lug 2010 09:32
Messaggi: 3267

Top

Io pur avendo rete gigabit e NAS che supporta i jumbo frame, non mi ci sono mai messo a smanettare. Quando torno a casa faccio un po' di verifiche.

Devo dire che ho un po' paura perche per esigenze varie passo dal router a uno o due switch e questi non so se siano particolarmente adattabili.
Fate il backup, fate il backup, ricordate di fare il backup, non dimenticate di fare il backup.

"Il backup è quella cosa che andava fatta prima" (antico proverbio cinese)

EdoFede
Stato: Non connesso
Hardware Expert
Hardware Expert
Iscritto il: mer, 01 feb 2017 22:50
Messaggi: 36

Top

Per essere sicuro con la rete jumbo frame, ogni dispositivo deve avere lo stesso MTU impostato.
Se hai una rete mista ti suggerirei di lasciar stare... (io avevo due subnet separate).

Comunque se ti capita di provare...grazie :)

Ciao,
Edo

Rispondi

Torna a “Networking”

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti