Hai i sintomi di un problema MTU : alcune connessioni TCP si bloccano, più o meno riproducibili per un determinato comando o URL ma senza un modello generale facilmente distinguibile. Un sintomo rivelatore è che le sessioni interattive di ssh funzionano bene ma i trasferimenti di file quasi sempre falliscono. Inoltre pppoe è il portatore numero uno del problema MTU per gli utenti domestici. Quindi prescrivo un controllo MTU.
Che cos'è?
La m assima t rasmissione u nit è la dimensione massima di un pacchetto su un collegamento di rete. L'MTU varia da mezzo di trasporto a mezzo di trasporto, ad es. Ethernet cablata e wifi (802.11) hanno MTU diversi e i collegamenti ATM (che costituiscono la maggior parte dell'infrastruttura a lunga distanza) hanno ciascuno il proprio MTU.
PPPOE è un protocollo incapsulato, il che significa che ogni pacchetto è composto da pochi byte di intestazione seguita dal pacchetto sottostante, quindi riduce la dimensione massima del pacchetto in base alla dimensione dell'intestazione.
L'IP consente ai router di frammentare i pacchetti se rilevano che sono troppo grandi per l'hop successivo, ma ciò non sempre funziona. In teoria dovrebbe essere scoperto il corretto MTUautomaticamente , ma anche questo non sempre funziona. In particolare, googling suggerisce che Network Manager non agisce sempre correttamente sulle informazioni MTU ottenute dal rilevamento MTU, ma non so quali siano le versioni interessate o quali siano i casi d'uso problematici.
Come misurarlo
Se hai iputils ditracepath
Linux , corri per vedere l'MTU sul percorso del server DNS di Google. Se la tua versione di ha un'opzione, esegui . Vedi Scopri MTU tra me e IP di destinazione per ulteriori opzioni.tracepath 8.8.8.8
traceroute
--mtu
traceroute -n --mtu 8.8.8.8
In mancanza di strumenti automatizzati, è possibile misurare manualmente. Prova a inviare pacchetti di ping di una determinata dimensione a host esterni che rispondono ad essi, ad es. ping -c 1 -s 42 8.8.8.8
(Su Linux; su altri sistemi, consulta la documentazione del tuo ping
comando). I pacchetti dovrebbero passare per valori abbastanza piccoli di 42 (se 42 non funziona, qualcosa sta bloccando i ping). Per valori più grandi, il pacchetto non passerà attraverso. 1464 è un valore massimo tipico se l'infrastruttura limitante è la rete Ethernet locale. Se sei fortunato, quando invii un pacchetto troppo grande, vedrai un messaggio simile Frag needed and DF set (mtu = 1492)
. Se non sei fortunato, continua a sperimentare il valore finché non trovi qual è il massimo, quindi aggiungi 28 ( -s
specifica la dimensione del payload e ci sono 28 byte di intestazioni in aggiunta a quello). Guarda ancheCome ottimizzare la tua connessione Internet usando MTU e RWIN sui forum di Ubuntu.
Come impostarlo (sostituisci 1454 con l'MTU che hai determinato e eth0
con il nome della tua interfaccia di rete)
- Come una volta (Linux): eseguire
ifconfig eth0 mtu 1454
- Permanentemente (Debian e derivati come Ubuntu, se non si usa Network Manager): Modifica
/etc/network/interfaces
. Subito dopo la voce per l'interfaccia di rete (dopo la iface eth0 …
direttiva), aggiungi una riga con pre-up ifconfig $IFACE mtu 1454
. In alternativa, se il tuo indirizzo IP è statico, puoi aggiungere il mtu 1454
parametro alla iface eth0 inet static
direttiva.
Permanentemente (Debian e derivati come Ubuntu, con o senza Network Manager): creare uno script chiamato /etc/network/if-pre-up.d/mtu
con i seguenti contenuti e renderlo eseguibile a livello mondiale ( chmod a+rx
):
#!/bin/sh
ifconfig $IFACE mtu 1454
Ulteriori risorse