Introdução
Este documento descreve a fragmentação de SCTP e os mecanismos de agrupamento de partes no Cisco MME e como a fragmentação e o agrupamento afetam as quedas de pacotes.
Pré-requisitos
Requisitos
Não existem requisitos específicos para este documento.
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Software QVPC-SI versão 21.28.m18
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
O SCTP (Stream Control Transmission Protocol) é um protocolo de transporte confiável que opera sobre uma rede de pacotes sem conexão, como o IP. Ele pode fragmentar os dados de acordo com o tamanho de MTU do caminho descoberto e agrupar várias mensagens de usuário em um único pacote SCTP usando o agrupamento de partes. Este documento fornece dois métodos para corrigir quedas de pacotes que ocorrem devido a limitações de MTU de caminho.
Um estudo de caso exibe mecanismos de fragmentação e empacotamento e um meio de demonstrar que os descartes de pacotes, incluindo os descartes de pacotes que ocorrem fora do Cisco MME, em vez de devido à configuração do tamanho máximo de MTU do SCTP.
De acordo com o RFC 4960 (Stream Control Transmission Protocol) 6.9 (Fragmentação e remontagem):
"Se um ponto final suportar a fragmentação, ELE DEVERÁ fragmentar uma mensagem de usuário se o tamanho da mensagem de usuário a ser enviada fizer com que o tamanho do pacote SCTP de saída exceda o MTU atual."
Além disso, vários blocos de dados SCTP podem ser agrupados em um pacote SCTP de saída. O tamanho total do datagrama IP resultante, incluindo o pacote SCTP e os cabeçalhos IP, DEVE ser menor ou igual ao MTU de Caminho atual. No MME, a MTU de Caminho é configurada na interface IP que está processando esses pacotes.
Fragmentação
Pode haver vários fluxos em uma associação SCTP, cada um identificado por um identificador de fluxo (SI). O número de sequência de fluxo (SSN) identifica a ordem de cada fragmento dentro de um fluxo SCTP específico. Várias sessões podem usar o mesmo fluxo SCTP. O TSN (Transmission Sequence Number, número de sequência de transmissão) identifica a ordem de cada fragmento dentro de toda a associação SCTP.
Quando fragmentado, o bloco de dados de payload do SCTP indica nos campos B e E se o fragmento é o fragmento inicial, um fragmento do meio ou o 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 |
============================================================
Lacunas nos Números de Sequência de Fluxo podem indicar que fragmentos dentro do fluxo ou da associação estão sendo descartados. Os filtros do Wireshark podem ajudar a identificar falhas nos fluxos SCTP:
sctp.sack_gap_block_start or sctp.sack_gap_block_end
Pacote de partes SCTP
Vários blocos podem ser agrupados em um pacote SCTP até o tamanho do MTU, exceto os blocos 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
O comprimento da parte de cada parte de dados do SCTP é listado em cada parte de dados:
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 /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Configurações que afetam o dimensionamento
Tamanhos de MTU SCTP de modelo de parâmetro SCTP
No SCTP-Param-Template, o SCTP-Max-MTU-Size é configurado com o uso da opção sctp-max-mtu-size e/ou da opção sctp-start-mtu-size , configurada em bytes. 1500 bytes é o Tamanho Máximo de MTU de SCTP padrão e o Tamanho Inicial de MTU de SCTP padrão:
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
No Serviço MME, o SCTP-Param-Template é associado ao Contexto MME:
Exec > Global Configuration > Context Configuration > MME Service
[mme]ASR5500-2(config-mme-service)# associate sctp-param-template S1_MME_SCTP
Configuração de Interface Ethernet de Contexto MME
A interface a ser usada pelo Serviço MME é configurada junto com o tamanho de MTU IP desejado em bytes (1500 é o padrão):
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
Tamanho IE do recurso de rádio S1AP UE
Na configuração do serviço MME, os tamanhos de mensagem IE do recurso de rádio S1AP UE são configurados. O valor padrão é 9000 bytes:
[context_name]host_name(config-mme-service)#
s1-mme ue-radio-cap size 9000
Casos Práticos
Este é um exemplo de uma mensagem fragmentada INITIAL CONTEXT SETUP REQUEST/UE CAPABILITY INFORMATION, que o SCTP fragmenta para atender ao Tamanho máximo de MTU do SCTP configurado.
No rastreamento de assinante, a mensagem ICMP "Fragmentation needed" (Fragmentação necessária) é retornada do roteador de transporte para o MME após a transmissão da mensagem INTIAL CONTEXT SETUP REQUEST fragmentada por SCTP.

No Quadro 5, vários pacotes SCTP (2) são agrupados em um pacote IP:

A primeira parte de dados é o Último Segmento dessa mensagem fragmentada, como indicado pela marca 1 no elemento de informação E-Bit.

A segunda parte de dados não faz parte de uma mensagem fragmentada, pois os elementos de informação do bit B e do bit E são marcados com um número 1:

O primeiro bloco de dados SCTP tem 1383 bytes de comprimento. O segundo fragmento de dados do SCTP tem 89 bytes de comprimento, portanto, cada pacote individual do SCTP não excede o SCTP-Max-MTU-Size configurado de 1500 bytes:

Como o tamanho total do datagrama IP resultante, incluindo o pacote SCTP e os cabeçalhos IP, é menor que o tamanho de MTU IP configurado de 2000, esses fragmentos SCTP agrupados em um pacote IP no nível da pilha IP no MME.
Solução
Os tamanhos de mensagem IE do recurso de rádio S1AP UE são permitidos na configuração no valor padrão de 9000 bytes. A fragmentação deve ocorrer na camada SCTP para transportar essas mensagens em um nível menor que o tamanho máximo de MTU de SCTP configurado de 1500.
sctp-max-mtu-size sendo 1500 significa que qualquer pacote SCTP transmitido não excede 1500 bytes.
O tamanho de MTU da interface IP sendo 2000 significa que qualquer pacote IP não pode exceder 2000 bytes.
Um pacote IP pode ter vários pacotes SCTP e cada pacote SCTP pode ter vários blocos. Desde que o tamanho do pacote SCTP individual obedeça ao tamanho do MTU do SCTP e ao tamanho total de todos os pacotes SCTP combinados obedeça ao tamanho do MTU do IP, o nó está se comportando conforme esperado.
Os descartes de pacotes não estão ocorrendo no nó, se:
- O tamanho total dos fragmentos de SCTP nos quadros de rastreamento de pacotes é menor que o valor configurado de SCTP-Max-MTU-Size no SCTP-Param-Template e
- O valor total da PDU SCTP + o cabeçalho IP são menores que o tamanho de MTU da interface configurada no nó.
No nosso exemplo de estudo de caso, a investigação no roteador de transporte revelou que o roteador de transporte tinha um tamanho de MTU IP de 1500. Como o nó de transporte no meio tem um MTU de 1500, os pacotes foram descartados pela interface IP no nó de transporte, solicitando que o roteador de transporte enviasse uma mensagem ao MME indicando "Destino Inalcançável".
Soluções Alternativas para Resolver Quedas
Solução #1: Reduza o tamanho máximo de MTU do SCTP
Reduza o tamanho da MTU de SCTP configurando sctp-max-mtu-size para reduzir os valores até que você não veja as quedas.
Note: Ao reduzir o sctp-max-mtu-size, certifique-se também de que sctp-start-mtu-size esteja configurado para um valor menor ou igual ao sctp-max-mtu-size.
Exemplo: Modifique o sctp-param-template S1_MME_SCTP (sctp-start-mtu-size de 1500 para 1460),
#2 alternativa: Aumente o tamanho de MTU do nó de transporte para mais de 1500
Informações Relacionadas