Salve, questa piccola guida per spiegare finalmente il motivo per cui la navigazione in internet di diversi utenti che posseggono una connessione adsl, su alcune pagine o su un certo numero di siti non funzioni.
Facciamo una piccola premessa spiegando come funziona la trasmissione dati attraverso internet.
Ogni pc quando invia i dati attraverso la rete internet utilizza una forma di confezionamento degli stessi chiamata impacchettamento.
Ogni pacchetto per default ha una grandezza massima definita di 1500 byte.
In questi 1500 byte il pacchetto indica così come in una lettera, il mittente, il destinatario ed il payload ovvero il messaggio.
Internet è una rete in cui tutti i sistemi interconnessi hanno un ip “pubblico”, statico (se assegnato dal provider in maniera definitiva come per i siti web) o dinamico (se assegnato nell’arco di una connessione dal provider).
Cosa succede quindi alle persone che sono connesse ad una rete locale quest’ultima connessa ad internet? Come fanno a navigare, chattare, scaricare file, se non hanno un indirizzo ip pubblico?
Bene a questo ci pensa il router che collega i pc della rete locale a internet attraverso la classica connessione adsl o in fibra ottica.
In effetti il router non fà altro che cambiare l’indirizzo del mittente del pacchetto dati con il suo e salvarsi in una sua tabella a chi consegnare i messaggi di ritorno. Un po’ come fà il portiere di un palazzo.
Ora il router molte volte nell’ispezionare i pacchetti per aggiungere le sue informazioni non fà altro che aggiungere carico al pacchetto cioè ne accresce le dimensioni, questo fà si che un pacchetto di 1500 byte che esce dal pc acquisisca 8 byte dal suo router, altri 8 dal dslam (che è l’apparato che fonisce le connessioni adsl agli utenti) altri 8 dall’MRV che è l’apparato che fornisce connettività al dslam e così via.
Il nostro pacchetto nel giro di pochi passaggi diventa di 1530-1560 byte.
Bene compreso questo dobbiamo ritornare indietro e pensare a quanto detto prima e cioè, ma il pacchetto non deve avere dimensioni di 1500 byte? Dovrebbe, ma fortunatamente gli apparati di rete hanno una tecnologia che permette di frammentare l’invio dei dati in 1 pacchetto in 2 o più pacchetti il chè purtroppo non sempre è una cosa buona. Pensate al caso in cui dovete fare un trasloco di casa e magari dovete fare due o tre viaggi con il furgone da casa vecchia a casa nuova quando magari potevate risparmiarne qualc’uno ottimizzando l’occupazione dello spazione nel furgone.
Bene qualcuno dirà ma tanto è la ditta di traslochi che se ne occupa, e questo è vero, ma fin quando casa nuova è a pochi km di distanza il costo del trasloco potrebbe essere invariato, ma pensate a dovervi spostare a 1000 km di distanza tipo da Cosenza a Milano, i costi per le vostre tasche aumenterebbero di molto.
E questo per una connessione adsl internet può influire sul 50/70 % delle prestazioni della rete. Chiaramente oggi giorno sono stati realizzati dei tool che risolvono il problema della frammentazione dei pacchetti e quindi ottimizzano l’mtu affinchè possa trasportare in un singolo viaggio la quantità di informazioni prestabilità dalle applicazioni. Su windows esiste un applicazione che si chiama tcpoptimizer mentre su linux si può usare questa guida http://www.speedguide.net/read_articles.php?id=121 o cercare il corrispettivo di tcpoptimizer per linux.
Fino ad ora abbiamo risolto il problema della frammentazione ed almeno sulla carta abbiamo aumentato le prestazioni della nostra connessione. Ma cosa centra tutto questo con il fatto che alcuni siti sono visualizzabili ed altri no?
Facciamo un passo in dietro e spieghiamo una cosa molto semplice ma non banale. Pensate che con l’adsl la centrale telefonica che vi offre connettività è situata a non più di 5 km da casa vostra. Ora tralasciando i passaggi intermedi di connessione che ho già descritto sopra, come pensate che siano collegati i vari provider e quindi le varie sale OLO( sono le stanze all’interno della centrale telefonica dove sono dislocate le apparecchiature di rete del provider) alla rete internet? Attraverso un cavo dedicato? Bhè diciamo che la connessione tra una centrale e l’altra avviene attraverso un singolo cavo o cmq un blocco di cavi molto grande e poi da li succede una cosa molto semplice.
I provider comprano la banda di connessione della loro sala OLO tipo 10 mbit/s ed il fornitore del servizio in questo caso Telecom cosà fà?! Realizza quello che in gergo viene chiamato tunneling ovvero realizza una connessione virtuale una vpn (virtual private network) attraverso la connessione fisica. Quindi magari il cavo telecom riesce a trasportare centinaia di megabit al secondo ma il nostro provider ne compra solo 10.
Ora premesso questo dobbiamo dire che il meccanismo del tunneling o vpn del nostro provider aggiunge buoni buoni dai 40 ai 60 byte di grandezza al nostro pacchetto, Voi direte si ma allora cosa importa al massimo navighiamo più lenti, ma comunque dovremmo vedere tutti i siti web, questo è vero fino ad un certo punto inquanto diversi router di frontiera come quelli della vpn descritti prima, per ottimizzare il traporto attraverso questi “tunnel” non supportano la frammentazione del pacchetto, quindi i nostri pacchetti frammentati e divisi verranno cancellati.
Ecco perchè innumerevoli volte ho suggerito di impostare l’mtu inferiore a 1462 byte sull’interfaccia di rete del nostro pc in modo che l’overhead (il termine tecnico per definire quei byte aggiunti durante il transito) non faccia crescere il pacchetto fino al punto di farlo scartare dall’apparato di trasmissione di frontiera magari perchè superiore alla sua grandezza massima.
Spero con questa piccola “guida” di essere stato d’aiuto, ho cercato di utilizzare un linguaggio semplice ma non banale per rispondere a quanti come me in passato si sono fatti la stessa domanda.
Come mai alcuni siti vengono visualizzati ed altri no? Bhè ora avete la risposta.
Che banalmente posso definire in poche righe:
L’overhead di un pacchetto aggiunto dai vari router durante il transito di quest’ultimo sulla rete internet, ne aumenta la dimensione (del pacchetto) al punto che il primo apparato (router o vpn concentrator) a non supportare la frammentazione lo scarti a causa delle sue impostazioni interne.






13/12/2007 @ 17:42
Articolo molto tecnico, ma squisitamente interessante! Grazie per aver condiviso la tua esperienza…
Sarebbe utile capire se esiste il corrispettivo di tcpoptimizer per Linux, e se qualcuno l’ha provato con successo.
20/12/2007 @ 12:04
Mi sono scontrato anche io con MTU durante la configurazione di proxy web trasparente! Utilizzando dei ruoter con il valore di MTU automatico non veniva fatto il redirect sulla porta 80, impostando l’MTU ad un valore ad esempio 1490 riuscivo a fare il redirect.
Articolo sicuramente esaustivo e utili a tutti
26/12/2007 @ 18:17
L’articolo è si tecnico ma approssimativo, e contiene una serie di errori allucinanti.
Hai mischiato concetti come NATting o PATting, trasmissione di un segmento dati e tunneling VPN.
Il NATting o PATting viene effettuato dal router che fornisce un gateway alla tua rete locale, e non intacca il valore dell’MTU, in quando deve sostituire un indirizzo privato (non routabile su Internet) con uno pubblico (cioè routabile su Internet), salvandosi in locale queste associazioni. Qui l’MTU non cambia.
Secondariamente, un router ispeziona i pacchetti fino al livello 3 OSI, al solo scopo di leggere la rete cui il pacchetto è destinato e (tramite le sue tabelle di routing) instradarlo sull’opportuna interfaccia (o dropparlo nel caso in cui le sue ACL indichino diversamente). Anche qui, l’MTU non viene toccato. Tu dici invece che vengono aggiunti gruppi da 8 byte al payload da trasmettere. Mi dici dove vengono aggiunti e a che titolo?
Infine, le VPN che collegano tratte tra centrali di un provider sicuramente aggiungono overhead alla trasmissione (e di questo l’utente normale non se accorge), ma possono anche comprimere il traffico da trasmettere proprio per ottimizzare la trasmissione.
Mi spieghi meglio, allora?
Buone Feste!
03/01/2008 @ 16:52
Ciao, ti dirò che hai ragione inquanto l’articolo non voleva in nessun caso essere un tutorial ma una spiegazione sommaria anche se esaustiva dell’argomento. In effetti ho tralasciato volutamente alcuni argomenti come ad esempio il fatto che lato dslam i pacchetti viaggiano su trame atm quindi con un formato diverso da quello ethernet. Inoltre come ben sai visto che comunque sarai una persona certificata cisco molti router che ho trovato in quasi un anno di lavoro in helpdesk facevano cose strane… Ad esempio malgrado il sistema operativo generasse trame ethernet a 1460 byte durante l’operazione di nating venivano aggiunti i 40 byte di overhead a causa forse di un bug o impostazione comune. Per quanto riguarda gli “8 byte” non dico che vengono aggiunti ad ogni passaggio ma che cmq la conversione produce overhead. Se hai una scatola piena con 10 uova e vuoi traslarle tutte in scatole da 4 posti userai 3 scatole e nell’ultima avrai 2 posizioni libere. Questo è il concetto. In ultimo, sarei felice di essere contraddetto e magari corretto ancora questo aiuterà me ed altri a crescere

P.S. Non ultimo, il discorso VPN ottimizzato oppure no, frammentato oppure no etc… potrebbe essere un discorso voluto e non accidentale.
Un mio professore delle superiori mi spiegò che tanti anni fà c’erano persone che producevano molto bene le valvole ed altre che si arrangiavano. Dopo qualche anno le valvole furono sostituite dai transistor. Chi aveva un mente aperta e cioè chi sapeva “arrangiarsi” imparò presto a produrre transistor, i guri delle valvole che pretendevano di saper e saper fare rimasero disoccupati. Ultimamente il concetto come per magia mi è stato rispolverato ad un corso. Il professore ci disse che i guru sono destinati a rimanere disoccupati dall’alto dei loro piedistalli al cambio di un epoca, e solo chi avanza con una cartuccia in più e con tanta umiltà riesce a spararla nel momento migliore.