跳到主要内容

3.2.1. ACK-on-Error 模式 (替代 RFC 8724 第 8.4.3 节)

3.2.1. ACK-on-Error 模式

ACK-on-Error 模式支持具有可变 MTU 和乱序交付能力的 L2 技术. 它要求 L2 提供一条从重组器 (reassembler) 到分片器 (fragmenter) 的反馈路径. 关于在准双向链路上使用 ACK-on-Error 模式的讨论, 见 Appendix F.

在 ACK-on-Error 模式中, 会使用 window.

除最后一个 tile 和倒数第二个 tile 外, 所有 tile MUST 具有相同大小, 下文称为 "regular". 最后一个 tile 的大小 MUST 小于或等于 regular tile size. 对于倒数第二个 tile, Profile MUST 从以下两个选项中选择一个:

  • 倒数第二个 tile size MUST 为 regular tile size, 或

  • 倒数第二个 tile size MUST 为 regular tile size, 或 regular tile size 减去一个 L2 Word.

一个 SCHC Fragment 消息携带一个或多个连续 tile, 这些 tile 可以跨越多个 window. 一个 SCHC Compound ACK 报告一个 window 或多个 window 中 tile 的接收情况, 每个 window 都由其 window number 标识.

示例见图 6 (见 RFC 8724 的图 23).

       +---------------------------------------------...-----------+
| SCHC Packet |
+---------------------------------------------...-----------+

Tile# | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | | 0 | 4 |3|
Window# |-------- 0 --------|-------- 1 --------|- 2 ... 27 -|- 28-|


SCHC Fragment msg |-----------|

图 6: ACK-on-Error 模式中被分片为 tile 的 SCHC Packet (RFC 8724 中的图 23)

W 字段足够宽, 可以无歧义地表示绝对 window number. Fragment 接收方会向 fragment 发送方发送 SCHC Compound ACK, 报告存在 tile 缺失的 window. 对于它已知已完整接收的 window, fragment 接收方不会发送 SCHC Compound ACK.

Fragment 发送方会针对被报告为缺失的 tile 重传 SCHC Fragment. 即使尚未确认属于先前 window 的所有 tile 都已被正确接收, 它也可以推进到后续 window, 并且之后仍可重传包含先前 window 中 tile 的 SCHC Fragment. 因此, 发送方和接收方可以以解耦方式运行. 被分片的 SCHC Packet 传输在以下情况下结束:

  • 完整性检查表明被分片的 SCHC Packet 已在接收端正确重组, 且该信息已传回发送方,

  • 重传尝试次数过多, 或

  • 接收方判定该被分片 SCHC Packet 的传输已处于非活动状态过长时间.

每个 Profile MUST 指定哪些 RuleID value 对应于在该模式下运行的 SCHC F/R 消息.

W 字段 MUST 出现在 SCHC F/R 消息中.

对于每个 RuleID value, 每个 Profile MUST 定义:

  • tile size (tile 不需要是 L2 Word 的副本, 但其大小 MUST 至少为一个 L2 Word),

  • M 的值,

  • N 的值,

  • WINDOW_SIZE 的值, 该值 MUST 严格小于 2^N,

  • RCS 字段的大小和算法,

  • T 的值,

  • MAX_ACK_REQUESTS 的值,

  • Retransmission Timer 的到期时间,

  • Inactivity Timer 的到期时间,

  • 最后一个 tile 是由 Regular SCHC Fragment 还是 All-1 SCHC Fragment 携带 (见第 3.2.1.1 节),

  • 倒数第二个 tile 是否 MAY 比 regular tile size 小一个 L2 Word (在这种情况下, regular tile size MUST 至少为 L2 Word size 的两倍),

  • 是否使用 SCHC Compound ACK 消息, 以及

  • 是否在 SCHC Compound ACK 消息的最后一个 window 中使用 Compressed Bitmap 格式.

对于每个活动的 RuleID 和 DTag value 对, 发送方 MUST 维护:

  • 一个 Attempts counter, 以及

  • 一个 Retransmission Timer.

对于每个活动的 RuleID 和 DTag value 对, 接收方 MUST 维护:

  • 一个 Attempts counter, 以及

  • 一个 Inactivity Timer.