Inleiding
Dit document beschrijft SCTP-fragmentatie en chunkbundelingsmechanismen in de Cisco MME en hoe fragmentatie en bundeling van invloed zijn op pakketdruppels.
Voorwaarden
Vereisten
Er zijn geen specifieke vereisten van toepassing op dit document.
Gebruikte componenten
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
- QVPC-SI softwareversie 21.28.m18
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Achtergrondinformatie
Stream Control Transmission Protocol (SCTP) is een betrouwbaar transportprotocol dat werkt op een verbindingsloos pakketnetwerk zoals IP. Het kan gegevens fragmenteren om te voldoen aan de ontdekte MTU-padgrootte en meerdere gebruikersberichten bundelen in een enkel SCTP-pakket met behulp van chunkbundeling. Dit document biedt twee methoden om pakketdalingen te verhelpen die optreden als gevolg van beperkingen van pad-MTU.
Een casestudy toont fragmentatie- en bundelmechanismen en een middel om aan te tonen dat pakketdruppels, inclusief pakketdruppels die buiten de Cisco MME voorkomen, eerder dan vanwege de configuratie van de SCTP Max MTU-grootte.
Volgens RFC 4960 (Stream Control Transmission Protocol) 6.9 (Fragmentatie en hermontage):
"Als een eindpunt fragmentatie ondersteunt, MOET het een gebruikersbericht fragmenteren als de grootte van het te verzenden gebruikersbericht ervoor zorgt dat de uitgaande SCTP-pakketgrootte de huidige MTU overschrijdt."
Bovendien kunnen meerdere SCTP-dataschunks worden gebundeld in één uitgaand SCTP-pakket. De totale grootte van het resulterende IP-datagram, inclusief het SCTP-pakket en de IP-headers, MOET kleiner zijn dan of gelijk zijn aan de huidige Path MTU. Op de MME Path MTU is geconfigureerd op de IP-interface die deze pakketten verwerkt.
fragmentatie
Er kunnen meerdere streams in een SCTP-associatie zijn, elk geïdentificeerd door een Stream Identifier (SI). Stream Sequence Number (SSN) identificeert de volgorde voor elk fragment binnen een specifieke SCTP-stroom. Meerdere sessies kunnen dezelfde SCTP-stream gebruiken. Het Transmission Sequence Number (TSN) identificeert de volgorde voor elk fragment binnen de volledige SCTP-associatie.
Wanneer gefragmenteerd, de SCTP Payload gegevens chunk geeft in de B en E velden of het fragment is het begin fragment, een middelste fragment, of het einde fragment:
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 |
============================================================
Gaten in Stream Sequence Numbers kunnen aangeven dat fragmenten binnen de stoom of associatie worden gedropt. Wirshark-filters kunnen hiaten in SCTP-streams helpen identificeren:
sctp.sack_gap_block_start or sctp.sack_gap_block_end
SCTP Chunk Bundling
Meerdere chunks kunnen worden gebundeld in één SCTP-pakket tot de MTU-grootte, behalve voor de INIT-, INIT-ACK- en SHUTDOWN COMPLETE-chunks:
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
De broklengte voor elke SCTP Data Chunk wordt vermeld in elke dataschunk:
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 /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Configuraties die van invloed zijn op grootte
SCTP-Param-Template SCTP MTU-formaten
In de SCTP-Param-Template wordt de SCTP-Max-MTU-Size geconfigureerd met behulp van de optie sctp-max-mtu-size en/of de optie sctp-start-mtu-size, geconfigureerd in bytes. 1500 bytes is de standaard SCTP Max MTU Size en standaard SCTP Start MTU Size:
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
In de MME Service is de SCTP-Param-Template gekoppeld aan de MME Context:
Exec > Global Configuration > Context Configuration > MME Service
[mme]ASR5500-2(config-mme-service)# associate sctp-param-template S1_MME_SCTP
MME Context Ethernet-interfaceconfiguratie
De interface die door de MME-service moet worden gebruikt, wordt samen met de gewenste IP MTU-grootte in bytes geconfigureerd (1500 is standaard):
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
S1AP UE Radio Capability IE-formaat
In de configuratie van de MME-service worden de berichtgroottes van de S1AP UE Radio Capability IE geconfigureerd. De standaardwaarde is 9000 bytes:
[context_name]host_name(config-mme-service)#
s1-mme ue-radio-cap size 9000
casestudy
Hier is een voorbeeld van een gefragmenteerd INITIËLE CONTEXT SETUP REQUEST/UE CAPABILITY INFORMATION-bericht, dat SCTP-fragmenten bevat om te voldoen aan de geconfigureerde SCTP Max MTU-grootte.
In subscriber traces wordt het ICMP-bericht "Fragmentatie vereist" van de transportroute naar de MME geretourneerd na de verzending van het SCTP-gefragmenteerde INTIAL CONTEXT SETUP REQUEST-bericht.

In Frame 5 worden meerdere SCTP-pakketten (2) samengevoegd onder één IP-pakket:

De eerste dataschunk is het laatste segment van dat gefragmenteerde bericht, zoals aangegeven door het 1-teken in het E-Bit-informatie-element.

De tweede dataschunk maakt geen deel uit van een gefragmenteerd bericht, omdat door de B-Bit en E-Bit informatie-elementen zijn gemarkeerd met een nummer 1:

De eerste SCTP-dataschunk heeft een lengte van 1383 bytes. De tweede SCTP-dataschunk is 89 bytes lang, dus elk afzonderlijk SCTP-pakket overschrijdt niet de geconfigureerde SCTP-Max-MTU-grootte van 1500 bytes:

Omdat de totale grootte van het resulterende IP-datagram, inclusief het SCTP-pakket en IP-headers kleiner is dan de geconfigureerde IP MTU-grootte van 2000, werden deze SCTP-brokken gegroepeerd binnen één IP-pakket op het IP-stapelniveau op de MME.
Oplossing
S1AP UE Radio Capability IE-berichtgroottes zijn toegestaan in de configuratie met de standaardwaarde van 9000 bytes. Fragmentatie moet plaatsvinden op de SCTP-laag om deze berichten te dragen op een niveau kleiner dan de geconfigureerde SCTP Max MTU-grootte van 1500.
sctp-max-mtu-grootte zijnde 1500 betekent dat elk SCTP-pakket verzonden niet meer dan 1500 bytes.
De grootte van de IP-interface MTU is 2000, wat betekent dat elk IP-pakket niet meer dan 2000 bytes kan bevatten.
Een IP-pakket kan meerdere SCTP-pakketten bevatten en elk SCTP-pakket kan meerdere brokken bevatten. Zolang de individuele SCTP-pakketgrootte voldoet aan de SCTP MTU-grootte en de totale grootte van alle SCTP-pakketten samen voldoet aan de IP MTU-grootte, gedraagt de node zich zoals verwacht.
Pakketdruppels komen niet voor in de node, als:
- De totale grootte van SCTP-brokken binnen pakkettraceringsframes is kleiner dan de geconfigureerde waarde van SCTP-Max-MTU-Size in de SCTP-Param-Template en
- De totale waarde van de SCTP-PDU + de IP-header is kleiner dan de geconfigureerde MTU-interfacegrootte op de node.
In ons voorbeeld van een casestudy bleek uit onderzoek naar de transportrouter dat de transportrouter een IP MTU-grootte van 1500 had. Aangezien het transportknooppunt daartussen een MTU van 1500 heeft, werden de pakketten door de IP-interface op het transportknooppunt gedropt, waardoor de transportrouter een bericht naar de MME stuurde met de vermelding "Destination Unreach".
Oplossingen om druppels op te lossen
Workaround #1: Verminder de maximale MTU-grootte van SCTP
Verminder de SCTP MTU-grootte door sctp-max-mtu-grootte te configureren om waarden te verlagen totdat u de druppels niet ziet.
Opmerking: Wanneer u de sctp-max-mtu-grootte verlaagt, moet u er ook voor zorgen dat de sctp-start-mtu-grootte is geconfigureerd voor een waarde kleiner dan of gelijk aan de sctp-max-mtu-grootte.
Voorbeeld: Wijzig de sctp-param-template S1_MME_SCTP (sctp-start-mtu-grootte van 1500 tot 1460),
Workaround #2: Verhoog de MTU-grootte van de transportknooppunt tot groter dan 1500
Gerelateerde informatie