Il router ADSL accetta felicemente i pacchetti IPv6 di size 2K

Come ho capito la frammentazione di IPv6, i router non eseguono frammentazione, solo i nodes end-to-end. E quando qualsiasi router lungo il path riceve un pacchetto maggiore del MTU del collegamento al suo prossimo hop, lo scarterà e risponderà all'indirizzo di origine con un pacchetto ICMPv6 "troppo grande".

Di seguito è quello che osservo nella mia configuration:

  • Esperienze con BIRD per BGP?
  • Impostare un server tunnel 6in4
  • Come posso raggiungere il mio server web tramite IPv6 sulla piattaforma AWS?
  • Quale interazione è necessaria per un server Windows e un router Cisco per configurare e distruggere una session Multicast?
  • Quale IPv6 CPE è disponibile?
  • OpenVPN bassa prestazione. Ho problemi MTU? Scorie all'interno
  • Inizialmente dopo che il mio collegamento locale ethernet è in su, visito una pagina HTTP con una richiesta che causa un grande pacchetto (1965 byte) da submit. Il mio router risponde con ICMPv6 dicendo che il pacchetto è troppo grande e il mio MTU è 1492 (quello del collegamento ADSL ATM). La mia macchina quindi divide il pacchetto TCP in due ciascuno più piccolo (1492 e 545 byte) e prova ancora (invece di aggiungere intestazioni di estensione a IPv6 per la frammentazione che è quello che mi aspettavo dovrebbe accadere).

    Fin qui tutto bene. Quello che mi rompe è che da allora in poi il router non riport più le risposte "Packet too big" nonostante alcuni pacchetti in output siano più grandi di 2K (ad es. 2399 byte) di size e tutto sembra essere soddisfacente (cioè nessuna ritrasmissione usando pacchetti più piccoli) .

    Hai idea di cosa sta succedendo qui?

    Sono su Linux 3.14.23 e il mio pomodoro basato sul mio router. Non ho attualmente monitoraggio dei pacchetti sul mio router.

  • Causa di frammentazione pagina sul server "grande" con xfs, 20 dischi e Ceph
  • C'è un modo per impostare un MTU inferiore per il traffico destinato a un determinato indirizzo IP su Cisco ASA?
  • Quanto sono accurati le affermazioni di Diskeeper che la frammentazione provoca crash, aborti boot e altri incidenti?
  • 2 Solutions collect form web for “Il router ADSL accetta felicemente i pacchetti IPv6 di size 2K”

    Avere lo strato tra IPv6 e il livello fisico consentono la frammentazione hop-per-hop dalla norma. E infatti se l'MTU dello strato fisico è inferiore a 1280 byte, tale frammentazione hop-per-hop è anche obbligatoria. Il funzionamento esatto di una tale frammentazione al di sotto del livello IPv6 è al di fuori dello standard IPv6. La formulazione esatta in RFC 2460 è questa:

    Su qualsiasi collegamento che non possa trasmettere un pacchetto da 1280 octet in un pezzo, la frammentazione e il riassembly specifico del collegamento devono essere fornite a un livello inferiore a IPv6.

    La frammentazione che avete in mente è la frammentazione end-to-end in IPv6. E tale tipo di frammentazione può essere eseguita solo dal nodo che ha originato il pacchetto in primo luogo. Nessun router intermedio può eseguire questo tipo di frammentazione su un pacchetto che inoltra.

    Per quanto posso sapere dalla tua domanda, nel tuo caso non si verifica né una forma di frammentazione.

    Se si è in grado di submit un pacchetto 2KB dal client HTTP al router in primo luogo, ciò significherebbe che la tua LAN sia stata configurata per utilizzare jumboframes. Un'altra possibilità è che il client HTTP sia in esecuzione su un host con il supporto per il rilascio della segmentazione TCP. Se questo fosse il caso, il primo pacchetto potrebbe apparire 2KB quando osservato con tcpdump sull'host di invio, ma sul filo potrebbe essere effettivamente un pacchetto con i primi 1500 byte e un altro pacchetto con il resto.

    I 1500 byte sarebbero ancora troppo grandi per l'MTU sul collegamento ADSL. Quale la dimensione effettiva del pacchetto che innesca il messaggio di errore troppo grande è stata visualizzata sulla macchina client controllando il messaggio di errore con uno strumento appropriato come ad esempio Wireshark.

    Cosa succede una volta che lo stack TCP del client riceve l'errore troppo grande dipende da quale stack TCP viene utilizzato. Alcuni ritraggono lo stesso segmento TCP utilizzando la frammentazione IPv6, altri divideranno il segmento TCP in due segmenti TCP più piccoli. Lo standard IPv6 dice:

    Per submit un pacchetto più grande di un MTU di un path, un nodo può utilizzare l'intestazione Fragment di IPv6 per frammentare il pacchetto alla fonte e farlo riassemblare alla destinazione. Tuttavia, l'uso di tale frammentazione è scoraggiato in qualsiasi applicazione che sia in grado di regolare i suoi pacchetti per adattarsi al path misurato MTU (cioè fino a 1280 ottetti).

    Ho letto questo come raccomandando che il segmento TCP venga ritrasmesso come due segmenti più piccoli anziché utilizzare la frammentazione di IPv6. Ci sono più motivi per cui la segmentazione TCP è preferita rispetto alla frammentazione.

    Il router può bloccare i messaggi di errore troppo grandi. Quindi, se si inviano più segmenti TCP ciascuno dei quali sono più grandi di 2KB, potrebbe essere visualizzato un messaggio di errore per il primo. Lo stack TCP dovrebbe essere in grado di far fronte a questo utilizzando l'MTU più piccolo dopo la ritrasmissione dei pacchetti che hanno superato la MTU la prima volta.

    Quello che stai vedendo potrebbe essere semplicemente un limite di tasso che è inferiore a quello che si aspettava. Puoi provare a misurare quei limiti di tasso in realtà utilizzati e quindi intraprendere ulteriori azioni solo se trovate che non sia ragionevole.

    Una volta identificata la dimensione iniziale di frammentazione. Dovrebbe attenersi al collegamento. Il pacchetto iniziale fallirà inizialmente. Altri pacchetti saranno frammentati nello stack IPv6 prima di essere inviati. Distribuire il traffico presso il client e controllare le size dei pacchetti. Dovresti vedere che i pacchetti più grandi (risposte) sono frammentati prima della trasmissione.

    Tu indiczi che tutto funziona dopo la prima frammentazione. Ciò indica che i pacchetti sono frammentati in modo appropriato, altrimenti probabilmente non riusciranno a frammentarsi ulteriormente lungo il path.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.