跳到主要内容

3. IPv6 Header Compression

在本节中, 我们定义用于压缩 IPv6 header 的 LOWPAN_IPHC encoding format. 为实现有效 compression, LOWPAN_IPHC 依赖与整个 6LoWPAN 相关的信息. LOWPAN_IPHC 假定以下情况将是 6LoWPAN communication 的常见情况: Version 为 6; Traffic Class 和 Flow Label 均为零; Payload Length 可由较低层从 6LoWPAN Fragmentation header 或 IEEE 802.15.4 header 推断; Hop Limit 将由 source 设置为 well-known value; 分配给 6LoWPAN interfaces 的 addresses 将使用 link-local prefix 或分配给整个 6LoWPAN 的一小组 routable prefixes 形成; 分配给 6LoWPAN interfaces 的 addresses 使用直接从 64-bit extended 或 16-bit short IEEE 802.15.4 addresses 派生的 IID 形成.

 +-------------------------------------+----------------------------
| Dispatch + LOWPAN_IPHC (2-3 octets) | In-line IPv6 Header Fields
+-------------------------------------+----------------------------

Figure 1: LOWPAN_IPHC Header

LOWPAN_IPHC encoding 使用 13 bits, 其中 5 bits 取自 dispatch type 的最右 bits. 该 encoding 可以通过另一个 octet 扩展, 以支持 additional contexts. 如 Figure 1 所示, 任何以内联方式携带的 uncompressed IPv6 header fields 信息都跟随在 LOWPAN_IPHC encoding 之后. 在最佳情况下, 对于 link-local communication, LOWPAN_IPHC 可以将 IPv6 header 压缩到两个 octets (dispatch octet 和 LOWPAN_IPHC encoding).

在通过多个 IP hops 路由时, LOWPAN_IPHC 可以将 IPv6 header 压缩到 7 octets (1-octet dispatch, 1-octet LOWPAN_IPHC, 1-octet Hop Limit, 2-octet Source Address 和 2-octet Destination Address). Hop Limit 可能无法压缩, 因为它需要在每一 hop 递减, 并且可以取任意值. 必须对 source 和 destination IPv6 addresses 应用 stateful address compression, 因为它们在 intermediate hops 上不会 statelessly 匹配 source 和 destination link-layer addresses.