Newsgroup: it.comp.os.linux.iniziare
Titolo: [OT] Trovare mtu mru ottimale

Da quanto ho letto, mtu e mru dovrebbero essere settati a valori
quanto più aderenti a quelli usati dai routers del nostro isp.
giusto?
Mi chiedevo se estesse un metodo per capire con opportuna
precisione, quale mtu e mru usi l'isp. Non so, ci sono programmi
ad hoc per capirlo? o c'è qualche metodo per tentativi
ragionevolmente preciso?
Ho una connessione via cellulare con Tim, in tecnologia EDGE.
Vi sono parecchie guide ma quasi sempre si riferiscono a
connessioni adsl...
Considerando le alte latenze della mia linea, buttare via
pacchetti penso abbia un effetto più rilevante che con connessioni
più fortunate.
Potete/sapreste aiutarmi con qualche dritta?
Grazie mille in anticipo e scusate se sono un po ot, ma magari vi
è qualche comando o software da usare in linux per venirne a
capo...
Saluti!  :-D

 Saluti!  :-D
Prova a dare un'occhiata qui.
http://forum.html.it/forum/showthread/t-871869.html
http://www.pcworld.it/showPage.php?template=approfondimenti&id=325&sez=pc

 
http://www.pcworld.it/showPage.php?template=approfondimenti&id=325&sez=pc
Il primo link l'avevo già visto, il secondo no, ma in entrambi
francamente non mi pare di vedere soluzioni specifiche per il mio
isp o consigli su metodi per capire quali valori utilizza l'isp
nei suoi routers...
Anyway, grazie comunque per la risposta.
Nessun'altra idea? :-?

 quale mtu e mru usi l'isp.
Vai sul sito dell'isp e li troverai nei parametri di connessione.
 O al limite manda una mail.

 O al limite manda una mail.
Ok, si può sempre provare, ma considerando la competenza dei
callcenter non so...conta che una volta c'era chi mi giurava che
la località in cui vivevo era coperta in hsdpa: dal cellulare di
un amico abbiamo invece verificato che non c'è neanche copertura
umts...mai accettare offerte pluriennali per via telefonica
insomma.
-----
No, io mi chiedevo se ci fosse qualche programma in grado di
capire a quale valore di mtu/mru il router remoto dell'isp
"seziona" i pacchetti, in modo da usare sulla mia macchina gli
stessi valori.
Tipo il traceroute, ci dice quale siano gli indirizzi dei router
che attraversano le nostre richieste prima di uscire su internet.
Il ping ci da una stima della latenza della linea e così via.
Non so magari esiste anche un programma che dice:
"guarda che il pacchetto che hai inviato è troppo grosso e viene
spezzato da quello dell'isp".
Oppure: "stai usando pacchetti troppo piccoli e le transazioni
interouter si moltiplicano".

 Hai mica anche un link a supporto di questa tesi?
Naturalmente. Anzi, telecoma e uind te li forniscono col pacchetto di 
prima installazione.
Non conoscendo il tuo provider posso solo dirti di provare a chiedere.
Oppure se li puo' autonegoziare il router se decente.

 Oppure se li puo' autonegoziare il router se decente.
Stiamo parlando di una connessione dialup via cellulare, niente
router dal mio lato, vedi sempre nel primo messaggio.

JohnnyNewbie ha scritto:

Chiedo scusa... effettivamente ho interpretato male la tua richiesta...
Forse questo link può aiutarti...
http://www.speedguide.net/bdp.php
Cliccando su SG_TCP_Analyzer ti da un report sulla tua linea e ti
evidenzia laddove un parametro non sia pienamente ottimizzato.
Ciao, Davide

 dal mio lato, vedi sempre nel primo messaggio.
Scusa ma sul loro sito niente?
Da google:
MTU a 1500. MRU a 1492

 MTU a 1500. MRU a 1492
Il fatto č che da google ho trovato valori contrastanti, mi
potresti dare anche il link in cui hai trovato quei valori? 

 anche autonomamente non sarebbe male,
Cerca MTU discovery su un qualsiasi motore di ricerca


Dopo quella ricerca ho dato una letta ad alcuni punti di questo
link: 
http://www.ietf.org/rfc/rfc1191.txt
Ho poi fatto alcune prove, l'idea è la seguente:
- le mie richieste verso altri ip passano attraverso una serie di
  routers, tra i quali sono di particolare importanza tutti
  i routers che percorrono i pacchetti a partire dalla mia
  interfaccia di rete ppp0 fino all'uscita dalla rete del mio
  isp.
  Per capire quale sia questo percorso si può usare traceroute.
- Si vuole determinare a che livello, cioè presso quale nodo del
  percorso sopractato si ha frammentazione di pacchetti. E quel
  che più importa, quale sia questo valore di mtu oltre il quale
  scatta la frammentazione.
- Lavoro per tentativi iniziando ad impostare sulla mia
  interfaccia valori di mtu piuttosto alti (e ragionevolmente non
  corretti) tipo 2000. In questo modo se invio pacchetti di 2000
  byte, il collo di bottiglia non risiederà nella mia connessione
  ma in un router del percorso che mi fa affacciare in internet.
- Serve però un accorgimento per essere sicuri: occorre impedire
  che un router possa frammentare i grossi pacchetti che tento di
  inviare, altrimenti non ci si accorgerebbe della frammentazione
  (se non forse con mezzi indiretti che non conosco).
  A questo scopo ci viene in aiuto il cosiddetto:
  Don't Fragment (DF) bit.
  In pratica se inviamo pacchetti attivando questo "flag",
  otteniamo un messaggio di errore qualora un router volesse
  frammentare il pacchetto perchè eccedente il suo mtu.
- In pratica ho usato il seguente comando
  traceroute <nomesito.remoto>    per esempio:
  traceroute 
maya.ngi.it
  ho determinato qual'è l'ultimo ip ancora interno alla rete del
  mio isp. Quindi con la mia interfaccia ppp0 impostata ad
  mtu=2000 ho effettuato un altro traceroute verso l'ip
  determinato al punto precedente:
traceroute 212.239.110.46 1501
traceroute to 212.239.110.46 (212.239.110.46), 30 hops max, 1501
byte packets
 1  10.207.39.33 (10.207.39.33)  1083.174 ms  800.745 ms *
 2  10.207.39.35 (10.207.39.35)  1091.010 ms  662.373 ms 664.955 ms
 3  10.207.37.213 (10.207.37.213)  694.959 ms  612.293 ms 693.970 ms
 4  10.207.37.206 (10.207.37.206)  677.943 ms  623.414 ms 683.943 ms
 5  85.36.8.229 (85.36.8.229)  679.945 ms  653.460 ms 715.954 ms
 6  172.17.5.81 (172.17.5.81)  663.958 ms  635.402 ms 679.001 ms
 7  172.17.5.65 (172.17.5.65)  712.889 ms  636.365 ms 666.962 ms
 8  
r-rm197-vl4.opb.interbusiness.it
 (151.99.29.215) 744.011 ms
                                               696.901 ms  676.969 ms
 9  85.36.9.134 (85.36.9.134)  679.945 ms  634.467 ms 700.959 ms
10  
ge1-6.wf2-swr2.net.inet.it
 (212.239.110.105) 763.965 ms
                                                683.364 ms  739.956 ms
11  
Po4.bf2-swr1.net.inet.it
 (212.239.110.93)  670.955 ms  678.383 ms
                                                             683.960 ms
12  
po3.wf1-gsr3.net.inet.it
 (212.239.110.61)  635.965 ms  648.373 ms
                                                             704.958 ms
13  212.239.110.46 (212.239.110.46)  674.957 ms  683.445 ms  683.955 ms
Forse già si poteva tagliare già al salto 7, ma va bè.
Il responso traceroute usato così non dice granchè sugli mtu che
usano i routers attraversati perchè appunto il flag DF (dont
fragment) non è settato e ci sono buone possibilità quindi che
uno di quei router abbia spezzato il pacchetto che ho inviato
visto che era superiore a 1500 bytes.
traceroute consente di impostare tale flag con l'opzione -F
Ed ecco cosa accade:
traceroute 212.239.110.46 -F 1501
traceroute to 212.239.110.46 (212.239.110.46), 30 hops max, 1501
byte packets
 1  10.207.39.33 (10.207.39.33)  2708.263 ms !F-1500traceroute:
    sendto: Message too long
traceroute: wrote 212.239.110.46 1501 chars, ret=-1
 x.x.x.x (x.x.x.x)  0.132 ms !F-1500traceroute:
  sendto: Message too long
traceroute: wrote 212.239.110.46 1501 chars, ret=-1
  0.090 ms !F-1500
------
Quindi si ferma già al primo hop lamentando il valore di mtu
troppo grande, vorrebbe frammentarlo, ma non può proprio perchè
tale traceroute aveva aggiunto il bit DF che impedisce la
frammentazione dei pacchetti.
- Allora si prova con un valore di mtu più basso sempre
  impostando il flag DF:
traceroute 212.239.110.46 -F 1500
traceroute to 212.239.110.46 (212.239.110.46), 30 hops max, 1500 byte packets
 1  * * 10.207.39.33 (10.207.39.33)  697.036 ms
 2  10.207.39.35 (10.207.39.35)  684.412 ms  642.412 ms  664.924  ms
 3  10.207.37.213 (10.207.37.213)  692.965 ms  622.384 ms 742.955 ms
 4  10.207.37.206 (10.207.37.206)  660.966 ms  609.378 ms 688.948 ms
 5  85.36.8.229 (85.36.8.229)  674.959 ms  656.258 ms 689.961 ms
 6  172.17.5.81 (172.17.5.81)  667.953 ms  629.380 ms 679.969 ms
 7  172.17.5.65 (172.17.5.65)  684.950 ms  632.378 ms 688.956 ms
 8  
r-rm197-vl4.opb.interbusiness.it
 (151.99.29.215) 662.964 ms  708.339 ms
     653.901 ms
 9  85.36.9.134 (85.36.9.134)  692.961 ms  684.297 ms 703.957 ms
10  
ge1-6.wf2-swr2.net.inet.it
 (212.239.110.105) 687.964 ms  694.358 ms
     700.952 ms
11  
Po4.bf2-swr1.net.inet.it
 (212.239.110.93)  708.956 ms  736.373 ms
     684.003 ms
12  
po3.wf1-gsr3.net.inet.it
 (212.239.110.61)  880.887 ms  824.368 ms
     757.962 ms
13  212.239.110.46 (212.239.110.46)  683.956 ms  675.449 ms  739.955 ms
---------
Ok, questo dovrebbe dimostrare che l'isp consente e pertanto
utilizza un mtu pari a 1500. Quindi, il settaggio ottimale della
mia interfaccia ppp0 dovrebbe essere un mtu di 1500.
Infatti questo rappresenta la dimensione massima dei pacchetti
inviati oltre la quale i router del'isp spezzerebbero i
pacchetti.
Di questa frase sono piuttosto convinto per quel che riguarda la
dimensione massima dell'mtu da impostare, ovvero non va impostato
sopra a 1500.
MA cosa succederebbe se si impostasse un valore più basso? o
troppo più basso?
In effetti la domanda non ha molto senso in quanto il valore
ottimale dovrebbe essere proprio 1500 per il parametro mtu.
Probabilmente impostando valori più bassi i router dell'isp non
sarebbero più "allineati" con la mia interfaccia ppp0, causando
come minimo un aumento della latenza e probabilmente una
diminuizione anche se non in misura troppo rilevante, di banda.
Inoltre resta scoperto il valore MRU ovvero la massima dimensione
dei pacchetti in ricezione sulla mia interfaccia. Come capire
quale sia il valore giusto?
Razionalmente ma anche un po' a naso direi di metterlo a 1500
anche lui, ma ci potrebbero essere invece motivazioni per
settarlo diversamente...non so.
Spero che qui dentro ci sia qualcuno un po' esperto in materia e
che magari vedendo il procedimento che ho seguito possa fare un
po' di luce sulla questione.
Grazie in anticipo e spero che tutto questo possa servire anche
ad altri
 1  10.207.39.33 (10.207.39.33)  1223.546 ms !F-1500traceroute:
    sendto: Message too long
    traceroute: wrote 
maya.ngi.it
 1501 chars, ret=-1
 x.x.x.x (x.x.x.x)  0.146 ms !F-1500traceroute:
 sendto: Message too long
  traceroute: wrote 
maya.ngi.it
 1501 chars, ret=-1
    0.074 ms !F-1500

   Per capire quale sia questo percorso si può usare traceroute.
Nessuno ti assicura che tutti i pacchetti faranno quel percorso... il 
percorso può cambiare da pacchetto a pacchetto

 percorso può cambiare da pacchetto a pacchetto
Diverse prove fatte versi diversi siti esterni hanno in comune
(quasi) gli stessi routers iniziali, ovvero i primi 10 hops circa
dovrebbero essere quelli necessari ad uscire dalla rete dell'isp.
Non solo, ma i primi 4 o 5 sono ip privati, segno che vi è una
rete interna prima di giungere ad un ip pubblico.
Già su qesti ip vi è una frammentazione a 1500 bytes. Se quei
routers funzionassero ad un MTU più basso otterrei degli errori
anche a 1500, mi pare abbastanza ovvio, quindi direi proprio che
l'mtu dei primi routers è 1500. Poi ovviamente prima o dopo si
potrebbe anche incrociare un router con mtu più basso, questo è
ovvio, ma intanto iniziamo a vedere come funzionano i routers più
vicini a noi... le alte latenze che interessano la mia linea sono
pesanti in maggior parte tra me e la BS che copre la mia cella,
tutti gli altri hop hanno importanza meno rilevante.