Introducción
Este documento describe la fragmentación SCTP y los mecanismos de agrupamiento de fragmentos en Cisco MME y cómo la fragmentación y el agrupamiento afectan las caídas de paquetes.
Prerequisites
Requirements
No hay requisitos específicos para este documento.
Componentes Utilizados
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
- Software QVPC-SI versión 21.28.m18
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Antecedentes
El protocolo de transmisión de control de flujo (SCTP) es un protocolo de transporte fiable que funciona sobre una red de paquetes sin conexión como IP. Puede fragmentar los datos para ajustarse al tamaño de MTU de la ruta detectada y agrupar varios mensajes de usuario en un único paquete SCTP mediante el agrupamiento de fragmentos. Este documento proporciona dos métodos para remediar las caídas de paquetes que ocurren debido a las limitaciones de MTU de trayectoria.
Un caso práctico muestra los mecanismos de fragmentación y agrupamiento y un medio para demostrar que las caídas de paquetes, incluidas las caídas de paquetes que ocurren fuera de Cisco MME, en lugar de debido a la configuración del tamaño máximo de MTU de SCTP.
Según RFC 4960 (protocolo de transmisión de control de flujo) 6.9 (fragmentación y reensamblado):
"Si un terminal admite la fragmentación, DEBE fragmentar un mensaje de usuario si el tamaño del mensaje de usuario que se va a enviar hace que el tamaño del paquete SCTP saliente exceda la MTU actual."
Además, se pueden agrupar varios fragmentos de datos SCTP en un paquete SCTP saliente. El tamaño total del datagrama IP resultante, incluidos el paquete SCTP y los encabezados IP, DEBE ser menor o igual que la MTU de ruta actual. En el MME, la MTU de trayecto se configura en la interfaz IP que está procesando estos paquetes.
Fragmentación
Puede haber varias secuencias en una asociación SCTP, cada una identificada por un identificador de secuencia (SI). El número de secuencia de secuencia (SSN) identifica el orden de cada fragmento dentro de una secuencia SCTP específica. Varias sesiones pueden utilizar la misma secuencia SCTP. El número de secuencia de transmisión (TSN) identifica el orden de cada fragmento dentro de la asociación SCTP completa.
Cuando está fragmentado, el fragmento de datos de carga SCTP indica en los campos B y E si el fragmento es el fragmento inicial, un fragmento medio o el fragmento final:
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 |
============================================================
Las brechas en los números de secuencia de flujo pueden indicar que se están descartando fragmentos dentro del vapor o la asociación. Los filtros Wirshark pueden ayudar a identificar brechas en los flujos SCTP:
sctp.sack_gap_block_start or sctp.sack_gap_block_end
Agrupación de fragmentos SCTP
Se pueden agrupar varios fragmentos en un paquete SCTP hasta el tamaño de MTU, excepto los fragmentos INIT, INIT ACK y 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 longitud del fragmento para cada fragmento de datos SCTP se enumera dentro de cada fragmento de datos:
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 /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Configuraciones que afectan al tamaño
Tamaños SCTP-Param-Template SCTP MTU
En SCTP-Param-Template, SCTP-Max-MTU-Size se configura mediante la opción sctp-max-mtu-size y/o la opción sctp-start-mtu-size, configurada en bytes. 1500 bytes es el tamaño máximo de MTU de SCTP predeterminado y el tamaño de MTU inicial de SCTP predeterminado:
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
En el servicio MME, SCTP-Param-Template se asocia al contexto MME:
Exec > Global Configuration > Context Configuration > MME Service
[mme]ASR5500-2(config-mme-service)# associate sctp-param-template S1_MME_SCTP
Configuración de la Interfaz Ethernet Contextual MME
La interfaz que utilizará el servicio MME se configura junto con el tamaño de MTU de IP deseado en bytes (1500 es el valor predeterminado):
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
Capacidad de radio S1AP UE Tamaño de IE
En la configuración del servicio MME, se configuran los tamaños de mensaje IE de la capacidad de radio UE S1AP. El valor predeterminado es 9000 bytes:
[context_name]host_name(config-mme-service)#
s1-mme ue-radio-cap size 9000
Caso Práctico
Este es un ejemplo de un mensaje fragmentado de INFORMACIÓN DE CAPACIDAD DE SOLICITUD/UTILIZACIÓN DE CONFIGURACIÓN DE CONTEXTO INICIAL, que fragmenta SCTP para cumplir con el tamaño máximo de MTU SCTP configurado.
En los seguimientos de suscriptores, el mensaje ICMP "Fragmentation needed" (Fragmentación necesaria) se devuelve desde el router de transporte hacia el MME después de la transmisión del mensaje SCTP fragmentated INTIAL CONTEXT SETUP REQUEST (Solicitud de configuración inicial del contexto).

En la Trama 5, los paquetes SCTP múltiples (2) se agrupan bajo un paquete IP:

El primer fragmento de datos es el último segmento de ese mensaje fragmentado, como lo indica la marca 1 en el elemento de información del bit E.

El segundo fragmento de datos no es parte de un mensaje fragmentado, ya que los elementos de información de bit B y bit E se marcan con un número 1:

El primer fragmento de datos SCTP tiene 1383 bytes de longitud. El segundo fragmento de datos SCTP tiene una longitud de 89 bytes, por lo que cada paquete SCTP individual no supera el tamaño SCTP-Max-MTU-Size configurado de 1500 bytes:

Dado que el tamaño total del datagrama IP resultante, incluidos el paquete SCTP y los encabezados IP, es menor que el tamaño de MTU IP configurado de 2000, estos fragmentos SCTP agrupados dentro de un paquete IP en el nivel de pila IP en el MME.
Solución
Se permiten los tamaños de mensaje IE de la capacidad de radio UE S1AP en la configuración con el valor predeterminado de 9000 bytes. La fragmentación debe producirse en la capa SCTP para transportar estos mensajes a un nivel inferior al tamaño máximo de MTU SCTP configurado de 1500.
sctp-max-mtu-size siendo 1500 significa que cualquier paquete SCTP transmitido no excede los 1500 bytes.
El tamaño de MTU de la interfaz IP, que es 2000, significa que cualquier paquete IP no puede exceder los 2000 bytes.
Un paquete IP puede tener varios paquetes SCTP y cada paquete SCTP puede tener varios fragmentos. Mientras el tamaño individual del paquete SCTP se adhiera al tamaño de MTU SCTP y el tamaño total de todos los paquetes SCTP combinados se adhiera al tamaño de MTU IP, el nodo se comporta como se esperaba.
No se están produciendo caídas de paquetes dentro del nodo, si:
- El tamaño total de los fragmentos SCTP dentro de las tramas de seguimiento de paquetes es menor que el valor configurado de SCTP-Max-MTU-Size en SCTP-Param-Template y
- El valor total de la PDU SCTP + el encabezado IP es menor que el tamaño de MTU de interfaz configurado en el nodo.
En nuestro ejemplo de caso práctico, la investigación sobre el router de transporte reveló que el router de transporte tenía un tamaño de MTU IP de 1500. Dado que el nodo de transporte intermedio tiene una MTU de 1500, la interfaz IP descartó los paquetes en el nodo de transporte, lo que provocó que el router de transporte enviara un mensaje al MME indicando "Destino inalcanzable".
Soluciones temporales para resolver caídas
Solución #1: reducción del tamaño máximo de MTU de SCTP
Reduzca el tamaño de MTU SCTP configurando sctp-max-mtu-size para reducir los valores hasta que no vea las caídas.
Nota: Al reducir el sctp-max-mtu-size, asegúrese también de que sctp-start-mtu-size esté configurado en un valor menor o igual que sctp-max-mtu-size.
Ejemplo: Modifique el sctp-param-template S1_MME_SCTP (sctp-start-mtu-size de 1500 a 1460),
Solución alternativa #2: Aumente el tamaño de MTU del nodo de transporte a más de 1500
Información Relacionada