Skip to main content

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

3.2.1. ACK-on-Error Mode (ACK-on-Error 模式)

ACK-on-Error 模式支持具有可变 MTU 和无序交付的 L2 技术。它需要一个从重组器到分片器提供反馈路径的 L2。有关在准双向链路上使用 ACK-on-Error 模式的讨论, 请参见附录 F。

在 ACK-on-Error 模式中, 使用 windows (窗口)。

除了最后一个 tile (块) 和倒数第二个 tile 之外, 所有 tiles 必须具有相等的大小, 此后称为 "regular" (常规)。最后一个 tile 的大小必须小于或等于常规 tile 大小。关于倒数第二个 tile, Profile (配置文件) 必须选择以下两个选项之一:

  • 倒数第二个 tile 的大小必须是常规 tile 大小, 或

  • 倒数第二个 tile 的大小必须是常规 tile 大小或常规 tile 大小减去一个 L2 Word (L2 字)。

一个 SCHC Fragment 消息在其有效载荷中携带一个或多个连续的 tiles, 这些 tiles 可能跨越多个 windows。一个 SCHC Compound ACK 报告一个 window 的 tiles 或多个 windows 的 tiles 的接收情况, 每个都由其 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: 在 Tiles 中分片的 SCHC Packet, ACK-on-Error 模式 (RFC 8724 中的图 23)

W 字段足够宽, 以至于它明确地表示一个绝对的 window number。fragment receiver (分片接收器) 向 fragment sender (分片发送器) 发送关于缺少 tiles 的 windows 的 SCHC Compound ACKs。fragment receiver 不会为它知道已完全接收的 windows 发送 SCHC Compound ACK。

fragment sender 重新传输报告为缺失的 tiles 的 SCHC Fragments。即使在确定属于先前 windows 的所有 tiles 都已正确接收之前, 它也可以前进到下一个 windows, 并且它仍然可以稍后重新传输属于先前 windows 的 tiles 的 SCHC Fragments。因此, sender 和 receiver 可以以解耦的方式操作。分片的 SCHC Packet 传输在以下情况下结束:

  • 完整性检查显示分片的 SCHC Packet 已在接收端正确重组, 并且此信息已传回 sender,

  • 已进行太多重传尝试, 或

  • receiver 确定此分片 SCHC Packet 的传输已非活动太久。

每个 Profile 必须指定哪些 RuleID 值对应于在此模式下操作的 SCHC F/R 消息。

W 字段必须存在于 SCHC F/R 消息中。

每个 Profile, 对于每个 RuleID 值, 必须定义:

  • tile 大小 (tile 不需要是 L2 Word 的副本, 但它必须至少是 L2 Word 的大小),

  • M 的值,

  • N 的值,

  • WINDOW_SIZE 的值, 它必须严格小于 2^N,

  • RCS 字段的大小和算法,

  • T 的值,

  • MAX_ACK_REQUESTS 的值,

  • Retransmission Timer (重传计时器) 的到期时间,

  • Inactivity Timer (非活动计时器) 的到期时间,

  • 最后一个 tile 是在 Regular SCHC Fragment (常规 SCHC 分片) 还是 All-1 SCHC Fragment (All-1 SCHC 分片) 中携带 (参见第 3.2.1.1 节),

  • 倒数第二个 tile 可以比常规 tile 大小小一个 L2 Word (在这种情况下, 常规 tile 大小必须至少是 L2 Word 大小的两倍),

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

  • 是否在 SCHC Compound ACK 消息的最后一个 window 中使用 Compressed Bitmap (压缩位图) 格式。

对于每个活动的 RuleID 和 DTag 值对, sender 必须维护:

  • 一个 Attempts counter (尝试计数器) 和

  • 一个 Retransmission Timer (重传计时器)。

对于每个活动的 RuleID 和 DTag 值对, receiver 必须维护:

  • 一个 Attempts counter (尝试计数器) 和

  • 一个 Inactivity Timer (非活动计时器)。