信令流控制传送协议(SCTP)技术规范

上传人:最*** 文档编号:11089272 上传时间:2020-04-18 格式:DOC 页数:92 大小:816.50KB
返回 下载 相关 举报
信令流控制传送协议(SCTP)技术规范_第1页
第1页 / 共92页
信令流控制传送协议(SCTP)技术规范_第2页
第2页 / 共92页
信令流控制传送协议(SCTP)技术规范_第3页
第3页 / 共92页
点击查看更多>>
资源描述
信令流控制传送协议SCTP 技术规范 Technical Specification of Stream Control Transmission Protocol 报批稿 中 国 移 动 通 信 企 业 标 准 中国移动通信集团公司 发布 发 布 实 施 目次 1 范围 1 2 规范性引用文件 1 3 名词术语和缩略语 1 3 1 定义 2 3 2 缩略语 2 4 SCTP 的功能描述 3 4 1 SCTP 的结构 3 4 2 SCTP 的功能 4 4 2 1 偶联的建立和释放 4 4 2 2 流内消息的顺序递交 4 4 2 3 用户数据分段 5 4 2 4 证实和避免拥塞 5 4 2 5 数据块捆绑 5 4 2 6 分组的有效性验证 5 4 2 7 通路管理 6 5 SCTP 原语定义 6 5 1 高层协议 ULP 向 SCTP 发送的请求原语 6 5 1 1 INITIALIZE 原语 7 5 1 2 ASSOCIATE 原语 7 5 1 3 SHUTDOWN 原语 8 5 1 4 ABORT 原语 8 5 1 5 SEND 原语 8 5 1 6 SET PRIMARY 原语 9 5 1 7 RECEIVE 原语 10 5 1 8 STATUS 原语 11 5 1 9 CHANGE HEARTBEAT 原语 11 5 1 10 REQUEST HEARTBEAT 原语 12 5 1 11 GET SRTT REPORT 原语 12 5 1 12 SET FAILURE THRESHOLD 原语 12 5 1 13 SET PROTOCOL PARAMETERS 原语 13 5 1 14 RECEIVE UNSENT MESSAGE 原语 13 5 1 15 RECEIVE UNACKNOWLEDGED MESSAGE 原语 14 5 1 16 DESTROY 原语 14 5 2 SCTP 向高层协议发送的通知原语 14 5 2 1 DATA ARRIVE 通知 14 5 2 2 SEND FAILURE 通知原语 15 5 2 3 NETWORK STATUS CHANGE 通知原语 15 5 2 4 COMMUNICATION UP 通知原语 15 5 2 5 COMMUNICATION LOST 通知原语 16 5 2 6 COMMUNICATION ERROR 通知原语 16 5 2 7 RESTART 通知原语 17 5 2 8 SHUTDOWN COMPLETE 通知原语 17 6 SCTP 分组的格式以及参数定义 17 6 1 SCTP 分组格式 17 6 1 1 SCTP 公共分组头字段的格式 18 6 1 2 数据块字段的格式 19 6 1 3 任选 可变长参数的格式 21 6 2 SCTP 数据块的格式 22 6 2 1 净荷数据 DATA 数据块的格式 22 6 2 2 启动 INIT 数据块的格式 23 6 2 3 启动证实 INIT ACK 数据块的格式 27 6 2 4 选择证实 SACK 数据块的格式 29 6 2 5 HeartBeat 请求 HEARTBEAT 数据块的格式 31 6 2 6 HeartBeat 证实 HEARTBEAT ACK 数据块的格式 31 6 2 7 中止 ABORT 数据块的格式 32 6 2 8 关闭偶联 SHUTDOWN 数据块的格式 33 6 2 9 关闭证实 SHUTDOWN ACK 数据块的格式 33 6 2 10 操作差错 ERROR 数据块的格式 33 6 2 11 状态 COOKIE COOKIE ECHO 数据块的格式 38 6 2 12 COOKIE 证实 COOKIE ACK 数据块的格式 39 6 2 13 关闭完成 SHUTDOWN COMPLETE 数据块的格式 39 7 SCTP 端点的维护的参数和相关建议值 40 7 1 对应每个 SCTP 实例所需的参数 40 7 2 对应每个偶联 SCTP 端点所需的参数 40 7 3 对应每个传送地址所需的参数 41 7 4 需要的通用参数 42 7 5 SCTP 参数的建议值 42 8 SCTP 的程序 43 8 1 偶联的建立程序 43 8 1 1 偶联的正常建立 43 8 1 2 对重复的或不期望的 INIT INIT ACK COOKIE ECHO 和 COOKIE ACK 的处理 48 8 1 3 其他偶联启动的问题 51 8 2 数据的传递程序 52 8 2 1 DATA 数据块的传送 53 8 2 2 对接收的 DATA 数据块的证实 54 8 2 3 重发定时器的管理 57 8 2 4 多归属的 SCTP 端点 59 8 2 5 流标识符和流顺序号 60 8 2 6 有序的和无序的递交 61 8 2 7 报告收到的 DATA 数据块的 TSN 间隔 61 8 2 8 CRC 32 校验码的计算 62 8 2 9 分段和重装 62 8 2 10 捆绑机制 63 8 3 拥塞控制程序 64 8 3 1 SCTP 与 TCP 拥塞控制的区别 64 8 3 2 SCTP 的慢启动和避免拥塞 65 8 3 3 发现通路 MTU 68 8 4 故障管理程序 69 8 4 1 端点故障的检出 69 8 4 2 通路故障的检出 69 8 4 3 通路的心跳 70 8 4 4 对 OOTB Out of the blue 分组的处理 72 8 4 5 验证标签 73 8 5 偶联关闭程序 74 8 5 1 偶联的中止 74 8 5 2 偶联的关闭 74 附录 A 77 资料性附录 77 SCTP的状态转移图 77 附录 B 81 资料性附录 81 SCTP程序示例 81 B 1 正常偶联建立的示例 81 B 2 偶联重启动的示例 82 B 3 延时证实的示例 83 B 4 使用 SACK 报告间隔的示例 84 B 5 延时证实的示例 84 附录 C 85 资料性附录 85 明确地拥塞通知 85 前言 本技术规范是根据 RFC 2960 2000 建议制定的它规定了信令流控制传送协议 SCTP 所使用的消息格 式编码和程序 SCTP 协议主要用于在 IP 网中传送 No 7 的信令消息 同时 SCTP 协议还可以用于其他 的信息在 IP 网内传送 本技术规范主要适用于 NO 7 信令与 IP 网互通的信令网关 SG 设备 3G 移动软交换设备的开发 生 产 引进和购买 本标准的附录 A 和附录 B 是提示的附录 本标准由中国移动通信集团公司技术部提出并归口 本标准由标准提出并归口部门负责解释 本标准起草单位 中国移动通信集团公司研发中心 本标准主要起草人 魏冰 杜倩 本标准解释单位 同提出单位 YD T 1194 2002 1 流控制传送协议 SCTP 技术规范 V1 0 1 范围 本规范规定了流控制传送协议 SCTP 所使用的消息格式编码和程序 SCTP 协议主要 用于在 IP 网中传送 PSTN 的信令消息 以及在 IP 网内传送 本技术规范主要适用于完成 NO 7 信令与 IP 网互通的信令网关 SG 设备 以及 IP 网 用于呼叫控制的软交换 Soft Switch 交换机等设备的开发 生产 引进和购买 2 规范性引用文件 下列文件中的条款通过在本标准中引用而成为本标准的条款 凡是注日期的引用文件 其随后所有的修改单 不包括勘误的内容 或修订版均不适用于本部分 然而鼓励根据本部 分达成协议的各方研究是否可以适用这些文件的最小版本 凡是不注日期的引用文件 其最 新版本适用于本标准 RFC 793 传送控制协议 TCP RFC 1191 发现通路 MTU RFC 1123 对 INTERNET 主机的要求 应用和支持 RFC 1700 分配的号码 RFC 1750 出于安全目的的随机建议 RFC 1981 用于 IPV6 的发现通路 MTU RFC 1982 串号的算法 RFC 2373 IPV6 的地址结构 RFC 2401 INTERNET 协议的安全结构 RFC 2460 INTERNET 协议 版本 6 RCC 2481 明确地拥塞通知 RFC 2581 TCP 拥塞控制 RFC 2960 流传送控制协议 SCTP 3 名词术语和缩略语 2 3 1 定义 SCTP偶联 SCTP 偶联实际上是在两个 SCTP 端点间的一个对应关系 它包括了两个 SCTP 端点 以及包括验证标签和传送顺序号码等信息在内的协议状态信息 一个偶联可以由使用 该偶联的 SCTP 端点用传送地址来唯一识别 在任何时候两个 SCTP 端点间都不会有多于一 个的偶联 SCTP端点 SCTP 端点是 SCTP 分组中逻辑的接收方或发送方 在一个多归属的主机上 一 个 SCTP 端点可以由对端主机表示为 SCTP 分组可以发送到的一组合格的目的地传送地址 或者是可以收到 SCTP 分组的一组合格的起源传送地址 一个 SCTP 端点使用的所有传送地 址必须使用相同的端口号 但可以使用多个 IP 地址 SCTP 端点使用的传送地址必须是唯一 的 流 流是从两个 SCTP 端点建立的一个单向逻辑通道 对于顺序递交业务 在这个通道中所 有的用户消息都必须按照顺序进行递交 传送地址 传送地址是用网络层地址 传送层协议和传送层端口号定义的 当 SCTP 在 IP 上 运行时 传送地址就是由 IP 地址和 SCTP 端口号的组合来定义的 这里 SCTP 就充当传送协 议 3 2 缩略语 MAC 消息鉴权码 MTU 最大的传送单元 RTO 重发超时 RTT 双向传播时间 RTTVAR 双向传播时间变化 SCTP 流控制传送协议 SRTT 平滑的双向传输时间 TCB 传送控制块 TCP 传送控制协议 TLV 类型 长度 取值的编码格式 TSN 传送顺序号 ULP 高层协议 3 4 SCTP 的功能描述 信令传送中应用的 SCTP 协议主要用来在无连接的网络上传送 PSTN 信令消息 该协议 可以用来在 IP 网上提供可靠的数据传送协议 SCTP 具有如下功能 在确认方式下 无差错 无重复地传送用户数据 根据通路的 MTU 的限制 进行用户数据的分段 在多个流上保证用户消息的顺序递交 将多个用户的消息复用到一个 SCTP 的数据块中 利用 SCTP 偶联的机制 在偶联的一端或两端提供多归属的机制 来提供网络级的保 证 SCTP 的设计中还包含了避免拥塞的功能和避免遭受泛播和匿名的攻击 4 1 SCTP 的结构 SCTP 位于 SCTP 用户应用和无连接网络业务层之间 这种无连接的网络可以是 IP 网络 或者其他的网络 本标准规定的 SCTP 协议主要是运行在 IP 网络上的 SCTP 协议通过在两 个 SCTP 端点间的建立的偶联 来为两个 SCTP 用户之间提供可靠的消息传送业务 SCTP 实际上是一个面向连接的协议 但 SCTP 偶联的概念要比 TCP 的连接具有更广的 概念 SCTP 协议提供了在两个 SCTP 端点间的一组传送地址之间建立偶联的方法 通过这 些建立好的偶联 SCTP 端点可以发送 SCTP 分组 一个 SCTP 偶联可以包含用多个可能的 起源 目的地地址的组合 这些组合包含在每个端点的传送地址列表中 图 1 给出了 SCTP 偶联在 IP 网络协议中的示意 图 1 SCTP 偶联的示意 SCTP 用户 应用 SCTP 层 IP 层 SCTP 用户 应用 SCTP 层 IP 层 一个或多个 IP 地址 SCTP 端点 A SCTP 端点 B网络传送 4 4 2 SCTP 的功能 SCTP 传送业务可以分解成如图 2 所示成如下几个功能块 各功能块的用途如下节所述 图 2 SCTP 传送业务的功能图 4 2 1 偶联的建立和释放 偶联的建立是由 SCTP 用户发起请求来启动的 出于安全性考虑 为了避免遭受恶意的 攻击 在偶联的启动过程中采用了 COOKIE 机制 SCTP 提供了对激活偶联的正常的关闭程序 它必须根据 SCTP 用户的请求来执行 当 然 SCTP 也提供一种非正常的关闭程序 即 中止程序 中止程序的执行既可以根据用户的 请求来启动 也可以由 SCTP 协议检出差错来中止 SCTP 不支持半打开状态 类似 TCP 即一端可以在另一端结束后继续发送数据 无论 是哪个端点执行了关闭程序后 偶联的两端都应停止接受从用户发来的新数据 并且只传送 队列中的数据 4 2 2 流内消息的顺序递交 SCTP 中的流用来指示需要按顺序递交到高层协议的用户消息的序列 在同一个流中的 消息需要按照其顺序进行递交 SCTP 用户可以在偶联建立时规定在一个偶联中所支持的流的数量 这个数量是可以进 行协商的 用户消息通过流号来进行关联 在 SCTP 内部 每个通过 SCTP 的 SCTP 用户消 SCTP 用户应用 流内消息的顺序递交 用户数据分段 数据块捆绑 偶联的建立 和释放 证实和避免拥塞 分组有效性验证 通路管理 5 息都分配一个流顺序号码 在接收端 SCTP 保证在给定的流中 消息可以按照顺序递交给 SCTP 用户 但当某个流由于等待下一个连续的用户消息造成闭塞时 其他流上的顺序递交 不应受影响 SCTP 也提供非顺序递交的业务 接收到用户消息可以使用这种方式立即递交到 SCTP 用户 而不需要保证其发送时的顺序 4 2 3 用户数据分段 在需要的时候 SCTP 在发送用户消息时可以对消息进行分段 以确保发送到低层的 SCTP 分组长度符合通路 MTU 的要求 在接收方 需要把各分段重组成完整的消息后 再把 消息递交给 SCTP 用户 4 2 4 证实和避免拥塞 SCTP 为每个用户数据分段或未分段的消息都分配一个传送顺序号码 TSN TSN 的分 配是独立于流一级分配的流顺序号码 接收方对所有收到的 TSN 进行证实 尽管此时在接收 序列中可能存在接收到的 TSN 不连续 采用这种方式 可以使可靠的递交功能可以与流的顺 序递交相分离 证实和拥塞避免功能可以在规定时间内没有收到证实的时候负责对分组的重发 分组的 重发功能可以通过与 TCP 协议类似的拥塞避免程序来调节的 4 2 5 数据块捆绑 SCTP 分组在发送到低层时要包含一个公共的分组头 其后跟着一个或多个数据块 每 个数据块中既可以包含用户数据 也可以包含 SCTP 控制信息 SCTP 用户具有一个选项 可以请求是否把多于一个的用户消息捆绑在一个 SCTP 分组中进行发送 SCTP 的这种数据 块捆绑的功能可以在发送端生成一个完整的 SCTP 分组 在接收端负责分解该 SCTP 分组 当拥塞出现的时候 尽管用户可能请求 SCTP 不必进行捆绑 但 SCTP 的实施仍旧可以 执行捆绑功能 用户禁止进行捆绑只会影响到 SCTP 实施 即在传送 SCTP 分组之前产生一 个较小的时延 4 2 6 分组的有效性验证 每个 SCTP 公共分组头中都包含一个必备的验证标签字段和一个 32 比特长的校验字段 验证标签的值由偶联的端点在偶联启动时选择 如果收到的分组中未包含期望的验证标签值 则舍弃该分组 校验码则由 SCTP 分组的发送方设置 以提供附加的保护 用来避免由网络 造成的数据差错 接收方对包含无效校验码的 SCTP 分组予以丢弃 6 4 2 7 通路管理 发送方的 SCTP 用户能够使用一组传送地址作为 SCTP 分组的目的地 SCTP 通路管理功 能可以根据 SCTP 用户的指令和当前合格的目的地集合的可达性状态 为每个发送的 SCTP 分组选择一个目的地传送地址 当用分组业务量不能完全表明可达性时 通路管理功能可以 通过心跳消息来监视到某个目的地地址的可达性 并当任何远端传送地址的可达性发生变化 时向 SCTP 用户提供指示 通路管理功能也用来在偶联建立时 向远端报告合格的本地传送 地址集合 并且把从远端返回的传送地址报告给本地的 SCTP 用户 在偶联建立后 需要为每个 SCTP 端点都定义一个首选通路 用来在正常情况下发送 SCTP 分组 在接收端 通路管理功能在处理 SCTP 分组前 用来验证入局的 SCTP 分组属于的偶联 的是否存在 5 SCTP 原语定义 SCTP 通过接收高层协议 SCTP 用户 发送的原语请求 为 SCTP 的用户提供服务 并 且应当可以根据不同事件由 SCTP 向 SCTP 用户发送通知 本节章描述的原语和通知可以作为实施 SCTP 协议的一个参考 以下描述的高层协议接 口原语功能只是一个说明性的内容 并不要求完全按照以下的说明来实现 SCTP 协议 不同 的 SCTP 实施可以具有不同的 ULP 接口 但是 SCTP 必须提供一个最小集的业务 用来保证 所有的 SCTP 实施都可以支持相同的协议 5 1 高层协议 ULP 向 SCTP 发送的请求原语 本节对 ULP 和 SCTP 之间的功能的进行归纳 使用的描述方法采用了高级程序语言所用 的过程和函数调用方法 以下描述的 ULP 原语规定了在 SCTP 必须支持的用于互相通信的基本功能 单独的实施 必须按照各自格式进行对原语详细定义 它可以是在一个调用中使用这些基本功能的子集或 者是用这些基本功能的组合来实现 以下的原语描述使用了如下格式 原语名 必备属性 任选属性 返回结果 必备属性 任选属性 7 5 1 1 INITIALIZE 原语 原语格式 INITIALIZE 本端端口 本地合格的地址列表 返回结果 本地 SCTP 实例名 这个原语允许 SCTP 启动其内部的数据结构 并为建立操作环境分配所需的资源 一旦 SCTP 启动后 则高层协议在与其它 SCTP 端点直接通信时就不需要再调用该原语 SCTP 将向高层协议返回一个本地 SCTP 实例名 必备属性 无 任选属性 以下属性类型可以通过原语进行传递 本地端口 SCTP 端口号 如果高层协议 ULP 希望规定 本地合格的地址列表 本地 SCTP 端点应当绑定的地址列表 如果未包含地址列表 缺省的 所有分配给主机的所有 IP 地址应当是作为本地端点 注 注 如果实施支持这个任选属性 则实施应当保证本端点发送的任何 SCTP 分组中应当 包含一个在本地合格的地址列表中规定的 IP 地址 5 1 2 ASSOCIATE 原语 原语格式 ASSOCIATE 本地 SCTP 实例名 目的地传送地址 出局的流数量 返回结果 偶联 ID 目的地传送地址列表 出局的流数量 该原语用来由高层启动一个到特定端点的偶联 对端点按照在该端点定义的传送地址进 行规定 如果本地 SCTP 实例未启动 则认为该原语是一个差错 用来进行本地处理 SCTP 偶联的偶联 ID 作为返回结果用来返回偶联是否成功建立 如 果偶联建立不成功 则返回一个差错 如果偶联成功建立 则返回结果中还应包含到对端的 完整的传送地址列表以及本端点的出局的流数量 同时还应从返回的目的地地址中选择一个 传送地址作为本地端点向对端发送 SCTP 分组的首选通路 返回的 目的地传送地址列表 可以由高层协议用来改变首选通路 或者是向一个特定传送地址强制发送一个分组 注 如果 ASSOCIATE 原语用作模块化的功能调用 则偶联成功建立后 ASSOCIATE 原语还可以返回除偶联 ID 之外的其他偶联参数 如果 ASSOCIATE 原语是作为一个非模块 化的功能调用 则应当只返回偶联 ID 其他偶联参数应当用 COMMUNICATION UP 进行通 知 8 必备属性 本地 SCTP 实例名 从 INITIALIZE 操作中获得 目的地传送地址 规定了建立的偶联的对端点的一个传送地址 出局的流数量 高层协议希望向对端点开放的出局的流的数量 任选属性 无 5 1 3 SHUTDOWN 原语 原语格式 SHUTDOWN 偶联 ID 返回结果 结果编码 该原语用来正常地关闭一个偶联 任何已在本地发送队列中的用户数据都将被递交到对 端 该偶联将在收到所有发送的 SCTP 分组的证实后停止 返回结果用来指示是否成功的关 闭了该偶联 如果成功则返回一个成功关闭偶联编码 如果试图关闭偶联失败 则返回一个 差错编码 必备属性 偶联 ID 本地处理的 SCTP 偶联 任选属性 无 5 1 4 ABORT 原语 原语格式 ABORT 偶联 ID 原因编码 返回结果 结果编码 该原语用来非正常地关闭 中止 一个偶联 本地发送队列中的用户数据将被丢弃 并 发送一个 ABORT 数据块到对端 返回结果用来指示是否成功的中止了该偶联 如果偶联中 止成功 则返回一个成功编码 如果试图中止偶联失败 则返回一个差错编码 必备属性 偶联 ID 本地处理的 SCTP 偶联 任选属性 原因编码 传递给对端的中止原因 5 1 5 SEND 原语 原语格式 SEND 偶联 ID 缓冲区地址 字节计数 上下文 流 ID 存活时间 目的地传送地址 无序标志 无绑定标志 净荷协议 ID 返回结果 结果编码 9 SCTP 用户使用该原语通知 SCTP 发送数据 返回结果用来指示是否成功的发送了数据 这是通过 SCTP 发送用户数据的主要方法 必备属性 偶联 ID 本地处理的 SCTP 偶联 缓冲区地址 需要发送的用户消息存储的位置 字节计数 用户数据的字节数 任选属性 上下文 一个任选的 32 比特整数 如果这个用户消息传送失败 则在向高层协议通 知发送失败时携带 流 ID 用来指示数据需要在哪个流上发送 如果未规定 则缺省认为流 ID 为 0 存活时间 规定用户数据的存活时间 用户数据不应在存活时间之后由 SCTP 发送 这个参数可以避免传送一个过期的用户消息 如果用户数据不能在存活时间内启动传送 即 通过 SCTP 的 SEND 原语发送到目的地 则 SCTP 应当通知高层用户 如果 SCTP 已经尝试 在存活时间超时前传送数据块 则用户数据就可以认为是被发送了 注 为了更好的支持数据块的存活时间选项 发送方可以暂停给一个出局的 DATA 数据 块分配 TSN 号码 为了简化实施 一旦 TSN 号码由发送方分配 则认为这个 DATA 数据块 已经被发送 并且不受这个 DATA 数据块的存活时间选项的限制了 目的地传送地址 规定了分组要传送到已建立的偶联的对端点的一个传送地址 只 要可能 SCTP 将使用这个目的地传送地址来发送分组 而不使用当前的首选通路 无序的标志 如果这个标志存在 则指示用户允许把数据按照无序的方式递交给对 端 即 携带这个这个消息的所有 DATA 数据块的 U 标志位设置为 1 无绑定标志 指示 SCTP 不要把这个用户数据同其他出局的 DATA 数据块捆绑在一 个 SCTP 分组中 当网络拥塞时 SCTP 可以不考虑这个标志位是否存在而直接进行捆绑 净荷协议 ID 一个 32 比特的无符号整数 它用来指示被传送到对端的净荷协议数据 的类型 这个值由 SCTP 作为透明的数据进行传递 5 1 6 SET PRIMARY 原语 原语格式 SETPRIMARY 偶联 ID 目的地传送地址 起源传送地址 返回结果 结果编码 高层协议用该原语指示本地 SCTP 把给定的目的地传送地址作为发送分组的首选通路 10 该操作的返回结果用来指示这个操作是否成功执行 如果规定的目的地传送地址没包含在先前在 ASSOCIATE 原语或 COMMUNICATION UP 通知返回的 目的地传送地址列表 中 则返回一个差错 必备属性 偶联 ID 本地处理的 SCTP 偶联 目的地传送地址 规定了分组要传送到已建立的偶联的对端点的一个传送地址 这 个地址将作为今后发送分组的首选地址 这个地址将修改本地 SCTP 地址维护的当前首选地 址信息 任选属性 起源传送地址 一些实施可以允许任选的把放在所有的出局 IP 数据报中的地址设置 为缺省起源地址 5 1 7 RECEIVE 原语 原语格式 RECEIVE 偶联 ID 缓冲区地址 缓冲区容量 流 ID 返回结果 字节计数 传送地址 流 ID 流顺序号码 部分标志位 递交号码 净荷协议 ID 该原语用来把在 SCTP 队列中的可用的用户消息读到由高层协议规定的缓冲区中 所读 消息的字节数将作为结果返回 如果有可能根据特定的实施 也可以返回其他信息 如发送 方的地址 收到的消息的流 ID 以及是否有消息可以进行恢复等 对于顺序的消息 他们的 流顺序号码也可以被返回 根据实施 如果在调用这个原语时 队列中没有消息可用 则可以返回一个这种情况的 指示 或者是先禁止执行该调用进程 直到队列中有新消息可用为止 必备属性 偶联 ID 本地处理的 SCTP 偶联 缓冲区地址 高层协议指示的接收的用户消息存储的内存位置 缓冲区容量 将要收到的数据的最大长度 以字节为单位 任选属性 流 ID 用来指示接收到的数据所在的流 流顺序号码 由对端 SCTP 发送方分配的流顺序号码 部分标志位 如果返回的这个标志位设置为 1 则这个 RECEIVE 原语中只包含了整 11 个消息的一部分 如果这个标志位被设置 则流 ID 和流顺序号码必须也包含在这个 RECEIVE 原语中 如果这个标志位设置为 0 则表示对这个流顺序号码而言已经没有更多需 要递交的内容 净荷协议 ID 一个 32 比特的无符号整数 它用来指示收到的对端的净荷协议数据的 类型 这个值由 SCTP 作为透明的数据进行传递 5 1 8 STATUS 原语 原语格式 STATUS 偶联 ID 返回结果 状态数据 该原语用来要求 SCTP 返回一个包含以下信息的数据块 偶联连接状态 目的地传送地址表 目的传送地址的可达性状态 当前的接收方窗口大小 当前的拥塞窗口大小 未确认的 DATA 数据块的数量 收到的 DATA 数据块的数量 首选通路 首选通路上最近收到的 SRTT 首选通路的 RTO 其它目的地地址的 SRTT 和 RTO 等 必备属性 偶联 ID 本地处理的 SCTP 偶联 任选属性 无 5 1 9 CHANGE HEARTBEAT 原语 原语格式 CHANGEHEARTBEAT 偶联 ID 目的地传送地址 新状态 周期 返回结果 结果编码 高层协议用该原语指示本地端点允许或禁止向指定的目的地传送地址发送心跳消息 返 回原因用来指示该操作的执行情况 如果可能 当目的传送地址未空闲时 心跳程序也不执 行 12 必备属性 偶联 ID 本地处理的 SCTP 偶联 目的地传送地址 规定了到偶联的对端点的一个传送地址 新状态 用来指示对该目的地传送地址的心跳状态 允许或禁止 任选属性 周期 如果该参数存在 且允许对端目的地传送地址进行心跳测试 则用来指示心 跳测试的频率 该参数的缺省值为设置值加上到目的地地址的 RTO 这个参数对所有目的地 起作用 5 1 10 REQUEST HEARTBEAT 原语 原语格式 REQUESTHEARTBEAT 偶联 ID 目的地传送地址 返回结果 结果编码 高层协议用该原语指示本地端点对给定偶联的特定目的地传送地址执行心跳程序 返回 结果用来指示传送给目的地地址的 HEARTBEAT 数据块是否成功 必备属性 偶联 ID 本地处理的 SCTP 偶联 目的地传送地址 HEARTBEAT 消息需要发送去的偶联传送地址 5 1 11 GET SRTT REPORT 原语 原语格式 GETSRTTREPORT 偶联 ID 目的地传送地址 返回结果 SRTT 的取值 高层协议用该原语指示本地 SCTP 报告对给定偶联上规定的目的地传送地址的当前 SRTT 测量值 返回结果应当是一个包含最近 SRTT 的毫秒值 整数 必备属性 偶联 ID 本地处理的 SCTP 偶联 目的地传送地址 需要报告的 SRTT 测量的偶联传送地址 5 1 12 SET FAILURE THRESHOLD 原语 原语格式 SETFAILURETHRESHOLD 偶联 ID 目的地传送地址 故障门限 返回结果 结果编码 该原语允许本地 SCTP 定制到给定目的地地址的可达性故障检出的门限 Path Max Retrans 返回结果用来指示该操作是否成功 13 必备属性 偶联 ID 本地处理的 SCTP 偶联 目的地传送地址 设置故障检出门限的的偶联传送地址 故障门限 对该目的地地址的 Path Max Retrans 参数的新取值 5 1 13 SET PROTOCOL PARAMETERS 原语 原语格式 SETPROTOCOLPARAMETERS 偶联 ID 目的地传送地址 协议参数列表 返回结果 结果编码 该原语允许本地 SCTP 定制协议参数 返回结果用来指示该操作是否成功 必备属性 偶联 ID 本地处理的 SCTP 偶联 协议参数列表 SCTP 用户希望定制的协议参数的名称和取值 如 Association Max Retrans 等 任选属性 目的地传送地址 针对每个目的地传送地址可以对相关的协议参数进行设置 5 1 14 RECEIVE UNSENT MESSAGE 原语 原语格式 RECEIVE UNSENT 数据恢复 ID 缓冲区地址 缓冲区容量 流 ID 流顺 序号码 部分标志位 净荷协议 ID 必备属性 数据恢复 ID 在故障 failure 通知中传递给高层的标识 缓冲区地址 高层协议指示的接收的消息存储的内存位置 缓冲区容量 将要收到的数据的最大长度 以字节为单位 任选属性 流 ID 这个返回值它被设置用来指示数据需要发送到哪个流 流顺序号码 这个值返回用来指示与该消息相关的流顺序号码 部分标志位 如果返回的这个标志位设置为 1 则这个 Receive 原语中只包含了整个 消息的一部分 如果这个标志位被设置 则流 ID 和流顺序号码必须也包含在这个 Receive 原 语中 如果这个标志位设置为 0 则表示对这个流顺序号码而言已经没有更多需要递交的内 容 14 净荷协议 ID 一个 32 比特的无符号整数 它用来指示收到的对端的净荷协议数据的 类型 这个值由 SCTP 作为透明的数据进行传递 5 1 15 RECEIVE UNACKNOWLEDGED MESSAGE 原语 原语格式 RECEIVE UNACKED 数据恢复 ID 缓冲区地址 缓冲区容量 流 ID 流 顺序号码 部分标志位 净荷协议 ID 必备属性 数据恢复 ID 在故障 failure 通知中传递给高层的标识 缓冲区地址 高层协议指示的接收的消息存储的内存位置 缓冲区容量 将要收到的数据的最大长度 以字节为单位 任选属性 流 ID 这个返回值它被设置用来指示数据需要发送到哪个流 流顺序号码 这个值返回用来指示与该消息相关的流顺序号码 部分标志位 如果返回的这个标志位设置为 1 则这个 Receive 原语中只包含了整个 消息的一部分 如果这个标志位被设置 则流 ID 和流顺序号码必须也包含在这个 Receive 原 语中 如果这个标志位设置为 0 则表示对这个流顺序号码而言已经没有更多需要递交的内 容 净荷协议 ID 一个 32 比特的无符号整数 它用来指示收到的对端的净荷协议数据的 类型 这个值由 SCTP 作为透明的数据进行传递 5 1 16 DESTROY 原语 原语格式 DESTROY 本地 SCTP 实例名 必备属性 本地 SCTP 实例名 这个值是在 initialize 原语中传递给应用的 它用来指示哪个 SCTP 实例要进行破坏 5 2 SCTP 向高层协议发送的通知原语 假定 SCTP 提供了一种由 ULP 异步处理信号的方法 当 SCTP 发一个信号给 ULP 处理 时 也需要把特定的信息传递给 ULP 5 2 1 DATA ARRIVE 通知 当一个用户消息被成功的接收 并且准备向高层递交时 SCTP 将用该原语通知高层协 15 议 原语格式 DATA ARRIVE 偶联 ID 流 ID 返回结果 无 在该通知原语中可以包含以下任选属性 偶联 ID 本地处理的 SCTP 偶联 流 ID 用来指示数据是从哪个流上收到的 5 2 2 SEND FAILURE 通知原语 当一个消息不能被递交时 SCTP 将发送该原语通知高层协议 原语格式 SEND FAILURE 偶联 ID 数据恢复 ID 原因编码 上下文 返回结果 无 在该通知原语中可以包含以下任选属性 偶联 ID 本地处理的 SCTP 偶联 数据恢复 ID 用来恢复未发送和未证实数据的标识 原因编码 用来指示故障的原因 例如 长度过长 消息存活时间过期等 上下文 与该消息相关的任选信息 见 5 1 1 节 5 2 3 NETWORK STATUS CHANGE 通知原语 当目的地传送地址被标记为未激活时 例如 当 SCTP 检测出故障 或标记为激活时 当 SCTP 检出故障恢复 SCTP 将用该原语通知高层协议 原语格式 NETWORK STATUS CHANGE 偶联 ID 目的地传送地址 新状态 返回结果 无 在该通知原语中必须包含以下必备属性 偶联 ID 本地处理的 SCTP 偶联 目的地传送地址 它用来指示由于状态变化而受影响的对端点的目的地传送地址 新状态 用来指示新的状态 5 2 4 COMMUNICATION UP 通知原语 SCTP 用该原语通知高层协议本地 SCTP 已经准备好发送或接收用户数据 或者是一个 丢失通信的端点又已经恢复 实施的注 如果 ASSOCIATE 是作为一个模块化功能调用 则偶联参数都作为 ASSOCIATE 原语的返回结果 在这种情况下 COMMUNICATION UP 通知原语作为偶联的 16 发起方是任选的 原语格式 COMMUNICATION UP 偶联 ID 状态 目的地传送地址列表 出局的流 数量 入局流数量 返回结果 无 在该通知原语中必须包含以下必备属性 偶联 ID 本地处理的 SCTP 偶联 状态 用来指示发生了哪种类型的事件 目的地传送地址列表 对端点的一个完整的传送地址集合 出局的流数量 偶联高层允许使用的最大的流数量 入局流数量 对端点对该偶联所请求的流数量 这个值可以与出局的流数量的取值 不同 5 2 5 COMMUNICATION LOST 通知原语 当 SCTP 完全丢失了到一个端点的通信时 用心跳消息 或者是检出端点已经执行了中 止操作 则 SCTP 将使用该原语通知高层协议 原语格式 COMMUNICATION LOST 偶联 ID 状态 数据恢复 ID 最后证实的 TSN 最后发送的 TSN 返回结果 无 在该通知原语中必须包括以下必备属性 偶联 ID 本地处理的 SCTP 偶联 状态 用来指示发生了哪种类型的事件 状态可以指示故障或者是响应 SHUTDOWN 或 ABORT 请求的正常的中止事件 在该通知原语中可以包括以下任选属性 数据恢复 ID 用来恢复未发送或未证实数据的表示 最后证实的 TSN 由对端点最后证实的 TSN 最后发送的 TSN 发送到对端的最后一个 TSN 5 2 6 COMMUNICATION ERROR 通知原语 当 SCTP 从对端收到了一个 ERROR 数据块 并且确定需要向高层协议通知时 才使用 该通知原语 原语格式 COMMUNICATION ERROR 偶联 ID 错误信息 17 返回结果 无 在该通知原语中必须包括以下必备属性 偶联 ID 本地处理的 SCTP 偶联 错误信息 用来指示错误类型并且可以任选地包含一些从 ERROR 数据块中收到的附 加信息 5 2 7 RESTART 通知原语 当 SCTP 检出其对端已经重新启动时 则可以用该原语通知高层协议 原语格式 RESTART 偶联 ID 返回结果 无 在该通知原语中必须包括以下必备属性 偶联 ID 本地处理的 SCTP 偶联 5 2 8 SHUTDOWN COMPLETE 通知原语 当 SCTP 已经完成了关闭程序后 则用该原语通知高层协议 原语格式 SHUTDOWN COMPLETE 偶联 ID 返回结果 无 在该通知原语中必须包括以下必备属性 偶联 ID 本地处理的 SCTP 偶联 6 SCTP 分组的格式以及参数定义 6 1 SCTP 分组格式 SCTP 分组由公共的分组头和若干数据块组成 每个数据块中既可以包含控制信息 也 可以包含用户数据 除了 INIT INIT ACK 和 SHUTDOWN COMPLETE 数据块外 其他类 型的多个数据块可以捆绑在一个 SCTP 分组中 当然必须要满足偶联对 MTU 的要求 当然 这些数据块也可以不与其它数据块捆绑在一个分组中 如果一个用户消息不能放在一个 SCTP 分组中 则这个消息可以被分成若干个数据块 SCTP 分组的格式如图 3 所示 18 图 3 SCTP 分组的格式 6 1 1 SCTP 公共分组头字段的格式 SCTP 公共分组头字段的格式如图 4 所示 图 4 SCTP 公共分组头的格式 SCTP 公共分组头的各字段含义如下所述 起源端口号 16 比特的无符号整数 该端口号用来识别 SCTP 发送方的端口号码 接 收方使用起源端口号和起源 IP 地址 以及目的地端口号和可能的目的地 IP 地址来识别属于 某个偶联的分组 目的端口号 16 比特的无符号整数 该 SCTP 端口号用来确定分组的去向 接收方主 机将利用该端口号把 SCTP 分组解复用到正确的接收端点或应用 验证标签 32 比特的无符号整数 接收到分组的接收方使用验证标签来判别发送方的 这个 SCTP 分组的有效性 在发送方该验证标签必须设置为在偶联启动阶段中从对端点收到 的启动标签中的值 以下情况除外 包含 INIT 数据块的分组中验证标签必须为 0 携带 INIT 块的 SCTP 的分组中不能包 含其他数据块 在包含 SHUTDOWN COMPLETE 数据块且设置了 T 比特的分组中 验证标签必须要 从包含 SHUTDOWN ACK 数据块的分组中复制 在包含 ABORT 数据块的分组中 验证标签必须要从触发这个 ABORT 发送的分组中 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 公共的分组头 数据块 1 数据块 n 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 校验码 目的地端口号起源端口号 分组有效性验证标签 19 复制 校验码 32 比特的无符号整数 该字段用来传送 SCTP 分组的校验码 6 1 2 数据块字段的格式 SCTP 分组中数据块字段的格式如图 5 所示 每个数据块中都包括数据块类型字段 数 据块特定的标志位字段 数据块长度字段和取值字段 图 5 SCTP 分组中数据块字段的格式 SCTP 分组的数据块字段中各字段含义如下所述 数据块类型 8 比特无符号整数 该字段用来在数据块中内容字段的信息类型 该参 数的取值范围为 0 254 255 留作今后的扩展 数据块类型字段的编码分配如下 类型编码 含义 0 净荷数据 DATA 1 启动 INIT 2 启动证实 INIT ACK 3 选择证实 SACK 4 Heartbeat 请求 HEARTBEAT 5 Heartbeat 证实 HEARTBEAT ACK 6 中止 ABORT 7 关闭 SHUTDOWN 8 关闭证实 SHUTDOWN ACK 9 操作差错 ERROR 10 状态 Cookie COOKIE ECHO 11 Cookie 证实 COOKIE ACK 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 数据块类型 数据块标志位 数据块长度 数据块内容 20 12 为明确拥塞通知响应 ECNE 预留 13 为降低拥塞窗口 CWR 预留 14 关闭完成 SHUTDOWN COMPLETE 15 to 62 IETF 预留 63 IETF 定义的数据块扩展 64 to 126 IETF 预留 127 IETF 定义的数据块扩展 128 to 190 IETF 预留 191 IETF 定义的数据块扩展 192 to 254 IETF 预留 255 IETF 定义的数据块扩展 采用这种方式编码 可以使用数据块类型字段中高两位的比特用来指示当端点收到不识 别该数据块类型时所要采取的特定动作 00 停止处理该分组并舍弃该分组 不处理分组中任何随后的数据块 01 停止处理该分组并舍弃该分组 不处理分组中任何随后的数据块 并在 ERROR 的 不识别的数据块类型 字段中报告不识别的数据块 10 跳过该数据块并继续处理 11 跳过该数据块并继续处理 在 ERROR 数据块中报告差错原因为不识别的参数类型 注 ECNE 和 CWR 数据块类型预留给 明确拥塞通知 备用 数据块标志位 8 比特 这些比特的使用根据数据块类型的取值 除非特殊规定 否则 这个字段设置为 0 并在接收方忽略 数据块长度 16 比特的无符号整数 该值用来表示包含数据块类型字段 数据块标志 位字段 数据块长度字段和取值字段在内的字节数 因此如果数据块取值部分的长度为 0 则该长度字段应设置为 4 数据块长度字段不计算该数据块中最后一个参数中包含的填充字 节 数据块内容 可变长度 数据块内容字段包含在该数据块中传送的真正的信息 该字段 的使用和格式取决于数据块类型 数据块的总长度 包括类型 长度和取值字段 必须是 4 字节的整数倍 如果该长度不 21 是 4 字节的整数倍 则发送方应当向数据块中填充全 0 的字节 这些填充的字节不计入数据 块长度字段 发送方填充的字节数应不超过 3 个字节 在接收方忽略所有的填充字节 除最 后一个参数外 其它参数中的填充字段则作为数据块长度进行计算 6 1 3 任选 可变长参数的格式 SCTP 控制数据块的内容取值包含了特定数据块类型所要求的字段 即随后是一个或多 个参数 这些包含在一个数据块中的任选 可变长参数都是按照参数类型 参数长度和参数取 值的方式定义的 其格式如图 6 所示 图 6 任选 可变长参数格式 数据块的参数类型 16 比特无符号整数 参数类型字段用来识别参数的类型 取值范 围可以从 0 到 65534 65535 预留给 IETF 进行扩展 数据块的参数长度 16 比特无符号整数 参数长度字段包含参数类型 参数长度和参 数取值字段在内所有字段的字节数 因此一个参数的取值字段为 0 则该长度字段应设置为 4 参数长度字段不计算填充字节 数据块的参数值 可变长度 参数取值字段包含在该参数中传送的实际信息 参数的总长度 包括类型 长度和取值字段 必须是 4 字节的整数倍 如果该长度不是 4 字节的整数倍 则发送方应当向数据块中填充全 0 的字节 这些填充的字节不计入参数长 度字段 发送方填充的字节数应不超过 3 个字节 接收方忽略所有的填充字节 采用这种方式编码 可以使用参数类型字段中高两位的比特指示当端点收到不识别参数 类型时所要采取的特定动作 00 表示停止处理该分组并舍弃该分组 不处理分组中任何随后的数据块 01 表示停止处理该分组并舍弃该分组 不处理分组中任何随后的数据块 并在 ERROR 或 INIT ACK 的 不识别的参数类型 字段中报告不识别的参数类型 10 跳过该参数并继续处理 11 跳过该参数并继续处理 在 ERROR 或 INIT ACK 的 不识别的参数类型 字段中 报告不识别的参数类型 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 参数长度参数类型 参数值 22 6 2 SCTP 数据块的格式 本节定义了 SCTP 协议使用的所有数据块的格式 6 2 1 净荷数据 DATA 数据块的格式 DATA 数据块的格式如图 7 所示 图 7 DATA 数据块格式 DATA 数据块中各字段含义如下所述 备用比特 5 比特 应当设置为全 0 在接收方忽略 U 比特 1 比特 称为非顺序比特 如果该比特设置为 1 则指示这是一个非顺序的 DATA 数据块 则不需要给该数据块分配流顺序号码 所有接收方必须忽略流顺序号码 在 重新组装完成后 如果需要 非顺序的数据块不需要尝试任何重新排序的过程 可以由接 收方直接递交到高层 如果一个非顺序的用户消息被分段 则消息的每个分段中的 U 比特必 须被设置为 1 B 比特 1 比特 称为分段开始比特 如果该比特被设置 则指示这是用户消息的第 一个分段 E 比特 1 比特 称为分段结束比特 如果该比特被设置 则指示这是用户消息的最 后一个分段 一个未分段的用户消息应当把所有的 B 和 E 比特设置为 1 如果 B E 比特都 设置为 0 则表明这是一个分段的用户消息的一个中间分段 当用户消息被分段到多个数据 块中 接收方需要使用 TSN 对消息进行重组 这意味着给分段的用户消息的每个分段都必须 要使用连续的 TSN BE 比特的取值含义如表 1 所述 表 1 BE 比特的取值含义 B E 表 示 的 含 义 1 0 用户消息的第一个分段 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 TSN 类型 0 备用 U B E 数据块长度 流识别符 流顺序号码 净荷协议标识符 用户数据 23 0 0 用户消息的中间分段 0 1 用户消息的最后一个分段 1 1 未分段的消息 长度 16 比特的无符号整数 该字段用来指示 DATA 数据块从类型字段开始到用 户数据字段结束之间的字节数 但不包含任何填充字节 如果 DATA 数据块的用户数据字段 为 0 则长度字段设为 16 TSN 32 比特无符号整数 该值表示该数据块的 TSN TSN 的有效值从 0 到 232 1 TSN 的值达到 4294967295 后将回转到 0 流标识符 16 比特无符号整数 该字段用来识别用户数据属于的流 流顺序号码 16 比特无符号整数 该值用来表示所在流中的用户数据的顺序号码 该 字段的有效值为 0 到 65535 当一个用户消息被 SCTP 分段后 则必须在消息的每个分段中 都带相同的流顺序号码 净荷协议标识符 32 比特无符号整数 该值表示一个应用 或上层协议 特定的协议 标识符 这个值由高层协议传递到 SCTP 并发送到对等层 这个标识符不由 SCTP 使用 但 却可以由特定的网络实体或对等的应用来识别在 DATA 数据块中携带的信息类型 甚至在每 个分段的 DATA 数据块中也应包含该字段 以确保对网络中间的代理可用 0 表示高层未 对该协议净荷规定应用标识符 其中 M2UA 协议净荷使用编码 2 M3UA 协议净荷 使用编码 3 SUA 协议净荷使用编码 4 M2PA 协议净荷使用的编码待定 用户数据 可变长度 它用来携带用户数据净荷 该字段必须被填充为 4 字节的整数倍 发送方填充的字节数应不超过 3 个字节 接收方忽略所有的填充字节 6 2 2 启动 INIT 数据块的格式 该数据块用来启动两个 SCTP 端点间的一个偶联 INIT 数据块的格式如图 8 所示 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 启动标签 类型 1 数据块标志位 数据块长度 输出流数量 输入流数量 初始的 TSN 任选 可变长参数 通告的接收方窗口信用 a rwnd 24 图 8 INIT 数据块格式 INIT 数据块应包含以下参数 除非特别支持 否则每个参数只能在 INIT 数据块中出现 一次 必备参数 启动标签 通告的接收方窗口信用 输入流数量 输出流数量 初始 TSN 可变长度参数 类型值 状态 IPv4 地址 注 1 5 任选 IPv6 地址 注 1 6 任选 Cookie Preservative 9 任选 ECN 能力预留
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!