Introduction
Ce document décrit les mécanismes SCTP de fragmentation et de regroupement de segments dans Cisco MME et comment la fragmentation et le regroupement affectent les abandons de paquets.
Conditions préalables
Exigences
Aucune exigence spécifique n'est associée à ce document.
Composants utilisés
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
- Logiciel QVPC-SI version 21.28.m18
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Informations générales
Le protocole SCTP (Stream Control Transmission Protocol) est un protocole de transport fiable fonctionnant au-dessus d'un réseau de paquets sans connexion tel qu'IP. Il peut fragmenter les données pour se conformer à la taille MTU du chemin découvert et regrouper plusieurs messages utilisateur dans un seul paquet SCTP en utilisant le regroupement de blocs. Ce document fournit deux méthodes pour remédier aux pertes de paquets qui se produisent en raison des limitations de MTU de chemin.
Une étude de cas présente les mécanismes de fragmentation et de regroupement, ainsi qu'un moyen de démontrer que les abandons de paquets, y compris les abandons de paquets qui se produisent en dehors de Cisco MME, plutôt qu'en raison de la configuration de la taille maximale de MTU SCTP.
Selon RFC 4960 (Stream Control Transmission Protocol) 6.9 (Fragmentation and Reassembly) :
"Si un terminal prend en charge la fragmentation, il DOIT fragmenter un message utilisateur si la taille du message utilisateur à envoyer entraîne le dépassement de la MTU actuelle par la taille du paquet SCTP sortant."
En outre, plusieurs segments de données SCTP peuvent être regroupés en un seul paquet SCTP sortant. La taille totale du datagramme IP résultant, y compris le paquet SCTP et les en-têtes IP, DOIT être inférieure ou égale à la MTU de chemin actuelle. Sur le MME, le MTU de chemin est configuré sur l'interface IP qui traite ces paquets.
Fragmentation
Une association SCTP peut contenir plusieurs flux, chacun étant identifié par un identificateur de flux (SI). Le numéro de séquence de flux (SSN) identifie l'ordre de chaque fragment dans un flux SCTP spécifique. Plusieurs sessions peuvent utiliser le même flux SCTP. Le numéro de séquence de transmission (TSN) identifie l'ordre de chaque fragment dans l'association SCTP complète.
Lorsqu'il est fragmenté, le segment de données SCTP Payload indique dans les champs B et E si le fragment est le fragment de début, un fragment du milieu ou le fragment de fin :
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 |
============================================================
Les lacunes dans les numéros de séquence de flux peuvent indiquer que des fragments au sein du flux ou de l'association sont abandonnés. Les filtres Wirshark peuvent aider à identifier les lacunes dans les flux SCTP :
sctp.sack_gap_block_start or sctp.sack_gap_block_end
Groupement de blocs SCTP
Plusieurs segments peuvent être regroupés dans un seul paquet SCTP jusqu'à la taille MTU, à l'exception des segments INIT, INIT ACK et 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 longueur de chaque segment de données SCTP est indiquée dans chaque segment de données :
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 /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Configurations affectant le dimensionnement
Taille de MTU SCTP-Param-Template SCTP
Dans le modèle SCTP-Param-Template, SCTP-Max-MTU-Size est configuré à l'aide de l'option sctp-max-mtu-size et/ou de l'option sctp-start-mtu-size, configurées en octets. 1500 octets est la taille de MTU maximale SCTP par défaut et la taille de MTU de début SCTP par défaut :
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
Dans le service MME, le modèle SCTP-Param-Template est associé au contexte MME :
Exec > Global Configuration > Context Configuration > MME Service
[mme]ASR5500-2(config-mme-service)# associate sctp-param-template S1_MME_SCTP
Configuration d'interface Ethernet de contexte MME
L'interface à utiliser par le service MME est configurée avec la taille de MTU IP souhaitée en octets (1500 par défaut) :
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
Taille IE de la fonctionnalité radio UE S1AP
Dans la configuration du service MME, les tailles des messages IE de la fonctionnalité radio de l'UE S1AP sont configurées. La valeur par défaut est 9 000 octets :
[context_name]host_name(config-mme-service)#
s1-mme ue-radio-cap size 9000
Étude de cas
Voici un exemple d'un message fragmenté INITIAL CONTEXT SETUP REQUEST/UE CAPABILITY INFORMATION, que SCTP fragmente pour répondre à la taille MTU maximale SCTP configurée.
Dans les suivis d'abonné, le message ICMP « Fragmentation required » est renvoyé du routeur de transport vers le MME après la transmission du message SCTP fragmenté INTIAL CONTEXT SETUP REQUEST.

Dans la trame 5, plusieurs paquets SCTP (2) sont regroupés en un seul paquet IP :

Le premier segment de données est le dernier segment de ce message fragmenté, comme indiqué par la marque 1 dans l'élément d'information E-Bit.

Le deuxième bloc de données ne fait pas partie d'un message fragmenté, car les éléments d'information B-Bit et E-Bit sont marqués d'un numéro 1 :

Le premier segment de données SCTP a une longueur de 1 383 octets. Le deuxième segment de données SCTP a une longueur de 89 octets, de sorte que chaque paquet SCTP individuel ne dépasse pas la taille SCTP-Max-MTU-Size configurée de 1500 octets :

Étant donné que la taille totale du datagramme IP résultant, y compris le paquet SCTP et les en-têtes IP, est inférieure à la taille MTU IP configurée de 2000, ces segments SCTP sont regroupés dans un paquet IP au niveau de la pile IP sur le MME.
Solution
Les tailles de message IE de la fonctionnalité radio UE de S1AP sont autorisées dans la configuration avec la valeur par défaut de 9 000 octets. La fragmentation doit se produire au niveau de la couche SCTP pour transporter ces messages à un niveau inférieur à la taille MTU maximale SCTP configurée de 1 500.
sctp-max-mtu-size étant 1500 signifie que tout paquet SCTP transmis ne dépasse pas 1500 octets.
La taille de MTU de l'interface IP étant 2000 signifie qu'un paquet IP ne peut pas dépasser 2000 octets.
Un paquet IP peut avoir plusieurs paquets SCTP et chaque paquet SCTP peut avoir plusieurs segments. Tant que la taille de paquet SCTP individuelle adhère à la taille de MTU SCTP et que la taille totale de tous les paquets SCTP combinés adhère à la taille de MTU IP, le noeud se comporte comme prévu.
Les pertes de paquets ne se produisent pas dans le noeud, si :
- La taille totale des segments SCTP dans les trames de suivi de paquets est inférieure à la valeur configurée de SCTP-Max-MTU-Size dans SCTP-Param-Template et
- La valeur totale de la PDU SCTP + l'en-tête IP est inférieure à la taille MTU d'interface configurée sur le noeud.
Dans notre exemple d’étude de cas, l’examen du routeur de transport a révélé que le routeur de transport avait une taille de MTU IP de 1 500. Puisque le noeud de transport intermédiaire a une MTU de 1 500, les paquets ont été abandonnés par l’interface IP sur le noeud de transport, ce qui a incité le routeur de transport à envoyer un message au MME indiquant « Destination inaccessible ».
Solutions de contournement pour résoudre les abandons
Solution #1 : réduire la taille maximale de MTU SCTP
Réduisez la taille du MTU SCTP en configurant sctp-max-mtu-size à des valeurs inférieures jusqu'à ce que vous ne voyiez pas les abandons.
Remarque : Lors de la réduction de la taille sctp-max-mtu, assurez-vous également que sctp-start-mtu-size est configuré à une valeur inférieure ou égale à la taille sctp-max-mtu-size.
Exemple : Modifiez le sctp-param-template S1_MME_SCTP (sctp-start-mtu-size de 1500 à 1460),
Solution #2 : Augmentez la taille MTU du noeud de transport à plus de 1 500
Informations connexes