In questo documento vengono descritti i concetti fondamentali di TCP, l'analisi approfondita dei pacchetti di Wireshark e la risoluzione pratica dei problemi per ottimizzare le prestazioni end-to-end.
Cisco raccomanda la conoscenza dei seguenti argomenti:
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
Nota: Qualsiasi domanda sulla configurazione e l'interoperabilità di software o hardware di terze parti non rientra nel supporto Cisco. L'uso di strumenti di terze parti è il modo migliore per dimostrare la configurazione e il funzionamento dell'azienda con le apparecchiature Cisco.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Il protocollo TCP (Transmission Control Protocol) è un protocollo fondamentale del livello trasporto che funziona sul livello 4 del modello OSI e fornisce la consegna affidabile, ordinata e controllata dagli errori di un flusso di byte tra le applicazioni che comunicano su una rete IP.
Il diagramma rappresenta lo stack TCP/IP dove un segmento TCP (layer 4) è incapsulato in un pacchetto IP (layer 3) e quindi all'interno di un frame Ethernet (layer 2) definito da IEEE 802.3. Questo approccio su più livelli assicura una comunicazione modulare, in cui ogni layer aggiunge le proprie informazioni di controllo (intestazioni) per garantire la consegna, il routing e l'integrità dei dati.

L'intestazione Ethernet è in genere di 14 byte, composta da:
Inoltre, i frame Ethernet includono un trailer FCS (Frame Check Sequence) da 4 byte per il rilevamento degli errori sul layer 2. IEEE 802.3 definisce il framing, le dimensioni minime e massime dei frame e i vincoli di distribuzione fisica che influiscono direttamente sui protocolli di livello superiore come TCP.
L'intestazione IPv4 ha una dimensione minima di 20 byte, estendibile fino a 60 byte con opzioni. I campi chiave includono:
Il layer IP è responsabile dell'indirizzamento logico e del routing attraverso le reti, ma non garantisce l'affidabilità.
L'intestazione TCP va da 20 a 60 byte, a seconda delle opzioni. I campi chiave includono:
Il protocollo TCP aggiunge alle comunicazioni IP una modalità affidabile di consegna, una corretta sequenza e un controllo del flusso.
Le opzioni TCP estendono il protocollo base. Le più comuni includono:
Entrambi i flag SYN e FIN utilizzano un numero di sequenza, anche quando non è presente alcun payload. Il protocollo TCP funziona utilizzando un modello di sequenziamento basato su byte, in cui ogni byte trasmesso e specifici flag di controllo fanno avanzare lo spazio della sequenza. Questo comportamento è essenziale per un'analisi TCP accurata nelle acquisizioni dei pacchetti e per la diagnosi di incoerenze nella sequenza o nella conferma.
ACK = SEQ + Lunghezza payload + (SYN ? 1: 0) + (FIN ? 1: 0)
Dove:
Calcolo ACK:
In questo modo si riflette uno scenario in cui i dati vengono inviati durante l'handshake TCP. Sia il payload che il flag SYN utilizzano lo spazio della sequenza.
Calcolo ACK:
Ciò indica che il protocollo TCP può includere dati durante il ripristino della connessione e sia il payload che il flag FIN incrementano il numero di sequenza.
Il parametro Maximum Segment Size (MSS) definisce il payload massimo che il protocollo TCP può inviare in un segmento.
Se sono presenti opzioni TCP, il valore MSS viene ridotto di conseguenza. Il valore MSS viene negoziato durante l'handshake TCP a tre vie e impedisce la frammentazione sul layer IP.
Il valore Maximum Segment Size (MSS) viene scambiato durante l'handshake a tre vie TCP utilizzando l'opzione MSS nei pacchetti SYN:
Entrambe le parti affermano:
Si tratta del payload TCP più grande accettato.
Il valore MSS non è negoziato come un unico valore concordato.
Invece:
Pertanto:
In uno stack TCP correttamente funzionante: No.
La finestra Dimensioni definisce la quantità di dati che il ricevitore può accettare senza conferma.
Che cos'è:
Scopo:
Dove ottenerlo:
Variabilità fornitore/sistema operativo:
Condizione zero finestra:
Meccanismi variabili delle finestre
Uso della risoluzione dei problemi:
In questa sezione viene descritta una metodologia pratica per diagnosticare se uno switch Cisco Nexus con NX-OS influisce sull'inoltro del traffico TCP o introduce problemi di prestazioni. L'approccio è presentato attraverso uno scenario ipotetico.
Quando si osserva una latenza TCP o un peggioramento delle prestazioni, inizialmente si ha il sospetto che sia stata causata dalla rete. Tuttavia, questo presupposto deve essere convalidato tramite l'analisi basata sui dati. Il metodo autorevole per la risoluzione dei problemi TCP è l'acquisizione dei pacchetti, che viene eseguita in modo ottimale:
Ciò assicura la visibilità nell'handshake a tre vie TCP, in cui i parametri critici quali MSS, Window Scale e SACK vengono negoziati e non vengono ripetuti in seguito nella sessione. Se non è possibile acquisire simultaneamente, l'analisi può procedere con una singola acquisizione, ma le conclusioni sono limitate.
Definizione scenario
Un utente ha rilevato che il processo di backup per un dataset dell'applicazione di circa 7,5 TB, precedentemente completato in circa 9 ore, richiede ora quasi 21 ore. Sebbene le sessioni TCP tra il client e il server siano ancora stabilite correttamente, l'aumento significativo della durata dei backup suggerisce una potenziale riduzione della velocità di trasmissione o delle prestazioni TCP complessive. Poiché lo switch Nexus è l'unico dispositivo di rete nel percorso e fornisce anche la funzionalità del gateway di layer 3, l'amministratore di rete sospetta che la causa del problema sia lo switch Nexus.

Linux: ping -c 10 -I 10.93.19.8 -s 1472 -M do 10.91.2.35
Windows: ping -n 10 -l 1472 -f 10.91.2.35
Perché 1472 Byte?
Conclusioni possibili
Modalità d'uso per la risoluzione dei problemi
Rilevanza pratica per il TCP
Per risolvere in modo efficace i problemi di prestazioni TCP su uno switch Cisco Nexus 9000, è essenziale determinare le interfacce che ricevono e inoltrano il traffico tra l'origine e la destinazione.
Nelle topologie semplici, questo può essere dedotto direttamente dalle connessioni fisiche. Ad esempio, se il client è connesso a Ethernet1/1 e il server a Ethernet1/2, il percorso del traffico è semplice. Tuttavia, negli ambienti reali con più interfacce attive, canali di porte o configurazioni vPC, questa identificazione non è sempre banale.
In questi casi, si consiglia di utilizzare il modulo ELAM (Embedded Logic Analyzer Module), che fornisce visibilità a livello ASIC (Data-Plane Hardware).
ELAM consente di acquisire un pacchetto mentre viene elaborato dalla pipeline di inoltro e rivela informazioni critiche quali:
Questo metodo è molto più accurato rispetto all'utilizzo degli strumenti del control plane, in quanto riflette l'effettivo percorso di inoltro hardware.
È importante notare che ELAM acquisisce solo un pacchetto alla volta, quindi i criteri di filtro devono essere definiti con precisione per corrispondere al traffico desiderato (ad esempio, IP di origine, IP di destinazione, porta TCP). Se i filtri sono troppo ampi, esiste il rischio di acquisire traffico non correlato, ad esempio ICMP o UDP, anziché il flusso TCP desiderato.
Inoltre, questa procedura deve essere ripetuta per entrambe le direzioni di traffico:
Negli ambienti che utilizzano vPC o ECMP, è possibile bilanciare il carico del traffico su più percorsi. Di conseguenza, il traffico di inoltro e di ritorno può attraversare diversi switch o interfacce. In questi scenari, ELAM deve essere eseguito su ogni switch Nexus rilevante per garantire la completa visibilità.
Identificando con precisione le interfacce in entrata e in uscita, l'ambito della risoluzione dei problemi viene notevolmente ridotto, consentendo una convalida mirata dei contatori di interfaccia, dei criteri QoS, delle impostazioni MTU e dei potenziali punti di congestione lungo l'esatto percorso di inoltro.
In questo esempio il traffico viene filtrato in base all'indirizzo IP 10.93.19.8 di origine, all'indirizzo IP 10.91.2.35 di destinazione e alla porta TCP 445 di destinazione.
Impostazione ELAM
switch# debug platform internal tah elam
switch(TAH-elam)# trigger init
Slot 1: param values: start asic 0, start slice 0, lu-a2d 1, in-select 6, out-select 0
switch(TAH-elam-insel6)# set outer ipv4 src_ip 10.93.19.8
switch(TAH-elam-insel6)# set outer ipv4 dst_ip 10.91.2.35
switch(TAH-elam-insel6)# set outer l4 l4-type 0
switch(TAH-elam-insel6)# set outer l4 dst-port 445
switch(TAH-elam-insel6)# start
Dopo aver generato il traffico, recuperare il risultato:
switch(TAH-elam-insel6)# report
Reverse Traffic Capture (obbligatorio per la completa visibilità)
Per convalidare il percorso di ritorno, ripetere la configurazione scambiando gli indirizzi IP di origine e di destinazione:
switch# debug platform internal tah elam
switch(TAH-elam)# trigger init
Slot 1: param values: start asic 0, start slice 0, lu-a2d 1, in-select 6, out-select 0
switch(TAH-elam-insel6)# set outer ipv4 dst_ip 10.93.19.8
switch(TAH-elam-insel6)# set outer ipv4 src_ip 10.91.2.35
switch(TAH-elam-insel6)# set outer l4 l4-type 0
switch(TAH-elam-insel6)# set outer l4 dst-port 445
switch(TAH-elam-insel6)# start
Note operative
Guida Cisco Nexus 9000 Cloud Scale ASIC ELAM
La convalida a livello di interfaccia garantisce che lo switch Nexus non introduca vincoli o anomalie che influiscano sul traffico TCP. L'obiettivo è verificare che la configurazione, lo stato operativo e i contatori hardware siano coerenti con il comportamento previsto per l'inoltro del piano dati ad alte prestazioni.
Convalida configurazione
switch# show running-config interface ethernet1/1-2 | include access-group
switch#show running-config interface ethernet1/1-2 | include service-policyswitch#show policy-map interface ethernet1/1-2
switch# show policy-map
switch# show class-map
switch# show class-map type network-qos
switch# show policy-map type network-qos
switch#show policy-map system type network-qos
switch# show queuing interface ethernet1/1-2
switch# show policy-map type queuing
switch#show running-config interface ethernet1/1-2
switch#show interface ethernet1/1-2 switchport
switch#show spanning-tree interface ethernet1/1-2
switch# show ip interface ethernet1/1-2
Convalida stato operativo
switch#show interface ethernet1/1-2 | include MTU
switch#show interface ethernet1/1-2 | include speed|duplex
switch#show interface ethernet1/1-2 | include rate|flap
Convalida contatore errori
switch#clear counters interface all
switch#show interface counters errors non-zero | include Port|Eth1/1|Eth1/2
Convalida post-test
switch#show interface counters errors non-zero | include Port|Eth1/1|Eth1/2
Verificare la stabilità del routing e dell'ARP è fondamentale per assicurarsi che lo switch Nexus abbia una raggiungibilità costante sul layer 3 e non introduca problemi di risoluzione intermittenti che potrebbero influire sulle prestazioni del TCP. L'instabilità delle voci di routing o della risoluzione ARP può causare la perdita dei pacchetti, un aumento della latenza o blocchi del traffico.
Criteri di convalida
switch# show ip route 10.93.19.8
switch# show ip route 10.91.2.35
switch# show ip arp detail | include 10.93.19.8
switch# show ip arp detail | include 10.91.2.35
Sugli switch Cisco Nexus 9000, l'inoltro viene eseguito nell'hardware (ASIC) e la CPU non è coinvolta nelle normali operazioni del piano dati. Pertanto, osservare il traffico TCP da host a host nel control-plane è anormale e indica che i pacchetti vengono puntualizzati a causa di eccezioni o configurazioni errate. Una volta che il traffico deve essere elaborato dalla CPU, diventa soggetto al Control Plane Policing e si prevede che possano essere osservate delle cadute se il traffico supera la velocità del Control Plane consentita.
Metodo di convalida
switch# ethanalyzer local interface inband display-filter "ip.addr==10.93.19.8 and ip.addr==10.91.2.35" limit-capture 0
Comportamento previsto
Comportamento imprevisto
La latenza di inoltro dei pacchetti negli switch Nexus 9000 dipende dalle dimensioni dei pacchetti, dalla modalità di inoltro e dalle funzionalità abilitate. Le specifiche Cisco in genere fanno riferimento alla latenza per i pacchetti da 64 byte con inoltro cut-through.
+----------------------+----------------------+-------------------------+-------------------------------+
| Switch Model | ASIC / Architecture | Ports (example config) | Typical Forwarding Latency |
| | | | (64B packet) |
+----------------------+----------------------+-------------------------+-------------------------------+
| Nexus 93180YC-EX | Cloud Scale (EX) | 48x25G + 6x100G | ~1.0 – 1.2 microseconds |
| Nexus 93180YC-FX | Cloud Scale (FX) | 48x25G + 6x100G | ~0.9 – 1.0 microseconds |
| Nexus 93180YC-FX2 | Cloud Scale (FX2) | 48x25G + 6x100G | ~0.8 – 0.9 microseconds |
| Nexus 9364C | Cloud Scale | 64x100G | ~1.0 microsecond |
| Nexus 9336C-FX2 | Cloud Scale (FX2) | 36x100G | ~0.8 microseconds |
| Nexus 93240YC-FX2 | Cloud Scale (FX2) | 48x25G + 12x100G | ~0.8 – 0.9 microseconds |
| Nexus 92300YC | Broadcom Trident II | 48x10/25G + 6x40/100G | ~2 – 3 microseconds |
| Nexus 92160YC-X | Broadcom Tomahawk | 48x25G + 6x100G | ~2 microseconds |
+----------------------+----------------------+-------------------------+-------------------------------+
Altre caratteristiche possono introdurre una latenza incrementale:
Tuttavia:
L'unico scenario realistico in cui la latenza aumenta sensibilmente è la congestione:
Anche in questi casi:
Ciò consente il mirroring del traffico del piano dati nel piano di controllo per l'acquisizione dei pacchetti e l'esportazione in un file .pcapng, permettendo un'analisi dettagliata in Wireshark.
Configurazione
monitor session 1
source interface ethernet1/1 both
source interface ethernet1/2 both
destination interface sup-eth0
no shut
Esecuzione dell'acquisizione
switch# ethanalyzer local interface inband mirror capture-filter "tcp port 445" limit-capture 0 write bootflash:tcp_capture.pcapng
Considerazioni tecniche
| Metodo | Vantaggio | Limitazione |
|---|---|---|
| SPAN |
Accurato, senza incapsulamento |
Richiede una connessione fisica. |
| ERSPAN |
Funzionalità di acquisizione remota |
Sensibile a congestione della rete. |
Per garantire che le acquisizioni da SPAN alla CPU siano affidabili, è necessario verificare che il control-plane non stia eliminando i pacchetti in mirroring a causa della limitazione della velocità.
Comando Validation
switch(config)# show hardware rate-limiter | i Allowed|span
Allowed, Dropped & Total: aggregated bytes since last clear counters
R-L Class Config Allowed Dropped Total
span 50 0 0 0 <<<
span-egress disabled 0 0 0
Metodologia di convalida
Interpretazione
Se si osservano perdite, il metodo di acquisizione deve essere modificato in SPAN o ERSPAN.
I test ICMP forniscono una convalida di base dell'integrità del piano dati prima di eseguire analisi TCP complesse. Poiché il protocollo ICMP è senza stato e più semplice, permette di rilevare rapidamente le perdite di pacchetti, le duplicazioni o le incoerenze nei percorsi.
Comportamento previsto nell'acquisizione SPAN
Ciò conferma la correttezza dell'inoltro e l'assenza di perdita dei pacchetti nel data-plane.
Comportamento anomalo
Se il traffico ICMP viene inoltrato in modo coerente senza perdita di dati, è probabile che anche il traffico TCP venga inoltrato correttamente sul layer 2/3.
Quando il traffico viene acquisito usando SPAN per raggiungere la CPU (o SPAN/ERSPAN), ciascun pacchetto può essere osservato due volte: una volta in entrata e una volta in uscita. Questa duplicazione può essere utilizzata per stimare la latenza di inoltro introdotta dallo switch Nexus calcolando la differenza di tempo tra entrambe le istanze dello stesso pacchetto.
In pratica, questa latenza può essere misurata usando il traffico ICMP acquisito in precedenza, confrontando il delta di tempo tra i pacchetti di richiesta echo duplicati e i pacchetti di risposta echo. Questo fornisce una base semplice ed efficace per le prestazioni di inoltro dello switch. Se è necessaria un'analisi più approfondita, la stessa metodologia può essere applicata al traffico TCP acquisendo il flusso e misurando la differenza di tempo tra i pacchetti TCP duplicati.
Metodologia
Configurazione di Wireshark
View > Time Display Format > Seconds Since Previous Displayed Packet
Right-click on "Time Delta from Previous Displayed Packet" → Apply as Column
ip.addr==10.93.19.8 and ip.addr==10.91.2.35 and tcp
Right-click packet → Follow → TCP Stream
Interpretazione
In questa sezione viene fornita una metodologia dettagliata per analizzare l'acquisizione di un pacchetto TCP in Wireshark, inclusa la configurazione del profilo, attraverso il caso ipotetico descritto in precedenza. Le immagini mostrate sono state prese direttamente da Wireshark. Si ricorda che lo scenario è il seguente:
Un utente ha rilevato che il processo di backup per un dataset dell'applicazione di circa 6,5 TB, precedentemente completato in circa 9 ore, richiede ora quasi 21 ore. L'unico dispositivo di rete accessibile è uno switch Cisco Nexus 9300 collegato al server di origine (10.93.19.8). L'MTU configurata sull'interfaccia dello switch è di 9000 byte (frame jumbo), mentre l'MTU sul server è sconosciuta. È disponibile l'acquisizione di un pacchetto dal server di origine e tutte le operazioni di convalida Nexus precedenti sono già state completate senza alcuna anomalia rilevata.
Osservazioni e vincoli principali
In Wireshark potete creare profili personalizzati personalizzati in base al tipo specifico di analisi che desiderate eseguire.
Descrizione colonna
L'acquisizione dell'handshake TCP a tre vie è obbligatoria perché contiene parametri critici, ad esempio MSS, Window Scale e SACK, che definiscono il comportamento della sessione.
Senza queste informazioni, l'analisi TCP è incompleta e può portare a conclusioni errate sulle prestazioni o sulla causa principale.

Dall'acquisizione del pacchetto:
L'RTT iniziale (iRTT) viene calcolato nel modo seguente:
Questo valore deriva da:
La maggior parte della latenza (~94%) si trova nel percorso di inoltro (client → server → client), mentre il tempo di risposta dall'origine è minimo, il che indica che non vi è alcun ritardo della CPU o dell'applicazione sul client.
La porta 445 corrisponde a Microsoft Server Message Block (SMB), comunemente utilizzato per la condivisione di file, le unità di rete e i servizi di autenticazione di Windows. Questo protocollo è sensibile sia alla latenza che alla velocità di trasmissione, il che lo rende fortemente dipendente dall'efficienza del TCP e dalla stabilità della rete.
La finestra TCP indica la quantità di dati che è possibile inviare prima di attendere la conferma. In questo caso, l'origine è leggermente più restrittiva della destinazione. Questi valori sono relativamente piccoli per gli ambienti moderni e possono limitare il throughput, soprattutto con l'aumento del RTT.
Il throughput teorico massimo può essere stimato utilizzando:
Throughput = Dimensione finestra TCP / RTT
Sostituzione dei valori osservati:
Throughput ≈ 64.240 / 0,000798 ≈ 80,5 MB/s (~644 Mbps)
Questo rappresenta il throughput del limite superiore presupponendo:
Con l'attuale throughput di 644 Mbps, il trasferimento di un file da 6,5 TB richiede circa 23,5 ore, il che è in linea con la degradazione osservata. Per ottenere una finestra di trasferimento di 9 ore, la velocità effettiva deve aumentare a circa 1,68 Gb/s, richiedendo una finestra TCP più grande (~2,7x aumento) o un valore RTT significativamente più basso (~291 µs).
Con le condizioni attuali (finestra 64 KB e RTT ~798 µs), non è possibile raggiungere l'obiettivo delle 9 ore, perché la velocità di trasmissione TCP è limitata dal prodotto del ritardo della larghezza di banda. Senza aumentare le dimensioni della finestra o ridurre la latenza, il protocollo non può utilizzare una larghezza di banda maggiore, rendendo la destinazione irraggiungibile.
| Scenario | Velocità effettiva | Tempo di trasferimento stimato (6,5 TB) | Finestra TCP necessaria | RTT richiesto |
|---|---|---|---|---|
| Stato corrente |
644 Mbps (~80,5 MB/s) |
Circa 23,5 ore |
64 KB |
798 µs |
| Target (9 ore) |
Circa 1683 Mbps (~210 MB/s) |
9 ore |
CIRCA 172 KB |
~291 µs |
Questa operazione ha funzionato in precedenza, indicando che si è verificata una modifica nella rete, nell'applicazione, nell'origine o nella destinazione. È importante notare che, sulla base della sola analisi iniziale, è già possibile trarre una conclusione significativa: con le attuali dimensioni della finestra TCP e le condizioni RTT, non è possibile raggiungere l'obiettivo delle 9 ore.
Le tabelle mostrano un confronto tra le variazioni di velocità di trasmissione quando le dimensioni della finestra RTT e TCP aumentano o diminuiscono.
Impatto RTT sul throughput (dimensioni finestra fisse = 64.240 byte)
| RTT | Throughput (MB/s) | Throughput (Mbps) |
|---|---|---|
| 200 µs (0,0002 s) |
Circa 321 MB/s |
Circa 2.568 Mbps |
| 798 µ (0,000798 s) |
Circa 80,5 MB/s |
Circa 644 Mbps |
| 2 ms (0,002 s) |
Circa 32,1 MB/s |
Circa 257 Mbps |
| 10 ms (0,01 s) |
Circa 6,4 MB/s |
Circa 51 Mbps |
Impatto sulle dimensioni della finestra TCP (RTT fisso = 798 µs)
| Dimensioni finestra TCP | Throughput (MB/s) | Throughput (Mbps) |
|---|---|---|
| 16 KB (16.384 KB) |
Circa 20,5 MB/s |
Circa 164 Mbps |
| 64 KB (64.240 KB) |
Circa 80,5 MB/s |
Circa 644 Mbps |
| 256 KB (262.144 KB) |
Circa 328 MB/s |
Circa 2.624 Mbps |
| 1 MB (1.048.576 MB) |
Circa 1.314 MB/s |
Circa 10,5 Gb/s |
Interpretazione tecnica
Questo dimostra che le dimensioni delle finestre RTT e TCP sono fattori critici per le prestazioni TCP e devono essere analizzate insieme per risolvere i problemi di throughput.
Un'intestazione IP di 20 byte indica che non sono presenti opzioni IP. L'intestazione TCP da 32 byte conferma l'utilizzo delle opzioni TCP, aggiungendo 12 byte oltre l'intestazione base. Queste opzioni in genere includono MSS, Window Scale e SACK Permesso.
La conferma selettiva (SACK) è abilitata su entrambi gli endpoint. Questo non è visibile nell'immagine. SACK consente al destinatario di riconoscere blocchi di dati non contigui, informando il mittente esattamente quali segmenti sono stati ricevuti correttamente.
Ad esempio, se i segmenti 1000-2000 e 3000-4000 vengono ricevuti ma 2000-3000 risulta mancante, il ricevente può indicarlo esplicitamente. Senza lo SACK, il mittente ritrasmetterebbe tutti i dati dopo il gap; con SACK, viene ritrasmessa solo la parte mancante. Ciò migliora in modo significativo le prestazioni negli ambienti con perdita di pacchetti.
Analisi del pacchetto 1 (SYN)
Wireshark normalizza il numero di sequenza a zero per la leggibilità, sebbene in pratica si tratti di un valore casuale di grandi dimensioni. Durante la connessione è prevista l'assenza di payload. Il valore MSS di 1460 byte indica una MTU di 1500 byte (20 byte di intestazione IP + 20 byte di intestazione TCP). Un valore TTL di 128 può essere un host basato su Windows e la visualizzazione di questo valore nell'acquisizione indica che l'acquisizione è stata probabilmente eseguita in corrispondenza o in prossimità della sorgente attraverso il layer 2.
Analisi Packet 2 (SYN-ACK)
Il valore ACK è 1 perché il flag SYN consuma un numero di sequenza, anche quando non è presente alcun payload. ACK = SEQ + 1.
Il valore TTL osservato di 59 indica un valore TTL iniziale di 64, quindi il pacchetto ha attraversato circa 5 hop di routing (64 - 59 = 5). Ogni hop indirizzato decrementa il valore TTL di uno.
Rischio di frammentazione e impatto sulla rete
La presenza di circa cinque hop di routing introduce potenziali rischi di prestazioni, correlati in particolare a mancata corrispondenza delle MTU e alla frammentazione.
Se un collegamento intermedio ha una MTU inferiore alle dimensioni del pacchetto originale, può verificarsi la frammentazione. Ne conseguono diverse conseguenze:
Alla luce di questi fattori, è fondamentale garantire un'MTU coerente sul percorso o implementare il blocco MSS, se necessario.
Quando ACK RTT è maggiore di iRTT, indica che la latenza è aumentata rispetto alla linea di base stabilita durante l'handshake TCP.
Ciò significa che la rete o gli endpoint introducono un ulteriore ritardo durante la sessione, in genere dovuto a:
Se questa condizione persiste durante l'intera sessione TCP, determina:
In Wireshark, è possibile visualizzare la frequenza con cui si verifica la condizione ACK RTT > iRTT utilizzando la funzione Grafici di I/O in: Statistiche → Grafici I/O, applicazione del filtro di visualizzazione (tcp.analysis.ack_rtt > tcp.analysis.initial_rtt), selezione dello stile Impulso, impostazione dell'asse Y su Pacchetti e utilizzo di un intervallo di 50 microsecondi.
Nel grafico, gli impulsi viola rappresentano il numero di pacchetti che soddisfano questa condizione entro ogni intervallo di 50 microsecondi. Come osservato, questa condizione persiste nell'intera acquisizione del pacchetto, indicando che la latenza durante la sessione è notevolmente superiore alla linea di base iniziale. Questo comportamento suggerisce fortemente un peggioramento prolungato delle prestazioni piuttosto che una condizione transitoria, rafforzando la necessità di indagare su potenziali cause come congestione, buffering o ritardi di elaborazione dell'endpoint lungo il percorso end-to-end.

È inoltre importante determinare per quanto tempo l'iRTT viene superato, non solo con quale frequenza. Mentre Wireshark non consente direttamente la sottrazione tra i campi, è possibile ottenere un confronto visivo utilizzando i grafici I/O:
In questa visualizzazione, il grafico viola rappresenta la condizione ACK RTT > iRTT, che è costantemente presente durante l'intera sessione TCP. I dati mostrano un'inflazione di latenza sostenuta, con picchi multipli che raggiungono 11 millisecondi e un picco massimo di oltre 100 millisecondi, che rappresentano da 11x a 100x l'iRTT di base.
Questo comportamento conferma che l'aumento di latenza non è transitorio ma persistente, indicando un problema sistemico che influisce sulla sessione nel tempo. Questa deviazione prolungata suggerisce fortemente fattori come congestione di rete, buffering (bufferbloat) o ritardi di elaborazione dell'endpoint.

In questa sezione viene valutata l'affidabilità del TCP analizzando le ritrasmissioni nel tempo, consentendo di verificare se la perdita di pacchetti contribuisce al peggioramento delle prestazioni.
Il grafico mostra la distribuzione delle ritrasmissioni TCP nel tempo. Sono state osservate 42 ritrasmissioni, che rappresentano solo lo 0,00125% del traffico totale.
Questo livello di ritrasmissioni è trascurabile e indica chiaramente che la perdita di pacchetti non è un fattore che contribuisce a questo scenario.
Configurazione Wireshark (ritrasmissioni TCP)
Statistics → I/O Graphs
tcp.analysis.retransmission and !tcp.analysis.spurious_retransmission
Il grafico mostra il numero di ritrasmissioni spurie TCP in intervalli di 1 sec generate dall'origine 10.93.19.8.
In Wireshark, una ritrasmissione spurie TCP indica che un host ha ritrasmesso un segmento che non era stato effettivamente perso. Il pacchetto originale ha raggiunto il destinatario, ma il mittente ha erroneamente presunto una perdita a causa di una stima imprecisa degli intervalli. Questo comportamento non indica una reale perdita di pacchetti, ma piuttosto una logica di ritrasmissione inefficiente del mittente.
In questa clip:
Ciò conferma che il comportamento di ritrasmissione è interamente controllato dallo stack TCP di origine, non dalla rete.
Il numero totale di ritrasmissioni spurie osservate è 1.112, che rappresenta lo 0,0332% del traffico totale catturato.
Configurazione Wireshark (ritrasmissioni spurie TCP)
Statistics → I/O Graphs
tcp.analysis.spurious_retransmission and ip.src==10.93.19.8
Interpretazione tecnica
Questa analisi conferma ulteriormente che il problema non è correlato all'affidabilità della rete, ma piuttosto al comportamento TCP, alla latenza o alle prestazioni dell'endpoint.

Il grafico mostra la velocità effettiva, calcolata in base al payload TCP (dati effettivi trasferiti), in megabit al secondo. Il throughput osservato oscilla principalmente tra 600 Mbps e 800 Mbps, indicando che mentre la rete sta trasferendo attivamente i dati, non sta raggiungendo un potenziale di larghezza di banda maggiore.
Configurazione Wireshark (Throughput Effettivo)
Statistics → TCP Streams Graphs → Throughout

Interpretazione tecnica
Il grafico evidenzia un comportamento critico nella sessione TCP confrontando la capacità del ricevitore con i dati effettivi in transito (byte in volo).

I dati osservati in volo raggiungono il picco di circa 1 MB, con picchi aggiuntivi di circa 8 KB e 5 KB, ma si concentrano principalmente tra 1 KB e 250 KB.
Ciò indica che, sebbene il destinatario sia in grado di gestire volumi di dati più grandi, il mittente non utilizza in modo coerente la finestra disponibile.
Configurazione di Wireshark (dati in volo vs finestra)
Statistics → TCP Streams Graphs → Throughout
Interpretazione tecnica
L'analisi delle dimensioni del payload TCP sul valore MSS nel tempo aiuta a determinare se il mittente sta utilizzando in modo efficiente ciascun segmento TCP. L'analisi viene eseguita dalla prospettiva dell'indirizzo IP di origine (10.93.19.8).
In Wireshark, i grafici sono configurati come segue:
Dall'analisi:

Questa analisi dimostra che per identificare la root cause dei problemi di prestazioni del protocollo TCP è necessario un approccio olistico end-to-end, anziché presupporre che la rete sia la principale causa di degradazione.
Sullo switch Cisco Nexus 9300 è stata eseguita una convalida estesa, che include contatori di interfaccia, policy QoS, stabilità di routing e ARP, verifica del punt della CPU, acquisizione di pacchetti basata su SPAN e convalida dell'inoltro a livello ASIC con ELAM. Tutti i risultati hanno confermato che lo switch funzionava secondo i parametri previsti:
Inoltre, l'analisi TCP ha rivelato:
Il calo delle prestazioni è causato dal server di origine che opera con MTU 1500 in un ambiente con capacità jumbo, impedendo un uso efficiente della capacità di rete disponibile.
Aumentare l'MTU sul server di origine da 1500 a 9000 byte per allinearla alla destinazione e all'infrastruttura di rete. I vantaggi:
Un aspetto chiave di questa analisi è l'importanza di evitare conclusioni premature durante la risoluzione dei problemi relativi alle prestazioni della rete. Benché inizialmente sia comune attribuire i problemi alla rete, questo caso dimostra chiaramente che la rete stava funzionando correttamente nell'intero percorso del piano dati. Solo eseguendo un'analisi TCP approfondita sia dalla prospettiva di origine che da quella di destinazione, inclusi i parametri di handshake, il comportamento RTT, l'utilizzo delle finestre, le ritrasmissioni e l'efficienza del payload, è stato possibile identificare con precisione il vero collo di bottiglia.
L'analisi dettagliata del comportamento TCP consente di evitare diagnosi errate, di ridurre le modifiche di rete non necessarie e di indirizzare gli sforzi di correzione verso la root cause effettiva.
| Revisione | Data di pubblicazione | Commenti |
|---|---|---|
2.0 |
07-May-2026
|
Titolo aggiornato per richiesta autore. |
1.0 |
06-May-2026
|
Versione iniziale |