Zum Hauptinhalt springen

5. LoWPAN Adaptation Layer and Frame Format (LoWPAN适配层和帧格式)

本节中定义的封装格式 (Encapsulation Formats, 后续称为 "LoWPAN 封装") 是 IEEE 802.15.4 MAC 协议数据单元 (Protocol Data Unit, PDU) 中的有效载荷. LoWPAN 有效载荷 (例如, 一个 IPv6 数据包) 紧跟在该封装报文头之后.

所有通过 IEEE 802.15.4 传输的 LoWPAN 封装数据报 (Datagrams) 都以一个封装报文头栈 (Encapsulation Header Stack) 作为前缀. 报文头栈中的每个报文头包含一个报文头类型 (Header Type), 后跟零个或多个报文头字段. 在 IPv6 报文头中, 栈将按以下顺序包含: 寻址 (Addressing)、逐跳选项 (Hop-by-Hop Options)、路由 (Routing)、Fragmentierung (Fragmentation)、目标选项 (Destination Options), 最后是有效载荷 [RFC2460]; 在 LoWPAN 报文头中, 类似的报文头序列是网状网络 (L2) 寻址、逐跳选项 (包括 L2 Broadcast/Multicast)、Fragmentierung, 最后是有效载荷.

典型报文头栈示例:

LoWPAN 封装的 IPv6 数据报:

+---------------+-------------+---------+
| IPv6 Dispatch | IPv6 Header | Payload |
+---------------+-------------+---------+

需要网状网络寻址和分片的情况:

+-------+-------+-------+-------+---------+---------+---------+
| M Typ | M Hdr | F Typ | F Hdr | HC1 Dsp | HC1 Hdr | Payload |
+-------+-------+-------+-------+---------+---------+---------+

当在同一数据包中使用多个 LoWPAN 报文头时, 它们必须 (MUST) 按以下顺序出现: 网状网络寻址报文头、广播报文头、分片报文头.

5.1. Dispatch Type and Header (分派类型和报文头)

分派类型由前两位 "01" Definitionen, 6比特选择器标识紧随其后的报文头类型.

分派值比特模式:

  • 00 xxxxxx - NALP: 不是 LoWPAN 帧
  • 01 000001 - IPv6: 未压缩的 IPv6 地址
  • 01 000010 - LOWPAN_HC1: HC1 压缩的 IPv6
  • 01 010000 - LOWPAN_BC0: BC0 广播
  • 01 111111 - ESC: 附加分派字节
  • 10 xxxxxx - MESH: 网状网络报文头
  • 11 000xxx - FRAG1: 首个分片报文头
  • 11 100xxx - FRAGN: 后续分片报文头

5.2. Mesh Addressing Type and Header (网状网络寻址类型和报文头)

网状网络类型由前两位 "10" Definitionen:

|1 0|V|F|HopsLft| originator address, final address

字段定义:

  • V: 1比特, 0表示发起者地址为64位, 1表示16位短地址
  • F: 1比特, 0表示最终目标地址为64位, 1表示16位短地址
  • Hops Left: 4比特, 每转发一次递减, 为0时丢弃. 0xF表示后续有8比特扩展字段
  • Originator Address: 发起者的链路层地址
  • Final Destination Address: 最终目标的链路层地址

5.3. Fragmentation Type and Header (分片类型和报文头)

如果数据报不适合单个 802.15.4 帧, 应 (SHALL) 分解为链路分片. 除最后一个外, 所有分片必须 (MUST) 是8字节的倍数.

首个分片报文头 (FRAG1):

|1 1 0 0 0| datagram_size | datagram_tag |

后续分片报文头 (FRAGN):

|1 1 1 0 0| datagram_size | datagram_tag |
|datagram_offset|

字段定义:

  • datagram_size: 11比特, 编码整个IP数据包大小 (链路层分片前). 对于IPv6, 值为Payload Length + 40
  • datagram_tag: 16比特, 同一数据报的所有分片具有相同标签, 发送者为连续数据报递增此值
  • datagram_offset: 8比特, 以8字节为单位的分片偏移量, 仅出现在后续分片中

重组规则:

接收者使用以下信息识别属于同一数据报的分片:

  1. 发送者的802.15.4源地址 (或网状网络发起者地址)
  2. 目标的802.15.4地址 (或网状网络最终目标地址)
  3. datagram_size
  4. datagram_tag

重组超时必须 (MUST) 设置为最多60秒. 检测到解除关联事件时, muss (MUST) 丢弃所有部分重组的分片.