FONDAMENTI DI IPV4
Come tornano i frammenti a formare un datagramma?
Quando consentito, un router può suddividere un datagramma IPv4 per adattarlo al collegamento successivo. L'host ricevente raggruppa i frammenti correlati, colloca ciascun payload in base al relativo offset e attende tutti i frammenti. Un frammento mancante può causare la scadenza del timeout del datagramma incompleto. Gli schemi seguenti spiegano il meccanismo e non rappresentano una misurazione di un prodotto.
Percorso
Mittente → router → destinazione
Un router può effettuare la frammentazione quando è consentita e la MTU del salto successivo è inferiore.
Campi
ID · offset · MF
Il ricevitore usa indirizzi, protocollo e ID per raggruppare i frammenti; gli offset ne determinano la posizione.
Frammento mancante
Attesa → timeout → scarto
Il solo frammento finale non dimostra che il payload sia completo.
Lista di controllo per l'indagine — espandi
| Controllo | Cosa confermare | Come verificare |
|---|---|---|
| Percorso | Interfacce e MTU | Registrare il percorso effettivo |
| Frammenti | Indirizzi, protocollo, ID, offset e MF | Confrontare le acquisizioni autorizzate |
| Perdite | Copertura completa | Confrontare le acquisizioni lungo il percorso e presso il ricevitore |
Le informazioni inviate da un controllore non arrivano sempre come un unico datagramma IP completo. Talvolta vengono suddivise in frammenti. Come riconosce il ricevitore quali frammenti appartengono allo stesso datagramma e dove va collocato ciascuno? Che cosa accade se uno non arriva mai? Per comprendere la frammentazione IPv4, occorre distinguere la commutazione Ethernet, l'instradamento IP e il riassemblaggio presso il ricevitore.

Distinguere innanzitutto un datagramma IP da una trama Ethernet
Controllori, gateway e server scambiano dati attraverso collegamenti. Un datagramma IP viene trasportato in un incapsulamento esterno adatto al collegamento corrente; su Ethernet viaggia all'interno di una trama Ethernet. Le trame passano tra dispositivi adiacenti, mentre gli indirizzi IP aiutano a identificare la destinazione a livello di rete. Questi livelli hanno intestazioni e limiti di lunghezza diversi.
L'unità massima di trasmissione IP di un'interfaccia, o MTU, limita la dimensione di un pacchetto IP inviato attraverso di essa. Un percorso tra sottoreti può attraversare diverse interfacce IP con limiti differenti. Un pacchetto compatibile con il limite a monte non è necessariamente compatibile con quello del salto successivo. Questa guida si concentra sui campi dei frammenti e sul riassemblaggio, senza suggerire che ogni problema di trasmissione dei pacchetti di grandi dimensioni sia causato dalla frammentazione.
Quando può verificarsi la frammentazione?
Un mittente IPv4 può effettuare la frammentazione prima della trasmissione. Anche un router che inoltra IPv4 può suddividere un pacchetto in frammenti più piccoli se il pacchetto supera la MTU del salto successivo e la frammentazione è consentita. Ogni frammento ha una propria intestazione IP e trasporta parte del payload IP originale.
Se nel datagramma originale è impostato il flag DF, ovvero Don’t Fragment (non frammentare), e il datagramma deve attraversare un salto successivo con una MTU inferiore, il router non può semplicemente suddividerlo. Normalmente scarta il pacchetto e restituisce un errore ICMP appropriato; il riscontro effettivo dipende dai dispositivi e dal filtraggio. L'eventuale adattamento della dimensione dei pacchetti da parte del mittente dipende dal protocollo e dall'implementazione.
Un normale switch industriale di livello 2 inoltra trame Ethernet; non suddivide un datagramma IPv4 di dimensioni eccessive in frammenti IP. Un dispositivo con funzionalità di instradamento può elaborare il traffico IP in modo diverso a seconda delle interfacce, della configurazione e del percorso effettivo. La dicitura switch o gateway sull'involucro non determina il comportamento di ogni porta.
Come riconosce il ricevitore i frammenti correlati?
L'intestazione di un frammento IPv4 include gli indirizzi di origine e destinazione, il protocollo e l'identificativo. Il ricevitore usa insieme questi campi per associare i frammenti al datagramma originale. Il campo identificativo serve principalmente alla frammentazione e al riassemblaggio; non va considerato un numero di serie globale permanentemente univoco per ogni pacchetto.
Si pensi a un documento lungo suddiviso in pagine: un'etichetta del lotto e le informazioni sul destinatario aiutano a raggruppare le pagine. L'analogia ha dei limiti. I dispositivi di rete usano i campi dei pacchetti e le regole di riassemblaggio, anziché comprendere il documento, e un ID non costituisce un'autenticazione né un meccanismo di sicurezza.
Le acquisizioni presso mittente, router e ricevitore possono mostrare prospettive diverse. Non raggruppare i frammenti usando soltanto un ID e non combinare acquisizioni provenienti da direzioni e punti diversi senza il relativo contesto. Stabilire innanzitutto il punto e l'ora di acquisizione, gli indirizzi IP e il protocollo; quindi esaminare i campi dei frammenti.

Che cosa indicano l'offset e il flag MF?
L'offset del frammento identifica la posizione del payload del frammento all'interno del payload IP originale. È espresso in unità di otto byte, non come numero di byte all'interno di una trama Ethernet. Il ricevitore usa gli offset per collocare i frammenti nella posizione corretta, anziché limitarsi a unirli nell'ordine di arrivo. Un frammento successivo può arrivare per primo.
MF significa More Fragments (altri frammenti): un frammento non finale ha normalmente MF impostato a 1, mentre il frammento finale ha MF impostato a 0. Osservare MF = 0 rivela la fine del datagramma; non dimostra che tutti i frammenti precedenti siano arrivati. Il ricevitore deve comunque disporre di una copertura completa dall'inizio alla fine prima di inoltrare il payload riassemblato.
La frammentazione segue anche una regola di allineamento: tranne che per il frammento finale, le lunghezze dei payload dei frammenti devono normalmente essere multipli di otto byte. Gli operatori non devono calcolare manualmente ogni campo binario, ma dovrebbero verificare se lo strumento di acquisizione visualizza il campo offset grezzo oppure una posizione in byte già convertita.
Che cosa accade se un frammento va perso?
Il ricevitore mantiene in genere uno stato temporaneo di riassemblaggio e attende i frammenti mancanti. Se il datagramma è ancora incompleto alla scadenza del timeout di tale stato, viene scartato; normalmente un'applicazione non può usare i frammenti rimanenti come un datagramma IP completo. I limiti dei buffer, la gestione dei timeout e le politiche di sicurezza variano da sistema a sistema, quindi le spiegazioni generali non definiscono i valori di un prodotto specifico.
Un maggior numero di frammenti significa più parti trasmesse indipendentemente per un singolo datagramma. Un frammento mancante può impedire il riassemblaggio dell'intero datagramma. Ciò rende rilevanti l'intero percorso e ogni singolo frammento, ma un problema di trasmissione dei pacchetti di grandi dimensioni, da solo, non dimostra una perdita di frammenti: congestione, filtraggio, carico dei dispositivi e altri problemi di collegamento possono presentare sintomi simili.
L'eventuale ritrasmissione da parte di TCP o di un'applicazione riguarda i livelli superiori e dipende dal protocollo e dall'implementazione. La frammentazione IPv4 di per sé non fornisce un meccanismo generale di ritrasmissione affidabile per singolo frammento. Un'applicazione che usa UDP non deve presumere che IP reintegri automaticamente il payload mancante.

Che cosa occorre registrare durante un'indagine?
In un ambiente di test autorizzato, mappare innanzitutto il mittente, gli switch di livello 2, le interfacce di instradamento, i tunnel e il ricevitore. Registrare le MTU delle interfacce, l'impostazione DF, il protocollo, il punto e l'ora di acquisizione. Per ogni presunto gruppo di frammenti, esaminare gli indirizzi di origine e destinazione, il protocollo, l'identificativo, l'offset e MF, anziché osservare soltanto la lunghezza dei pacchetti.
Se presso il mittente è visibile un datagramma completo e sull'interfaccia di uscita del router sono visibili diversi frammenti, verificare l'inoltro IP e la MTU dell'interfaccia. Se tutti i frammenti escono da tale interfaccia ma solo alcuni raggiungono il ricevitore, indagare su perdite o filtraggio lungo il percorso effettivo. La configurazione del mirroring, l'offload dell'interfaccia di rete e il punto di acquisizione possono influire su ciò che è visibile; una sola schermata non rappresenta l'intera rete.
Considerare anche come i dispositivi di sicurezza gestiscono i frammenti. Alcune regole esaminano le porte del livello di trasporto, ma un frammento non iniziale normalmente non contiene l'intestazione di trasporto completa. Il modo in cui un dispositivo correla lo stato e l'eventuale ammissione dei frammenti dipendono dall'implementazione e dalle regole. Il passaggio del primo frammento non dimostra che siano passati tutti i frammenti. Salvare la configurazione esistente e coordinare le modifiche con i responsabili della sicurezza operativa e informatica.
Se il riassemblaggio fallisce ripetutamente, indagare sulla MTU del percorso, sulla perdita di pacchetti e sul filtraggio prima di limitarsi a prolungare i tempi di attesa del ricevitore. Le applicazioni in tempo reale e quelle sensibili alla completezza dei dati possono avere vincoli diversi. Decidere le modifiche sulla base della progettazione del protocollo, della documentazione delle apparecchiature e di test controllati.
Per il controllo della produzione, ottenere dal responsabile del sito l'approvazione della finestra e dell'ambito del test. Non disabilitare un firewall, aumentare le dimensioni delle trame o abilitare l'instradamento senza comprenderne gli effetti e disporre di un piano di ripristino. Verificare il supporto del protocollo e i confini della rete prima di provare una modifica limitata.
Mantenere distinte le fasi
La frammentazione IPv4 è un meccanismo del livello di rete. Il ricevitore usa indirizzi, protocollo, identificativo, offset e informazioni MF per riassemblare un datagramma. I frammenti possono arrivare fuori ordine, ma il datagramma deve essere completo e soddisfare le regole del ricevitore prima di essere consegnato ai livelli superiori. MTU, instradamento IP, limiti delle trame degli switch e ritrasmissione da parte dell'applicazione appartengono a fasi diverse e richiedono evidenze distinte.
Gli switch industriali e i gateway FCTELE possono far parte delle reti Ethernet industriali. Il supporto dell'instradamento IP, delle impostazioni MTU delle interfacce o del filtraggio da parte di un prodotto e di un firmware specifici deve essere verificato nella relativa documentazione. Queste illustrazioni spiegano meccanismi generali; non rappresentano una misurazione né il circuito interno di un particolare modello FCTELE.
Riferimenti
RFC 791: Internet Protocol · RFC 6864: campo identificativo IPv4 · Informazioni sul prodotto: switch industriale gestito FCTELE.
Tradotto dall'articolo tecnico in cinese: Leggi l'articolo originale in cinese.
Domande frequenti
Uno switch Ethernet frammenta un datagramma IPv4?
Un normale switch di livello 2 inoltra trame; la frammentazione IP può avvenire presso un mittente IPv4 o un router, quando consentito.
MF = 0 significa che tutti i frammenti sono arrivati?
No. Identifica il frammento finale; il ricevitore necessita comunque della copertura completa del payload originale.
Che cosa accade se manca un frammento?
Il ricevitore attende secondo le proprie regole di riassemblaggio; un datagramma incompleto viene scartato se scade il timeout dello stato di riassemblaggio.
Ambito e approfondimenti
Questa è una spiegazione generale di IPv4, non un test o una misurazione di un prodotto.
Come gli switch industriali inoltrano i frame · RFC 791 · RFC 6864


