1、 ICS 33.040.40 M 13 中 华 人 民 共 和 国 通 信 行 业 标 准 YD 延迟容忍网络 LTP协议技术要求 Technical requirements of Delay Tolerant Networking Licklider Transmission Protocol (报批稿) XX/T XXXX-XXXX XXXX-XX-XX发布 XXXX-XX-XX实施 中华人民共和国工业和信息化部 发布 XX/T XXXX-XXXX II XX/T XXXXXXXXXII I 目次 前言 .I 1 范围 .1 2 规范性引用 .1 3 术语缩略语 .1 3.1 术语 .1
2、 3.2 缩略语 .4 4 LTP 协议的段结构 .4 4.1 概述 .4 4.2 段头部 .5 4.3 段内容 .7 4.4 段尾部 .9 5 LTP 协议的客户服务请求 .9 5.1 会话传输请求 .9 5.2 会话取消请求 .9 6 LTP 协议的执行环境需求 .10 7 LTP 协议的内部处理流程 .10 7.1 概述 .10 7.2 传输开始 .10 7.3 校验点计时器开启 .10 7.4 报告段计时器开启 .10 7.4 报告段计时器开启 .10 XX/T XXXX-XXXX II 7.5 传输停止 .10 7.6 计时器暂停 .10 7.7 计时器暂停恢复 .11 7.8 校验
3、点重传 .11 7.9 报告段重传 .11 7.10 红区数据接收 .11 7.11 绿区数据接收 .11 7.12 接收报告发送 .11 7.13 传输完成 .12 7.14 数据重传 .12 7.15 报告段计时器停止 .12 7.16 会话取消计时器开启 .12 7.17 会话终止取消重传 .12 7.18 响应取消 .12 7.19 会话取消计时器关闭 .13 7.20 会话取消 .13 7.21 会话关闭 .13 7.22 协议错误信息处理 .13 7.23 系统错误处理 .13 8 LTP 协议的客户服务通知 .13 8.1 会话启动 .13 8.2 绿区数据段到达 .13 8.3
4、 红区数据段到达 .13 8.4 传输会话完成 .14 XX/T XXXXXXXXXII III 8.5 传输会话取消 .14 8.6 接收会话取消 .14 8.7 初始化传输完成 .14 附 录(资料性附录) A LTP 发送方和接收方的状态转移图 .15 XX/T XXXXXXXXXII V 前 言 本标准按照 GB/T 1.1-2009 给出的规则起草。 请注意本文件的某些内容可能涉及专利,本文件的发布机构不承担识别这些专利的责任。 本标准是延迟容忍网络系列标准之一,该系列标准预计的结构及名称如下: 1. 延迟容忍网络 体系架构 2. 延迟容忍网络 LTP 协议技术要求 3. 延迟容忍网
5、络 Bundle 协议技术要求 随着信息技术的发展,以后还将根据实际情况制定后续相关标准。 本标准考虑到国内发展延迟容忍网络需求 , 主要参考 IETF RFC 5326,2008 Licklider Transmission Protocol制定而成。 本标准由中国通信标准化协会提出并归口。 本标准 起草单位:中国信息通信研究院 本标准 主要起草人: 穆琙博、王哲、马军锋、宋菲、张杰、柴瑶琳、吴冲 XX/T XXXX-XXXX VI XX/T XXXXXXXXXII 1 延迟容忍网络 LTP 协议技术要求 1 范围 本标准定义了一种能够在极端链路条件下: 极限长 RTT 或者连接频发中断,保
6、证链路可靠性的传 输协议 LTP 协议。 LTP 协议借助有状态的自动重传机制, 能够在部署 Bundle Protocol 的网络环境 中工作于数据链路层之上,提供可靠的数据传输服务,保证通信实体之间传输数据的完整性。 本标准适用于具有超远距离、大时延的星际网络通信。 2 规范性引用文件 下列文件对于本文件的应用是必不可少的 。 凡是注日期的引用文件 , 仅所注日期的版本适用于本文 件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 IETF RFC 5326 ( 2008) Licklider Transmission Protocol 3 术语和 缩略语 3.1 术
7、语 下列术语适用于本文件。 3.1.1 引擎 ID Engine ID LTP引擎的唯一标识 , 在 Bundle Protocol部署的网络环境下 , 通过汇聚层中间件可以将 DTN 终端 ID 与 LTP引擎 ID进行映射。 3.1.2 数据块 Block 上层协议(比如, Bundle Protocol)处理的数据块,借助 LTP客户服务可以在 LTP实例对象之间进 行数据传输。数据块开始部分的连续数据位称为 “块前缀 ”,数据块结束部分的连续数据位称为 “块尾 缀 ”。 XX/T XXXX-XXXX 2 3.1.3 红区数据 Red-Part 数据块的 “块前缀 ”数据,必须准确传输,
8、即,需要有应答报文和重传机制。 3.1.4 绿区数据 Green-Part 数据块的 “块尾缀 ”,无需准确传输,即没有应答和重传机制,绿区数据一定出现在红区数据之后 。 3.1.5 LTP会话 Session LTP终端之间的通信线程 , 用于传输数据块 。 会话具有单向传输性 , 通常需要反方向的业务应答流 。 3.1.6 发送方 Sender 会话的数据发送方。 3.1.7 接收方 Receiver 会话的数据接收方。 3.1.8 客户服务实例 Client Service Instance LTP会话的软件终端,比如,运用 LTP传输数据的应用或者高层的协议实现。 3.1.9 段 Se
9、gment XX/T XXXXXXXXXII 3 LTP数据通信传输的基本数据结构, 可以是以下几种类型 : 数据段、报告段、报告确认段、取消会 话段、取消会话确认段。 3.1.10 接收声明 Reception Claim 确认接收到一段持续字符数据段,比如,一段数据子块。 3.1.11 (数据块)范围 scope 定义了数据子块的上下边界; 如果数据子块为数据段 , 该数据段的下边界是应用数据的偏移量位置 , 上边界是下边界与数据段长 度之和。举例,一段偏移量为 1000,长度为 500的数据段,下边界为 1000,上边界为 1500。 如果数据子块为报告段 , 该报告段的上边界位置是位于
10、从数据块前缀末尾位置开始计算 , 直到报告 声明涉及的数据长度为止的位置 ; 该报告段的下边界位置是位于从数据块前缀末尾位置开始计算,直到 报告未涉及的数据长度为止的位置。也就是说,任意偏移位置大于报告段下边界,小于报告段上边界 , 但是没有声明为已接收的数据段 , 都需要进行重传处理 。 举例 , 一个携带下边界为 1000, 上边界为 5000 的报告段,如果报告内容中声明了 1000 1999和 30004999,那么偏移量为 20002999的数据 将需要重传。 3.1.12 数据块末尾 End of Block 原始数据块当中,最后一个传输的数据段;这个数据段的上边界标识了数据块的长
11、度。 3.1.13 红区数据末尾 End of Red-Part 原始数据块当中包含红区数据块最后一比特的数据段 ; 这个数据段的上边界标识了红区数据的长度 。 3.1.14 XX/T XXXX-XXXX 4 校验点 Checkpoint 接收方的 LTP引擎主动发起的接收报告 ; 其中,红区数据末尾所在数据段就称为 “强制校验点 ”,用 于进行最后的数据段重传,其他情况下称为 “自主式校验 ”。 3.1.15 接收报告 Reception Report 用于应答一定范围内,数据子块已经成功接收的若干报告段。 3.1.16 同步接收报告 Synchronous Reception Report
12、 为响应校验点而触发的接收报告。 3.1.17 异步接收报告 Asynchronous Reception Report 响应预定义细则的接收报告,不响应校验点事件。 3.1.18 主接收报告 Primary Reception Report 响应自身触发的校验点事件以外的接收报告 , 具体包括非自身原因造成的所有异步接收报告和同步 接收报告。 3.1.19 辅助接收报告 Secondary Reception Report 响应自身造成的接收报告。 3.1.20 自限制因子 Self-Delimiting Numeric Value XX/T XXXXXXXXXII 5 旨在调解传输带宽花费
13、与潜在的功能扩展因子 、 网络规模扩展因子和传输负载扩展因子之间的关系 。 3.2 缩略语 BP 簇协议 Bundle Protocols DTN 延迟容忍网络 Delay-Tolerant Network EOB 数据块末尾 End of Block EORP 红区数据末尾 End of Red-Part LTP Licklider传输协议 Licklider Transmission Protocol SDNV 自限制因子 Self-Delimiting Numeric Value 4 LTP 协议的段结构 4.1 概述 每个 LTP 段都有三部分组成:头部定义、内容描述和尾部扩展,完整的
14、段结构如下所示: 图 1 段结构图 根据段描述的内容性质不同,设计四种基本段类型: XX/T XXXX-XXXX 6 数据段 发送方把客户服务数据发送给接收方。 报告段 接收方把数据块上下边界的数据接收声明信息发送给发送方。 报告应答段 发送方把接收到报告段的报告编号信息发送给接收方。 会话管理段 收发双方都可以生成的管理段, 包括两种子类型 : 取消会话段和取消会话应答段,其中,取消会话 段将初始化对端的会话取消流程, 创建单字节的原因代码来解释会话终止原因 ; 取消会话应答段消息体 无具体内容,用于应答取消会话段已收到。 4.2 段头部 LTP 段头部由三种数据结构组成:控制字节、 会话
15、ID 和扩展域。 控制字节长度为 1 字节, 由 4-bit 版本号和段类型标记组成 ; 当前的版本号为 0000, 段类型标记在 4.2.1 当中具体描述。 会话 ID 负责在发送方和接收方之间唯一标识会话, 由会话发起方 ID 和会话随机数组成。 扩展域内容将在 4.2.4 当中进行描述。 4.2.1 段类型标记 这部分信息位于段头部控制字节的最后 4 比特, 分别为 CTRL、 EXC、 Flag 1 和 Flag 0。 CTRL 值为 0 时,标识该段为数据段; 值为 1 时,标识该段为控制段。 数据段的 EXC 如果设为 0,该数据段标识为红区数据段, 如果 EXC 设为 1,该数据
16、段标识为绿区 数据段。 控制段的 EXC 如果设为 1,该控制段为会话取消段。 所有的数据段 , 如果 Flag 1 和 Flag 2 都设为 1, 标识为 EOB; 如果 Flag 1 和 Flag 0 都设为 0, 标识 数据不需要额外的协议信息。 红区数据段如果只有 1 个 Flag 值不为 0,这标识了校验点; 如果 Flag 1 设为 1, 这标识了 EORP。 4.2.2 段类型代码 不同段类型标记组成了不同的段类型代码,总结如下表: 表 1 段类型代码 XX/T XXXXXXXXXII 7 4.2.3 段的类掩码 从不同的段类型标记出发,可以得出段类型掩码: 表 2 段的类掩码
17、4.2.4 扩展域 XX/T XXXX-XXXX 8 扩展域实现了对 LTP 段的功能扩展,扩展域第一字节标识了段内扩展域的具体编号:前四位标识 了头部扩展的 TLV 编号 , 后四位标识了尾部中的 TLV 编号 。 每一个扩展域内容都包含一字节的扩展标 签用于标示扩展域类型,具体的扩展类型见下表: 表 3 LTP 扩展域 4.3 段内容 4.3.1 数据段 数据段内容由两部分组成:客户服务数据和接收客户服务的实例元数据。 SDNV 的客户服务 ID 标记了接收方需要处理的上层服务类型;在实现过程中, 通常指向某个具体的 TCP 端口号。 SDNV 偏移量 指示了会话传输数据块中,客户服务数据
18、的位置。 SDNV 长度 指示了客户服务数据的比特数。 SDNV 校验点序列号 唯一标识了校验点 ; 发送方发起的第一个校验点序列号应当选用随机值 ; 重传的校验点数据段,应 当选取与原始校验点数据段一致的数值。 SDNV 报告序列号 指示了为响应报告段而排入传输队列的校验点报告序列号。 客户服务数据 数据段携带的消息实体;从指定的数据块偏移量开始,拷贝一段客户数据服务消息。 4.3.2 报告段 报告段由若干项数据接收声明和数据块上下限组成。 XX/T XXXXXXXXXII 9 SDNV 的报告序列号 唯一标识了报告段;接收方发起的第一个报告段,其报告序列号应当为随机值,后续报告段序列号 在
19、前一个报告段序列号基础上加 1。 SDNV 的校验点序列号 标识了校验点的编号; SDNV 的上边界 标识了数据块前缀与报告段声明应答长度之和的位置。 SDNV 的下边界 标识了数据块前缀与报告段声明不应答长度之和的位置。 SDNV 的接收声明计数 报告段中接受声明的数量; 接收声明 包括两部分内容:偏移量和长度。 偏移量 标识了成功接收到数据相对于报告段下边界的位置。 长度 标识了成功接收到的数据块长度; 4.3.3 报告应答段 报告应答段负责应答报告段的报告序列号。 报告段序列号 应答报告段的序列号。 4.3.4 会话管理段 会话取消段需要携带 1 字节的原因代码,结构如下表: 表 4 会
20、话取消段的原因代码 XX/T XXXX-XXXX 10 4.4 段尾部 段尾部由 0 到 15 个 4.2.4 描述的扩展域结构组成。 5 LTP 协议的客户服务请求 5.1 会话传输请求 开始数据传输之前, 客户服务需要向 LTP 协议提供以下信息 : 目的端客户服务 ID、 目的端 LTP 引 擎 ID、待发送的客户服务数据、待发送的数据长度、红区数据长度。 LTP 协议对于有效传输请求的处理流程: 综合通信服务需求和应用优先级需求,按照逻辑实现算法对待发送数据进行细分。 标记最后一个数据段为 EOB 数据段。 5.2 会话取消请求 会话发送方和接收方需要获取客户服务提供的会话 ID 来发
21、起会话取消请求。 LTP 协议对于有效结束请求的处理流程: 启动内部会话关闭流程, 详见 7.20. 发送方如果主动关闭会话, 需要首先把本地 LTP 引擎 ID 设置为会话 ID: 接收方如果不识别这个会话 ID,直接执行会话关闭流程, 详见 7.21. XX/T XXXXXXXXXII 11 接收方如果识别这个会话 ID, 响应原因代码为 USR_CNCLD 的会话取消段排入发送队列 , 发 送给发送方。 接收方如果主动关闭会话: 发送方如果没有设置传输队列,直接执行会话关闭流程, 详见 7.21. 发送方如果设置了传输队列, 响应原因代码为 USR_CNCLD 的会话取消段排入发送队列,
22、发 送给接收方。 6 LTP 协议的执行环境需求 LTP 协议直接工作在数据链路层协议之上。 LTP 协议要求下层数据链路层协议具备以下特点: 需要向 LTP 协议周期性通报链路状态信息。 针对不同 LTP 协议报文设计链路状态因子,如:校验点报文、报告报文、红区数据末尾报文、数 据块末尾报文以及会话取消报文,并传输这些协议报文。 能够基于当前的请求距离,计算出超时间隔。 能够不传输不完整的 LTP 协议报文。 7 LTP 协议的内部处理流程 7.1 概述 内部处理流程描述了 LTP 协议在会话生命周期中 , 不同事件触发的内部处理流程 , 比如, LTP 引 擎收到协议报文的头部信息与本规范不一致,这个报文应当被认为是错误报文,直接丢弃。 7.2 传输开始 本地 LTP 引擎在接收到对端 LTP 引擎发送的 LTP 已启动的链路状态因子之后 , 触发传输开始流程 。 本地 LTP 响应行为:开始数据传输。 XX/T XXXX-XXXX 12 7.3 校验点计时器开启 本地 LTP 引擎在收到校验点移出传输队列的链路状态因子之后,触发校验点计时器开始计时。 本地 LTP 响应行为:计算本地收到报告段的时间,同时开启倒计时; 在本地计时器收到对端 LTP 引擎停止工作的同时