目录

简介

先决条件

要求

使用的组件

背景信息

分段

SCTP区块捆绑

影响规模的配置

SCTP-Param-Template SCTP MTU大小

MME环境以太网接口配置

端口以太网MTU大小

S1APUE无线功能IE大小

案例研究

解决方案

解决丢弃问题的解决方法

解决方#1：减小SCTP最大MTU大小

解决方#2:将传输节点的MTU大小增加到大于1500

相关信息

简介

本文档介绍Cisco MME中的SCTP分段和区块绑定机制，以及分段和绑定如何影响数据包丢弃。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于以下软件和硬件版本：

- QVPC-SI软件版本21.28.m18

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

流控制传输协议(SCTP)是一种运行在无连接数据包网络（例如IP）之上的可靠传输协议。  它可以将数据分段以符合发现的路径MTU大小，并使用区块捆绑将多个用户消息捆绑到单个SCTP数据包中。本文档提供两种方法来补救由于路径MTU限制导致的数据包丢弃。

案例研究显示了分段和捆绑机制以及演示数据包丢弃的方法，包括发生在Cisco MME外部的数据包丢弃，而不是由于SCTP最大MTU大小的配置而导致的。

根据RFC 4960（流控制传输协议）6.9（分段和重组）：

如果终端支持分段，如果要发送的用户消息的大小导致出站SCTP数据包大小超过当前MTU，则终端必须对用户消息进行分段。

此外，多个SCTP数据块可以捆绑到一个出站SCTP数据包中。生成的IP数据报的总大小（包括SCTP数据包和IP报头）必须小于或等于当前路径MTU。在MME上，路径MTU配置在处理这些数据包的IP接口上。

分段

一个SCTP关联中可以有多个流，每个流都由流标识符(SI)标识。 流序列号(SSN)标识特定SCTP流中每个分段的顺序。多个会话可以使用相同的SCTP流。传输序列号(TSN)标识整个SCTP关联中每个分段的顺序。

分片时，SCTP负载数据块在B和E字段中指示分片是开始分片、中间分片还是结束分片：

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          |

============================================================

流序列号中的间隙可能表示正在丢弃流或关联中的片段。Wirshark过滤器可帮助识别SCTP流中的差距：

sctp.sack_gap_block_start or sctp.sack_gap_block_end

SCTP区块捆绑

可以将多个数据块捆绑到一个SCTP数据包中，最大大小为MTU，但INIT、INIT ACK和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                             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

每个SCTP数据块的块长度列在每个数据块中：

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                          /

\                                                               \

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

影响规模的配置

SCTP-Param-Template SCTP MTU大小

在SCTP-Param-Template中，SCTP-Max-MTU-Size是使用sctp-max-mtu-size选项和/或sctp-start-mtu-size选项配置的，以字节为单位。1500字节是默认的SCTP最大MTU大小和默认SCTP开始MTU大小：

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

在MME服务中，SCTP-Param-Template与MME上下文相关联：

Exec > Global Configuration > Context Configuration > MME Service

[mme]ASR5500-2(config-mme-service)# associate sctp-param-template S1_MME_SCTP

MME环境以太网接口配置

要由MME服务使用的接口配置有所需的IP MTU大小（以字节为单位，默认值为1500）：

Exec > Global Configuration > MME Context Configuration

[mme]ASR5500-2(config-ctx)# interface int1/10_s1mme

[mme]ASR5500-2(config-if-eth)# ip address 10.5.203.195 255.255.255.254

[mme]ASR5500-2(config-if-eth)# ip mtu 2000

[mme]ASR5500-2(config-if-eth)# exit

端口以太网MTU大小

在全局配置模式下，此MME情景绑定到应用IP MTU 1500（默认值为1500）的以太网端口：

[mme]ASR5500-2(config)# port ethernet 1/10

#exit

vlan 200

no shutdown

bind interface int1/10_s1mme mme_ctx

#exit

vlan 201

no shutdown

bind interface int1/10_src mme_ctx

#exit

#exit

port ethernet 1/11

no shutdown

vlan 198

no shutdown

#exit

vlan 200

no shutdown

bind interface int1/11_s1mme mme_ctx

#exit

vlan 201

no shutdown

bind interface int1/11_src mme_ctx

#exit

S1AP UE无线电功能IE大小

在MME服务配置中，配置了S1AP UE无线功能IE消息大小。默认值为9000字节：

[context_name]host_name(config-mme-service)# s1-mme ue-radio-cap size 9000

案例研究

以下是分段初始环境设置请求/UE功能信息消息的示例，SCTP分段可满足配置的SCTP最大MTU大小。

在用户跟踪中，在传输SCTP分段的INITIAL CONTEXT SETUP REQUEST消息后，传输路由器向MME返回ICMP消息“Fragmentation needed”。

在帧5中，多个SCTP数据包(2)汇聚到一个IP数据包下：

第一个数据块是分段消息的最后一个数据段，由E-Bit信息元素中的1标记表示。

第二个数据块不是分段消息的一部分，因为B位和E位信息元素标有数字1:

第一个SCTP数据块的长度为1383字节。第二个SCTP数据块长度为89个字节，因此每个SCTP数据包不会超过已配置的SCTP-Max-MTU-Size 1500字节：

由于生成的IP数据报的总大小（包括SCTP数据包和IP报头）小于配置的IP MTU大小2000，因此这些SCTP块在MME上的IP堆栈级别分组到一个IP数据包。

解决方案

配置中允许使用默认值9000字节的S1AP UE无线功能IE消息大小。要在SCTP层传送这些消息，分段的大小必须小于配置的SCTP最大MTU大小1500。

sctp-max-mtu-size为1500意味着传输的任何SCTP数据包都不超过1500字节。

IP接口MTU大小为2000意味着任何IP数据包都不能超过2000字节。

一个IP数据包可以有多个SCTP数据包，而每个SCTP数据包可以有多个块。只要单个SCTP数据包大小与SCTP MTU大小一致，并且合并在一起的所有SCTP数据包的总大小与IP MTU大小一致，节点就会按预期运行。

在以下情况下，节点内不会发生数据包丢弃：

- 数据包跟踪帧中SCTP块的总大小小于SCTP-Param-Template和

- SCTP PDU + IP报头的总值小于节点上配置的接口MTU大小。

在我们的案例研究示例中，对传输路由器的调查显示传输路由器的IP MTU大小为1500。由于中间的传输节点的MTU为1500，因此数据包被传输节点上的IP接口丢弃，从而促使传输路由器向MME发送一条指示“目标无法到达”的消息。

解决丢弃问题的解决方法

解决方#1：减小SCTP最大MTU大小

通过将sctp-max-mtu-size配置为较低值直到您看不到丢弃，从而减小SCTP MTU大小。

注意：降低sctp-max-mtu-size时，还要确保sctp-start-mtu-size配置为小于或等于sctp-max-mtu-size的值。

示例：修改sctp-param-template S1_MME_SCTP(sctp-start-mtu-size从1500到1460),

解决方#2:将传输节点的MTU大小增加到大于1500

相关信息

- RFC 4960流控制传输协议

- MME管理指南，StarOS版本21.28章节：UE无线功能IE大小

- 命令行界面参考，模式E - F，StarOS版本21.28章节：以太网接口配置模式命令IP MTU大小

- 命令行界面参考，模式E - F，StarOS，章节：以太网接口配置模式命令：ip mtu

- SCTP参数模板配置模式命令：sctp-max-mtu-size

- Cisco TechNote — 配置StarOS MTU接口、APN和本地用户

- SR讨论SCTP和MTU SR 697666400(UE空闲到主用模式不起作用（在MME上发现服务请求解码错误）