Einleitung
In diesem Dokument werden die SCTP-Fragmentierung und die Blockbündelungsmechanismen in der Cisco MME sowie die Auswirkungen von Fragmentierung und Bündelung auf Paketverluste beschrieben.
Voraussetzungen
Anforderungen
Es gibt keine spezifischen Anforderungen für dieses Dokument.
Verwendete Komponenten
Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:
- QVPC-SI Software-Version 21.28.m18
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
Hintergrundinformationen
Stream Control Transmission Protocol (SCTP) ist ein zuverlässiges Transportprotokoll, das auf einem verbindungslosen Paketnetzwerk wie IP ausgeführt wird. Es kann Daten fragmentieren, um die erkannte MTU-Größe des Pfads zu erfüllen, und mehrere Benutzernachrichten mithilfe von Chunk-Bündelung in einem einzelnen SCTP-Paket bündeln. In diesem Dokument werden zwei Methoden zur Behebung von Paketverlusten beschrieben, die aufgrund von MTU-Beschränkungen auf dem Pfad auftreten.
Eine Fallstudie zeigt Fragmentierungs- und Bündelungsmechanismen sowie eine Möglichkeit, zu zeigen, dass Paketverluste (einschließlich Paketverluste), die außerhalb der Cisco MME auftreten, nicht aufgrund der Konfiguration der maximalen SCTP-MTU-Größe auftreten.
Gemäß RFC 4960 (Stream Control Transmission Protocol) 6.9 (Fragmentation and Reassembly):
"Wenn ein Endpunkt die Fragmentierung unterstützt, MUSS eine Benutzernachricht fragmentiert werden, wenn die Größe der zu sendenden Benutzernachricht dazu führt, dass die Größe des ausgehenden SCTP-Pakets die aktuelle MTU überschreitet."
Darüber hinaus können mehrere SCTP-Datenblöcke zu einem ausgehenden SCTP-Paket gebündelt werden. Die Gesamtgröße des resultierenden IP-Datagramms, einschließlich des SCTP-Pakets und der IP-Header, MUSS kleiner oder gleich der aktuellen Pfad-MTU sein. Auf der MME wird die Pfad-MTU auf der IP-Schnittstelle konfiguriert, die diese Pakete verarbeitet.
Fragmentierung
Eine SCTP-Zuordnung kann mehrere Streams enthalten, die jeweils durch einen Stream Identifier (SI) identifiziert werden. Die Stream Sequence Number (SSN) gibt die Reihenfolge für jedes Fragment innerhalb eines bestimmten SCTP-Streams an. Mehrere Sitzungen können denselben SCTP-Stream verwenden. Die Übertragungssequenznummer (TSN) gibt die Reihenfolge für jedes Fragment innerhalb der gesamten SCTP-Zuordnung an.
Bei der Fragmentierung gibt der SCTP Payload-Datenblock in den Feldern B und E an, ob es sich bei dem Fragment um das Anfangsfragment, ein mittleres Fragment oder das Endfragment handelt:
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 |
============================================================
Lücken in den Stream-Sequenznummern können darauf hinweisen, dass Fragmente innerhalb des Steams oder der Zuordnung verworfen werden. Wireless-Filter können bei der Identifizierung von Lücken in SCTP-Streams helfen:
sctp.sack_gap_block_start or sctp.sack_gap_block_end
SCTP-Chunk-Pakete
Mehrere Chunks können bis zur MTU-Größe in einem SCTP-Paket gebündelt werden, mit Ausnahme der INIT-, INIT ACK- und 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Die Blocklänge für jeden SCTP-Datenblock wird in jedem Datenblock aufgelistet:
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 /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Konfigurationen mit Auswirkungen auf die Bedarfsbestimmung
SCTP-Param-Vorlage - SCTP-MTU-Größen
In der SCTP-Param-Vorlage wird die SCTP-Max-MTU-Size mithilfe der Option sctp-max-mtu-size und/oder der Option sctp-start-mtu-size konfiguriert, die in Byte konfiguriert ist. 1500 Byte sind die standardmäßige SCTP-Max-MTU-Größe und die standardmäßige SCTP-Start-MTU-Größe:
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
Im MME-Dienst ist die SCTP-Param-Vorlage dem MME-Kontext zugeordnet:
Exec > Global Configuration > Context Configuration > MME Service
[mme]ASR5500-2(config-mme-service)# associate sctp-param-template S1_MME_SCTP
MME-Kontext-Ethernet-Schnittstellenkonfiguration
Die vom MME-Dienst zu verwendende Schnittstelle wird zusammen mit der gewünschten IP-MTU-Größe in Byte konfiguriert (der Standardwert ist 1500):
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-Funkfunktion - IE-Größe
In der MME Service-Konfiguration werden die Nachrichtengrößen für S1AP UE Radio Capability IE konfiguriert. Der Standardwert ist 9000 Byte:
[context_name]host_name(config-mme-service)#
s1-mme ue-radio-cap size 9000
Anwenderbericht
Das folgende Beispiel zeigt eine fragmentierte Nachricht mit INITIAL CONTEXT SETUP REQUEST/UE CAPABILITY INFORMATION, die SCTP fragmentiert, um die konfigurierte maximale MTU-Größe für SCTP zu erfüllen.
Bei Subscriber-Traces wird die ICMP-Meldung "Fragmentation needed" nach der Übertragung der fragmentierten SCTP INTIAL CONTEXT SETUP REQUEST-Meldung vom Transportrouter an die MME zurückgegeben.

In Frame 5 werden mehrere SCTP-Pakete (2) unter einem IP-Paket zusammengefasst:

Der erste Datenblock ist das letzte Segment dieser fragmentierten Nachricht, wie durch die Markierung 1 im E-Bit-Informationselement angegeben.

Der zweite Datenblock ist nicht Teil einer fragmentierten Nachricht, da die B-Bit- und E-Bit-Informationselemente mit einer Zahl 1 gekennzeichnet sind:

Der erste SCTP-Datenblock hat eine Länge von 1383 Byte. Der zweite SCTP-Datenblock hat eine Länge von 89 Byte, sodass jedes einzelne SCTP-Paket die konfigurierte SCTP-Max-MTU-Größe von 1500 Byte nicht überschreitet:

Da die Gesamtgröße des resultierenden IP-Datagramms, einschließlich des SCTP-Pakets und der IP-Header, kleiner ist als die konfigurierte IP-MTU-Größe von 2000, werden diese SCTP-Chunks in einem IP-Paket auf der Ebene des IP-Stacks auf der MME gruppiert.
Lösung
Die Nachrichtengrößen für den IE der S1AP UE-Funkfunktion sind in der Konfiguration mit dem Standardwert von 9.000 Byte zulässig. Auf der SCTP-Ebene muss eine Fragmentierung erfolgen, damit diese Nachrichten auf einer Ebene übertragen werden, die kleiner ist als die konfigurierte maximale MTU-Größe von 1500.
sctp-max-mtu-size 1500 bedeutet, dass jedes übertragene SCTP-Paket 1500 Byte nicht überschreitet.
Wenn die MTU-Größe der IP-Schnittstelle 2000 beträgt, darf ein IP-Paket 2000 Byte nicht überschreiten.
Ein IP-Paket kann mehrere SCTP-Pakete enthalten, und jedes SCTP-Paket kann mehrere Blöcke enthalten. Solange die individuelle SCTP-Paketgröße der SCTP-MTU-Größe entspricht und die Gesamtgröße aller kombinierten SCTP-Pakete der IP-MTU-Größe entspricht, verhält sich der Knoten wie erwartet.
Paketverluste treten im Knoten nicht auf, wenn:
- Die Gesamtgröße der SCTP-Chunks innerhalb der Paketverfolgungs-Frames ist kleiner als der konfigurierte Wert von SCTP-Max-MTU-Size in der SCTP-Param-Vorlage und
- Der Gesamtwert der SCTP-PDU + des IP-Headers ist kleiner als die konfigurierte MTU-Schnittstellengröße für den Knoten.
In unserem Fallstudienbeispiel ergab die Untersuchung des Transportrouters, dass der Transportrouter eine IP-MTU-Größe von 1500 hat. Da der Transportknoten dazwischen eine MTU von 1500 hat, wurden die Pakete von der IP-Schnittstelle auf dem Transportknoten verworfen, und der Transportrouter wurde aufgefordert, eine Nachricht an die MME zu senden, die "Ziel nicht erreichbar" angibt.
Workarounds zur Vermeidung von Verlusten
Problemumgehung #1: Reduzieren der maximalen SCTP-MTU-Größe
Reduzieren Sie die SCTP-MTU-Größe, indem Sie sctp-max-mtu-size auf niedrigere Werte konfigurieren, bis Sie die Drops nicht sehen.
Anmerkung: Wenn Sie die sctp-max-mtu-size verringern, stellen Sie auch sicher, dass sctp-start-mtu-size auf einen Wert kleiner oder gleich der sctp-max-mtu-size konfiguriert ist.
Beispiel: Ändern Sie die sctp-param-template S1_MME_SCTP (sctp-start-mtu-size von 1500 bis 1460),
Problemumgehung #2: Erhöhung der MTU-Größe des Transportknotens auf über 1.500
Zugehörige Informationen