Skip to main content

3.1. SCHC Compound ACK Message Format (SCHC 复合确认消息格式)

3.1. SCHC Compound ACK Message Format (SCHC 复合确认消息格式)

图 1 显示了成功的 SCHC ACK 格式, 即当所有 fragments (分片) 都被正确接收时 (C=1), 如 [RFC8724] 中所定义。

              |--- SCHC ACK Header ---|
| |--T-|--M--| 1 |
+--------+----+-----+---+~~~~~~~~~~~~~~~~~~
| RuleID |DTag| W |C=1| padding as needed
+--------+----+-----+---+~~~~~~~~~~~~~~~~~~

图 1: SCHC 成功 ACK 消息格式, 如 RFC 8724 中所定义

如果在 SCHC Packet 的任何 windows (窗口) 中发现 SCHC Fragment 丢失, 则可以使用 SCHC Compound ACK。SCHC Compound ACK 消息格式如图 2 和图 3 所示。

 |--- SCHC ACK Header --|- W=w1 -|...|---- W=wi -----|
|--T-|---M--|-1-| |...|---M--| |---M--|
+------+----+------+---+--------+...+------+--------+------+~~~~~+
|RuleID|DTag| W=w1 |C=0| Bitmap |...| W=wi | Bitmap |00..00| pad |
+------+----+------+---+--------+...+------+--------+------+~~~~~+
next L2 Word boundary ->|<-- L2 Word ->|

图 2: SCHC Compound ACK 消息格式。在 windows W = w1,...,wi 中发现丢失, 其中 w1 < w2 <...< wi

SCHC Compound ACK 将 window number (窗口号) (W) 与其对应的 bitmap (位图) 分组。Window numbers 不需要是连续的。但是, SCHC Compound ACK 消息中包含的 window numbers 及其对应的 bitmaps 必须按照从编号最低的 window 到编号最高的 window 的顺序排列。因此, 如果 window number 零的 bitmap 存在于 SCHC Compound ACK 消息中, 它必须始终是第一个, 并且其 window number 必须放置在 SCHC ACK Header 中。

如果在消息中最后一个 bitmap 之后需要 M 个或更多的 padding (填充) bits 来填充最后一个 layer two (L2,第二层) Word, 则必须在最后一个 bitmap 之后附加 M 个值为 0 的 bits, 然后根据需要应用 padding (参见图 2)。由于 window number 0 (如果存在于消息中) 被放置为 w1, 因此设置为零的 M 个 bits 不会与 window number 0 混淆; 因此, 它们表示 SCHC Compound ACK 消息的结束。

图 3 显示了当所需的 padding bits 严格小于 M bits 的情况。在这种情况下, L2 Maximum Transmission Unit (MTU,最大传输单元) 不为任何额外的 window value 留有空间, 更不用说任何 bitmap 了, 从而表示 SCHC Compound ACK 消息的结束。

 |--- SCHC ACK Header --|- W=w1 -|...|---- W=wi -----|
|--T-|---M--|-1-| |...|---M--| |---M--|
+------+----+------+---+--------+...+------+--------+~~~+
|RuleID|DTag| W=w1 |C=0| Bitmap |...| W=wi | Bitmap |pad|
+------+----+------+---+--------+...+------+--------+~~~+
next L2 Word boundary ->|

图 3: 小于 M 个 Padding Bits 的 SCHC Compound ACK 消息格式。在 windows W = w1,...,wi 中发现丢失, 其中 w1 < w2 <...< wi

SCHC Compound ACK 绝对不能对中间 windows/bitmaps (即不是 SCHC Compound ACK 消息中最后一个的 bitmaps) 使用 Compressed Bitmap (压缩位图) 格式; 因此, 中间 bitmap 字段的大小必须为 WINDOW_SIZE。因此, SCHC Compound ACK 可以仅对消息中的最后一个 bitmap 使用 Compressed Bitmap 格式。对最后一个 bitmap 使用此 Compressed Bitmap 的可选性必须由技术特定的 SCHC Profile (配置文件) 指定。

最后一个 bitmap 被有效压缩的情况对应于图 3, 最后一个 bitmap (根据构造) 在 L2 Word 边界处结束, 因此根本不需要 padding。

图 4 展示了 SCHC Compound ACK 的 bitmap 压缩示例, 其中最后一个 window (wi) 的 bitmap 表明第一个 tile (块) 未被正确接收。由于压缩算法导致了有效的压缩, 因此不需要 padding。

 |--- SCHC ACK Header --|- W=w1 -|...|-------- W=wi -------|
|--T-|---M--|-1-| |...|---M--|
+------+----+------+---+--------+...+------+--------------+
|RuleID|DTag| W=w1 |C=0| Bitmap |...| W=wi |0 1 1 1 1 1 1 |
+------+----+------+---+--------+...+------+--------------+
next L2 Word boundary ->|

具有未压缩 Bitmap 的 SCHC Compound ACK

|--- SCHC ACK Header --|- W=w1 -|...|-- W=wi --|
|--T-|---M--|-1-| |...|---M--|
+------+----+------+---+--------+...+------+---+
|RuleID|DTag| W=w1 |C=0| Bitmap |...| W=wi |0 1|
+------+----+------+---+--------+...+------+---+
next L2 Word boundary ->|

传输的具有压缩 Bitmap 的 SCHC Compound ACK

图 4: 具有压缩 Bitmap 且不添加 Padding 的 SCHC Compound ACK 消息格式。在 windows W = w1,...,wi 中发现丢失, 其中 w1 < w2 <...< wi

图 5 展示了 SCHC Compound ACK 的另一个 bitmap 压缩示例, 其中最后一个 window (wi) 的 bitmap 表明第二个和第四个 tiles 未被正确接收。在此示例中, 压缩算法不会导致最后一个 bitmap 的有效压缩。此外, 由于需要多于 M 个 bits 的 padding 来填充最后一个 L2 Word, 因此在应用 padding 之前, 会将 M 个值为 0 的 bits 附加到消息中。

|--- SCHC ACK Header --|-W=w1-|...|-------- W=wi -------|
|--T-|---M--|-1-| |...|---M--|
+------+----+------+---+------+...+------+--------------+
|RuleID|DTag| W=w1 |C=0|Bitmap|...| W=wi |1 0 1 0 1 1 1 |
+------+----+------+---+------+...+------+--------------+
next L2 Word boundary ->|

具有未压缩 Bitmap 的 SCHC Compound ACK

|--- SCHC ACK Header --|-W=w1-|...|-------- W=wi -------|
|--T-|---M--|-1-| |...|---M--| |---M--|
+------+----+------+---+------+...+------+--------------+------+~~~+
|RuleID|DTag| W=w1 |C=0|Bitmap|...| W=wi |1 0 1 0 1 1 1 |00..00|pad|
+------+----+------+---+------+...+------+--------------+------+~~~+
next L2 Word boundary ->|<------ L2 Word ------>|

传输的 SCHC Compound ACK

图 5: 添加 Padding 以达到 L2 边界的具有压缩 Bitmap 的 SCHC Compound ACK 消息格式。在 windows W = w1,...,wi 中发现丢失, 其中 w1 < w2 <...< wi

如果 SCHC sender (发送器) 收到具有无效 window numbers 的 SCHC Compound ACK, 例如重复的 W 值或尚未发送的 W 值, 它必须丢弃整个 SCHC Compound ACK 消息。

注意: SCHC Compound ACKs 可以与 Receiver-Abort (接收器中止) 消息区分开来, 其方式与常规 SCHC ACKs 可以区分的方式相同, 因为 Receiver-Abort 模式永远不会出现在合法的 SCHC Compound ACK [RFC8724] 中。