Introduzione
Questo documento descrive la frammentazione SCTP e i meccanismi di bundle dei blocchi in Cisco ME e come la frammentazione e il bundling influiscono sulle perdite di pacchetti.
Prerequisiti
Requisiti
Nessun requisito specifico previsto per questo documento.
Componenti usati
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
- Software QVPC-SI versione 21.28.m18
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.
Premesse
SCTP (Stream Control Transmission Protocol) è un protocollo di trasporto affidabile che funziona su una rete di pacchetti senza connessione, ad esempio IP. Può frammentare i dati per conformarsi alle dimensioni MTU del percorso individuato e aggregare più messaggi utente in un singolo pacchetto SCTP utilizzando il chunk bundling. Questo documento offre due metodi per risolvere i problemi di perdita di pacchetti causati da limitazioni dell'MTU del percorso.
Un caso di studio mostra i meccanismi di frammentazione e bundle e un mezzo per dimostrare che i pacchetti vengono scartati, incluse le perdite che si verificano all'esterno di Cisco ME, piuttosto che a causa della configurazione delle dimensioni MTU massime SCTP.
In base alla RFC 4960 (Stream Control Transmission Protocol) 6.9 (Frammentazione e riassemblaggio):
"Se un endpoint supporta la frammentazione, DEVE frammentare un messaggio utente se le dimensioni del messaggio utente da inviare fanno sì che le dimensioni del pacchetto SCTP in uscita superino l'MTU corrente."
Inoltre, è possibile includere più blocchi di dati SCTP in un unico pacchetto SCTP in uscita. Le dimensioni totali del datagramma IP risultante, inclusi il pacchetto SCTP e le intestazioni IP, DEVONO essere inferiori o uguali all'MTU del percorso corrente. Sull'MME, l'MTU del percorso è configurata sull'interfaccia IP che elabora questi pacchetti.
Frammentazione
In un'associazione SCTP possono essere presenti più flussi, ognuno identificato da un identificatore di flusso (SI, Stream Identifier). Il numero di sequenza del flusso (SSN) identifica l'ordine di ciascun frammento all'interno di un flusso SCTP specifico. Più sessioni possono utilizzare lo stesso flusso SCTP. Il numero di sequenza della trasmissione (TSN) identifica l'ordine di ciascun frammento all'interno dell'intera associazione SCTP.
Quando è frammentato, il blocco di dati del payload SCTP indica nei campi B ed E se il frammento è quello iniziale, quello intermedio o quello finale:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0 | Reserved|U|B|E| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TSN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream Identifier S | Stream Sequence Number n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Protocol Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ User Data (seq n of Stream S) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
B E Description
============================================================
| 1 0 | First piece of a fragmented user message |
+----------------------------------------------------------+
| 0 0 | Middle piece of a fragmented user message |
+----------------------------------------------------------+
| 0 1 | Last piece of a fragmented user message |
+----------------------------------------------------------+
| 1 1 | Unfragmented message |
============================================================
| Table 1: Fragment Description Flags |
============================================================
Eventuali lacune nei numeri di sequenza del flusso possono indicare che i frammenti all'interno del flusso o dell'associazione vengono eliminati. I filtri Wirshark possono aiutare a identificare le lacune nei flussi SCTP:
sctp.sack_gap_block_start or sctp.sack_gap_block_end
Bundling blocchi SCTP
È possibile includere più blocchi in un pacchetto SCTP fino alle dimensioni MTU, ad eccezione dei blocchi INIT, INIT ACK e SHUTDOWN COMPLETE:
An SCTP packet is composed of a common header and chunks. A chunk
contains either control information or user data.
The SCTP packet format is shown below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Common Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Chunk #1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Chunk #n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
La lunghezza del blocco per ogni blocco di dati SCTP è elencata in ogni blocco di dati:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Chunk Type | Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Chunk Value /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Configurazioni che influiscono sul dimensionamento
Dimensioni MTU SCTP-Param-Template
Nel modello SCTP-Param, la dimensione dell'MTU massima SCTP è configurata usando l'opzione sctp-max-mtu-size e/o l'opzione sctp-start-mtu-size , configurata in byte. La dimensione dell'MTU massima SCTP predefinita è di 1500 byte e la dimensione dell'MTU iniziale SCTP predefinita è:
Exec > Global Configuration > SCTP Parameter Template Configuration
[Local]ASR5500-2# sctp-param-template template_name
[Local]ASR5500-2(sctp-param-template)# sctp-max-mtu-size 1500
[Local]ASR5500-2(sctp-param-template)# sctp-start-mtu-size 1500
Nel servizio MME il modello SCTP-Param-Template è associato al contesto MME:
Exec > Global Configuration > Context Configuration > MME Service
[mme]ASR5500-2(config-mme-service)# associate sctp-param-template S1_MME_SCTP
Configurazione interfaccia Ethernet contesto MME
L'interfaccia che il servizio MME deve utilizzare è configurata insieme alle dimensioni MTU IP desiderate in byte (1500 è il valore predefinito):
Exec > Global Configuration > MME Context Configuration
[mme]ASR5500-2(config-ctx)# interface int1/10_s1mme
[mme]ASR5500-2(config-if-eth)# ip address
[mme]ASR5500-2(config-if-eth)#
ip mtu 2000
[mme]ASR5500-2(config-if-eth)# exit
Capacità radio S1AP UE Dimensione IE
Nella configurazione del servizio MME, sono configurate le dimensioni dei messaggi IE della funzionalità radio S1AP UE. Il valore predefinito è 9000 byte:
[context_name]host_name(config-mme-service)#
s1-mme ue-radio-cap size 9000
Case study
Di seguito è riportato un esempio di messaggio contenente le INFORMAZIONI relative alla richiesta/capacità di impostazione del contesto iniziale frammentato, che il protocollo SCTP frammenta per rispettare le dimensioni massime della MTU dello SCTP configurate.
Nelle tracce del sottoscrittore, il messaggio ICMP "Frammentazione richiesta" viene restituito dal router di trasporto verso l'MME dopo la trasmissione del messaggio SCTP fragmented INIZIAL CONTEXT SETUP REQUEST.

Nel frame 5, più pacchetti SCTP (2) vengono raggruppati sotto un unico pacchetto IP:

Il primo blocco di dati è l'ultimo segmento del messaggio frammentato, come indicato dal segno 1 nell'elemento di informazione E-Bit.

Il secondo blocco di dati non fa parte di un messaggio frammentato, in quanto gli elementi di informazione B-Bit e E-Bit sono contrassegnati con un numero 1:

Il primo blocco di dati SCTP ha una lunghezza di 1383 byte. Il secondo blocco di dati SCTP è lungo 89 byte, quindi ciascun pacchetto SCTP non supera il valore configurato per SCTP-Max-MTU-Size di 1500 byte:

Poiché le dimensioni totali del datagramma IP risultante, inclusi il pacchetto SCTP e le intestazioni IP, sono inferiori alle dimensioni configurate dell'MTU IP di 2000, questi blocchi SCTP vengono raggruppati in un pacchetto IP a livello di stack IP sull'MME.
Soluzione
Le dimensioni dei messaggi IE di capacità radio UE S1AP sono consentite nella configurazione al valore predefinito di 9000 byte. La frammentazione deve avvenire sul livello SCTP per trasportare questi messaggi a un livello inferiore alle dimensioni massime della MTU dello SCTP configurato di 1500.
se sctp-max-mtu-size è 1500, qualsiasi pacchetto SCTP trasmesso non supera i 1500 byte.
Se la MTU dell'interfaccia IP è pari a 2000, il pacchetto IP non può superare i 2000 byte.
Un pacchetto IP può avere più pacchetti SCTP e ogni pacchetto SCTP può avere più blocchi. Finché le dimensioni del singolo pacchetto SCTP sono conformi alle dimensioni MTU SCTP e alle dimensioni totali di tutti i pacchetti SCTP combinati, il nodo si comporta come previsto.
Non si verificano perdite di pacchetti all'interno del nodo se:
- Le dimensioni totali dei blocchi SCTP nei frame di traccia del pacchetto sono inferiori al valore configurato di SCTP-Max-MTU-Size nel modello SCTP-Param e
- Il valore totale di SCTP PDU + intestazione IP è inferiore alle dimensioni MTU dell'interfaccia configurate sul nodo.
Nell'esempio del nostro caso di studio, l'indagine sul router di trasporto ha rivelato che il router di trasporto aveva una MTU IP di 1500. Poiché il nodo di trasporto nel mezzo ha una MTU di 1500, i pacchetti sono stati scartati dall'interfaccia IP sul nodo di trasporto, chiedendo al router di trasporto di inviare un messaggio all'MME indicando "Destination Unreachable" (Destinazione irraggiungibile).
Soluzioni per risolvere le perdite
Soluzione 1. Ridurre le dimensioni massime dell'MTU SCTP
Ridurre le dimensioni della MTU SCTP configurando sctp-max-mtu-size su valori più bassi finché non si notano le riduzioni.
Nota: quando si diminuisce il valore sctp-max-mtu-size, accertarsi anche che sctp-start-mtu-size sia configurato su un valore inferiore o uguale a sctp-max-mtu-size.
Esempio: Modificare il modello sctp-param-template S1_ME_SCTP (sctp-start-mtu-size da 1500 a 1460),
Soluzione 2. Aumentare le dimensioni dell'MTU del nodo di trasporto a oltre 1500
Informazioni correlate