< draft-ietf-6lowpan-format   rfc4944.txt 
Network Working Group G. Montenegro Network Working Group G. Montenegro
Internet-Draft Microsoft Corporation Request for Comments: 4944 Microsoft Corporation
Intended status: Standards Track N. Kushalnagar Category: Standards Track N. Kushalnagar
Expires: October 4, 2007 Intel Corp Intel Corp
J. Hui J. Hui
D. Culler D. Culler
Arch Rock Corp Arch Rock Corp
April 2, 2007 September 2007
Transmission of IPv6 Packets over IEEE 802.15.4 Networks Transmission of IPv6 Packets over IEEE 802.15.4 Networks
draft-ietf-6lowpan-format-13
Status of this Memo
By submitting this Internet-Draft, each author represents that any Status of This Memo
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on October 4, 2007.
Copyright Notice
Copyright (C) The IETF Trust (2007). This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract Abstract
This document describes the frame format for transmission of IPv6 This document describes the frame format for transmission of IPv6
packets and the method of forming IPv6 link-local addresses and packets and the method of forming IPv6 link-local addresses and
statelessly autoconfigured addresses on IEEE 802.15.4 networks. statelessly autoconfigured addresses on IEEE 802.15.4 networks.
Additional specifications include a simple header compression scheme Additional specifications include a simple header compression scheme
using shared context and provisions for packet delivery in IEEE using shared context and provisions for packet delivery in IEEE
802.15.4 meshes. 802.15.4 meshes.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements notation . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Notation . . . . . . . . . . . . . . . . . . 3
1.2. Terms used . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Terms Used . . . . . . . . . . . . . . . . . . . . . . . . 3
2. IEEE 802.15.4 mode for IP . . . . . . . . . . . . . . . . . . 3 2. IEEE 802.15.4 Mode for IP . . . . . . . . . . . . . . . . . . 3
3. Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . 4 3. Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . 4
4. Maximum Transmission Unit . . . . . . . . . . . . . . . . . . 5 4. Maximum Transmission Unit . . . . . . . . . . . . . . . . . . 5
5. LoWPAN Adaptation Layer and Frame Format . . . . . . . . . . . 6 5. LoWPAN Adaptation Layer and Frame Format . . . . . . . . . . . 6
5.1. Dispatch Type and Header . . . . . . . . . . . . . . . . . 8 5.1. Dispatch Type and Header . . . . . . . . . . . . . . . . . 8
5.2. Mesh Addressing Type and Header . . . . . . . . . . . . . 9 5.2. Mesh Addressing Type and Header . . . . . . . . . . . . . 10
5.3. Fragmentation Type and Header . . . . . . . . . . . . . . 10 5.3. Fragmentation Type and Header . . . . . . . . . . . . . . 11
6. Stateless Address Autoconfiguration . . . . . . . . . . . . . 12 6. Stateless Address Autoconfiguration . . . . . . . . . . . . . 13
7. IPv6 Link Local Address . . . . . . . . . . . . . . . . . . . 13 7. IPv6 Link Local Address . . . . . . . . . . . . . . . . . . . 14
8. Unicast Address Mapping . . . . . . . . . . . . . . . . . . . 13 8. Unicast Address Mapping . . . . . . . . . . . . . . . . . . . 14
9. Multicast Address Mapping . . . . . . . . . . . . . . . . . . 15 9. Multicast Address Mapping . . . . . . . . . . . . . . . . . . 16
10. Header Compression . . . . . . . . . . . . . . . . . . . . . . 15 10. Header Compression . . . . . . . . . . . . . . . . . . . . . . 16
10.1. Encoding of IPv6 Header Fields . . . . . . . . . . . . . . 16 10.1. Encoding of IPv6 Header Fields . . . . . . . . . . . . . . 17
10.2. Encoding of UDP Header Fields . . . . . . . . . . . . . . 18 10.2. Encoding of UDP Header Fields . . . . . . . . . . . . . . 19
10.3. Non-Compressed Fields . . . . . . . . . . . . . . . . . . 19 10.3. Non-Compressed Fields . . . . . . . . . . . . . . . . . . 21
10.3.1. Non-Compressed IPv6 Fields . . . . . . . . . . . . . 19 10.3.1. Non-Compressed IPv6 Fields . . . . . . . . . . . . . 21
10.3.2. Non-Compressed and partially compressed UDP fields . 20 10.3.2. Non-Compressed and Partially Compressed UDP Fields . 21
11. Frame Delivery in a Link-Layer Mesh . . . . . . . . . . . . . 20 11. Frame Delivery in a Link-Layer Mesh . . . . . . . . . . . . . 21
11.1. LoWPAN Broadcast . . . . . . . . . . . . . . . . . . . . . 21 11.1. LoWPAN Broadcast . . . . . . . . . . . . . . . . . . . . . 23
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23
13. Security Considerations . . . . . . . . . . . . . . . . . . . 23 13. Security Considerations . . . . . . . . . . . . . . . . . . . 25
14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 24 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25
15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24 15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26
15.1. Normative References . . . . . . . . . . . . . . . . . . . 24 15.1. Normative References . . . . . . . . . . . . . . . . . . . 26
15.2. Informative References . . . . . . . . . . . . . . . . . . 25 15.2. Informative References . . . . . . . . . . . . . . . . . . 26
Appendix A. Alternatives for Delivery of Frames in a Mesh . . . . 25 Appendix A. Alternatives for Delivery of Frames in a Mesh . . . . 28
Appendix B. Changes . . . . . . . . . . . . . . . . . . . . . . . 26
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 30
Intellectual Property and Copyright Statements . . . . . . . . . . 31
1. Introduction 1. Introduction
The IEEE 802.15.4 standard [ieee802.15.4] targets low power personal The IEEE 802.15.4 standard [ieee802.15.4] targets low-power personal
area networks. This document defines the frame format for area networks. This document defines the frame format for
transmission of IPv6 [RFC2460] packets as well as the formation of transmission of IPv6 [RFC2460] packets as well as the formation of
IPv6 link-local addresses and statelessly autoconfigured addresses on IPv6 link-local addresses and statelessly autoconfigured addresses on
top of IEEE 802.15.4 networks. Since IPv6 requires support of packet top of IEEE 802.15.4 networks. Since IPv6 requires support of packet
sizes much larger than the largest IEEE 802.15.4 frame size, an sizes much larger than the largest IEEE 802.15.4 frame size, an
adaptation layer is defined. This document also defines mechanisms adaptation layer is defined. This document also defines mechanisms
for header compression required to make IPv6 practical on IEEE for header compression required to make IPv6 practical on IEEE
802.15.4 networks, and the provisions required for packet delivery in 802.15.4 networks, and the provisions required for packet delivery in
IEEE 802.15.4 meshes. However, a full specification of mesh routing IEEE 802.15.4 meshes. However, a full specification of mesh routing
(the specific protocol used, the interactions with neighbor (the specific protocol used, the interactions with neighbor
discovery, etc) is out of scope of this document. discovery, etc) is out of the scope of this document.
1.1. Requirements notation 1.1. Requirements Notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
1.2. Terms used 1.2. Terms Used
AES: Advanced Encryption Scheme AES: Advanced Encryption Scheme
CSMA/CA: Carrier Sense Multiple Access / Collision Avoidance CSMA/CA: Carrier Sense Multiple Access / Collision Avoidance
FFD: Full Function Device FFD: Full Function Device
GTS: Guaranteed Time Service GTS: Guaranteed Time Service
MTU: Maximum Transmission Unit MTU: Maximum Transmission Unit
MAC: Media Access Control MAC: Media Access Control
PAN: Personal Area Network PAN: Personal Area Network
RFD: Reduced Function Device RFD: Reduced Function Device
2. IEEE 802.15.4 mode for IP 2. IEEE 802.15.4 Mode for IP
IEEE 802.15.4 defines four types of frames: beacon frames, MAC IEEE 802.15.4 defines four types of frames: beacon frames, MAC
command frames, acknowledgement frames and data frames. IPv6 packets command frames, acknowledgement frames, and data frames. IPv6
MUST be carried on data frames. Data frames may optionally request packets MUST be carried on data frames. Data frames may optionally
that they be acknowledged. In keeping with [RFC3819] it is request that they be acknowledged. In keeping with [RFC3819], it is
recommended that IPv6 packets be carried in frames for which recommended that IPv6 packets be carried in frames for which
acknowledgements are requested so as to aid link-layer recovery. acknowledgements are requested so as to aid link-layer recovery.
IEEE 802.15.4 networks can either be nonbeacon-enabled or beacon- IEEE 802.15.4 networks can either be nonbeacon-enabled or beacon-
enabled [ieee802.15.4]. The latter is an optional mode in which enabled [ieee802.15.4]. The latter is an optional mode in which
devices are synchronized by a so-called coordinator's beacons. This devices are synchronized by a so-called coordinator's beacons. This
allows the use of superframes within which a contention-free allows the use of superframes within which a contention-free
Guaranteed Time Service (GTS) is possible. This document does not Guaranteed Time Service (GTS) is possible. This document does not
require that IEEE networks run in beacon-enabled mode. In nonbeacon- require that IEEE networks run in beacon-enabled mode. In nonbeacon-
enabled networks, data frames (including those carrying IPv6 packets) enabled networks, data frames (including those carrying IPv6 packets)
are sent via the contention-based channel access method of unslotted are sent via the contention-based channel access method of unslotted
CSMA/CA. CSMA/CA.
skipping to change at page 4, line 34 skipping to change at page 4, line 25
IEEE 802.15.4 defines several addressing modes: it allows the use of IEEE 802.15.4 defines several addressing modes: it allows the use of
either IEEE 64-bit extended addresses or (after an association event) either IEEE 64-bit extended addresses or (after an association event)
16-bit addresses unique within the PAN [ieee802.15.4]. This document 16-bit addresses unique within the PAN [ieee802.15.4]. This document
supports both 64-bit extended addresses, and 16-bit short addresses. supports both 64-bit extended addresses, and 16-bit short addresses.
For use within 6LoWPANs, this document imposes additional constraints For use within 6LoWPANs, this document imposes additional constraints
(beyond those imposed by IEEE 802.15.4) on the format of the 16-bit (beyond those imposed by IEEE 802.15.4) on the format of the 16-bit
short addresses, as specified in Section 12. Short addresses being short addresses, as specified in Section 12. Short addresses being
transient in nature, a word of caution is in order: since they are transient in nature, a word of caution is in order: since they are
doled out by the PAN coordinator function during an association doled out by the PAN coordinator function during an association
event, their validity and uniqueness is limited by the lifetime of event, their validity and uniqueness is limited by the lifetime of
that association. This can be cut short by expiration of the that association. This can be cut short by the expiration of the
association or simply by any mishap occurring to the PAN coordinator. association or simply by any mishap occurring to the PAN coordinator.
Because of the scalability issues posed by such a centralized Because of the scalability issues posed by such a centralized
allocation and single point of failure at the PAN coordinator, allocation and single point of failure at the PAN coordinator,
deployers should carefully weigh the tradeoffs (and implement the deployers should carefully weigh the tradeoffs (and implement the
necessary mechanisms) of growing such networks based on short necessary mechanisms) of growing such networks based on short
addresses. Of course, IEEE 64-bit extended addresses may not suffer addresses. Of course, IEEE 64-bit extended addresses may not suffer
from these drawbacks, but still share the remaining scalability from these drawbacks, but still share the remaining scalability
issues concerning routing, discovery, configuration, etc. issues concerning routing, discovery, configuration, etc.
This document assumes that a PAN maps to a specific IPv6 link. This This document assumes that a PAN maps to a specific IPv6 link. This
complies with the recommendation that shared networks support link- complies with the recommendation that shared networks support link-
layer subnet [RFC3819] broadcast. Strictly speaking, it is multicast layer subnet [RFC3819] broadcast. Strictly speaking, it is multicast
not broadcast that exists in IPv6. However, multicast is not not broadcast that exists in IPv6. However, multicast is not
supported natively in IEEE 802.15.4. Hence, IPv6 level multicast supported natively in IEEE 802.15.4. Hence, IPv6 level multicast
packets MUST be carried as link-layer broadcast frames in IEEE packets MUST be carried as link-layer broadcast frames in IEEE
802.15.4 networks. This MUST be done such that the broadcast frames 802.15.4 networks. This MUST be done such that the broadcast frames
are only heeded by devices within the specific PAN of the link in are only heeded by devices within the specific PAN of the link in
question. As per section 7.5.6.2 in [ieee802.15.4], this is question. As per Section 7.5.6.2 in [ieee802.15.4], this is
accomplished as follows: accomplished as follows:
1. A destination PAN identifier is included in the frame, and it 1. A destination PAN identifier is included in the frame, and it
MUST match the PAN ID of the link in question. MUST match the PAN ID of the link in question.
2. A short destination address is included in the frame, and it MUST 2. A short destination address is included in the frame, and it MUST
match the broadcast address (0xffff). match the broadcast address (0xffff).
Additionally, support for mapping of IPv6 multicast addresses per Additionally, support for mapping of IPv6 multicast addresses per
Section 9 MUST only be used in a mesh configuration. A full Section 9 MUST only be used in a mesh configuration. A full
specification of such functionality is out of scope of this document. specification of such functionality is out of the scope of this
document.
As usual, hosts learn IPv6 prefixes via router advertisements as per As usual, hosts learn IPv6 prefixes via router advertisements as per
[I-D.ietf-ipv6-2461bis]. [RFC4861].
4. Maximum Transmission Unit 4. Maximum Transmission Unit
The MTU size for IPv6 packets over IEEE 802.15.4 is 1280 octets. The MTU size for IPv6 packets over IEEE 802.15.4 is 1280 octets.
However, a full IPv6 packet does not fit in an IEEE 802.15.4 frame. However, a full IPv6 packet does not fit in an IEEE 802.15.4 frame.
802.15.4 protocol data units have different sizes depending on how 802.15.4 protocol data units have different sizes depending on how
much overhead is present [ieee802.15.4]. Starting from a maximum much overhead is present [ieee802.15.4]. Starting from a maximum
physical layer packet size of 127 octets (aMaxPHYPacketSize) and a physical layer packet size of 127 octets (aMaxPHYPacketSize) and a
maximum frame overhead of 25 (aMaxFrameOverhead), the resultant maximum frame overhead of 25 (aMaxFrameOverhead), the resultant
maximum frame size at the media access control layer is 102 octets. maximum frame size at the media access control layer is 102 octets.
Link-layer security imposes further overhead, which in the maximum Link-layer security imposes further overhead, which in the maximum
case (21 octets of overhead in the AES-CCM-128 case, versus 9 and 13 case (21 octets of overhead in the AES-CCM-128 case, versus 9 and 13
for AES-CCM-32 and AES-CCM-64, respectively) leaves only 81 octets for AES-CCM-32 and AES-CCM-64, respectively) leaves only 81 octets
available. This is obviously far below the minimum IPv6 packet size available. This is obviously far below the minimum IPv6 packet size
of 1280 octets, and in keeping with section 5 of the IPv6 of 1280 octets, and in keeping with Section 5 of the IPv6
specification [RFC2460], a fragmention and reassembly adaptation specification [RFC2460], a fragmention and reassembly adaptation
layer must be provided at the layer below IP. Such a layer is layer must be provided at the layer below IP. Such a layer is
defined below in Section 5. defined below in Section 5.
Furthermore, since the IPv6 header is 40 octets long, this leaves Furthermore, since the IPv6 header is 40 octets long, this leaves
only 41 octets for upper-layer protocols, like UDP. The latter uses only 41 octets for upper-layer protocols, like UDP. The latter uses
8 octets in the header which leaves only 33 octets for application 8 octets in the header which leaves only 33 octets for application
data. Additionally, as pointed out above, there is a need for a data. Additionally, as pointed out above, there is a need for a
fragmentation and reassembly layer, which will use even more octets. fragmentation and reassembly layer, which will use even more octets.
The above considerations lead to the following two observations: The above considerations lead to the following two observations:
1. The adaptation layer must be provided to comply with IPv6 1. The adaptation layer must be provided to comply with the IPv6
requirements of minimum MTU. However, it is expected that (a) requirements of a minimum MTU. However, it is expected that (a)
most applications of IEEE 802.15.4 will not use such large most applications of IEEE 802.15.4 will not use such large
packets, and (b) small application payloads in conjunction with packets, and (b) small application payloads in conjunction with
proper header compression will produce packets that fit within a the proper header compression will produce packets that fit
single IEEE 802.15.4 frame. The justification for this within a single IEEE 802.15.4 frame. The justification for this
adaptation layer is not just for IPv6 compliance, as it is quite adaptation layer is not just for IPv6 compliance, as it is quite
likely that the packet sizes produced by certain application likely that the packet sizes produced by certain application
exchanges (e.g., configuration or provisioning) may require a exchanges (e.g., configuration or provisioning) may require a
small number of fragments. small number of fragments.
2. Even though the above space calculation shows the worst case 2. Even though the above space calculation shows the worst-case
scenario, it does point out the fact that header compression is scenario, it does point out the fact that header compression is
compelling to the point of almost being unavoidable. Since we compelling to the point of almost being unavoidable. Since we
expect that most (if not all) applications of IP over IEEE expect that most (if not all) applications of IP over IEEE
802.15.4 will make use of header compression, it is defined below 802.15.4 will make use of header compression, it is defined below
in Section 10. in Section 10.
5. LoWPAN Adaptation Layer and Frame Format 5. LoWPAN Adaptation Layer and Frame Format
The encapsulation formats defined in this section, (subsequently The encapsulation formats defined in this section (subsequently
referred to as the "LoWPAN encapsulation") are the payload in the referred to as the "LoWPAN encapsulation") are the payload in the
IEEE 802.15.4 MAC protocol data unit (PDU). The LoWPAN payload IEEE 802.15.4 MAC protocol data unit (PDU). The LoWPAN payload
(e.g., an IPv6 packet) follows this encapsulation header. (e.g., an IPv6 packet) follows this encapsulation header.
All LoWPAN encapsulated datagrams transported over IEEE 802.15.4 are All LoWPAN encapsulated datagrams transported over IEEE 802.15.4 are
prefixed by an encapsulation header stack. Each header in the header prefixed by an encapsulation header stack. Each header in the header
stack contains a header type followed zero or more header fields. stack contains a header type followed by zero or more header fields.
Whereas in an IPv6 header the stack would contain, in order, Whereas in an IPv6 header the stack would contain, in the following
addressing, hop-by-hop options, routing, fragmentation, destination order, addressing, hop-by-hop options, routing, fragmentation,
options, and finally payload [RFC2460]; in a LoWPAN header the destination options, and finally payload [RFC2460]; in a LoWPAN
analogous header sequence is mesh (L2) addressing, hop-by-hop options header, the analogous header sequence is mesh (L2) addressing, hop-
(including L2 broadcast/multicast), fragmentation, and finally by-hop options (including L2 broadcast/multicast), fragmentation, and
payload. These examples show typical header stacks that may be used finally payload. These examples show typical header stacks that may
in a LoWPAN network. be used in a LoWPAN network.
A LoWPAN encapsulated IPv6 datagram: A LoWPAN encapsulated IPv6 datagram:
+---------------+-------------+---------+ +---------------+-------------+---------+
| IPv6 Dispatch | IPv6 Header | Payload | | IPv6 Dispatch | IPv6 Header | Payload |
+---------------+-------------+---------+ +---------------+-------------+---------+
A LoWPAN encapsulated LOWPAN_HC1 compressed IPv6 datagram: A LoWPAN encapsulated LOWPAN_HC1 compressed IPv6 datagram:
+--------------+------------+---------+ +--------------+------------+---------+
skipping to change at page 7, line 35 skipping to change at page 7, line 24
broadcast/multicast: broadcast/multicast:
+-------+-------+-------+-------+---------+---------+---------+ +-------+-------+-------+-------+---------+---------+---------+
| M Typ | M Hdr | B Dsp | B Hdr | HC1 Dsp | HC1 Hdr | Payload | | M Typ | M Hdr | B Dsp | B Hdr | HC1 Dsp | HC1 Hdr | Payload |
+-------+-------+-------+-------+---------+---------+---------+ +-------+-------+-------+-------+---------+---------+---------+
When more than one LoWPAN header is used in the same packet, they When more than one LoWPAN header is used in the same packet, they
MUST appear in the following order: MUST appear in the following order:
Mesh Addressing Header Mesh Addressing Header
Broadcast Header Broadcast Header
Fragmentation Header Fragmentation Header
All protocol datagrams (e.g., IPv6, compressed IPv6 headers, etc) All protocol datagrams (e.g., IPv6, compressed IPv6 headers, etc.)
SHALL be preceded by one of the valid LoWPAN encapsulation headers, SHALL be preceded by one of the valid LoWPAN encapsulation headers,
examples of which are given above. This permits uniform software examples of which are given above. This permits uniform software
treatment of datagrams without regard to the mode of their treatment of datagrams without regard to the mode of their
transmission. transmission.
The definition of headers, other than mesh addressing and The definition of LoWPAN headers, other than mesh addressing and
fragmentation, in LoWPAN consists of the dispatch value, the fragmentation, consists of the dispatch value, the definition of the
definition of the header fields that follow, and their ordering header fields that follow, and their ordering constraints relative to
constraints relative to all other headers. Although the header stack all other headers. Although the header stack structure provides a
structure provides a mechanism to address future demands on the mechanism to address future demands on the LoWPAN adaptation layer,
LoWPAN adaptation layer, it is not intended to provided general it is not intended to provided general purpose extensibility. This
purpose extensibility. This format document specifies a small set of format document specifies a small set of header types using the
header types using the header stack for clarity, compactness, and header stack for clarity, compactness, and orthogonality.
othogonality. All headers used in a LOWPAN adaptation layer SHALL be
defined in this format document.
5.1. Dispatch Type and Header 5.1. Dispatch Type and Header
The dispatch type is defined by a zero-bit as the first bit and a The dispatch type is defined by a zero bit as the first bit and a one
one-bit as the second bit. The dispatch type and header is shown bit as the second bit. The dispatch type and header are shown here:
here:
1 2 3 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 1| Dispatch | type-specific header |0 1| Dispatch | type-specific header
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Dispatch 6-bit selector. Identifies the type of header Dispatch 6-bit selector. Identifies the type of header
immediately following the Dispatch Header. immediately following the Dispatch Header.
type-specific header A header determined by the Dispatch Header. type-specific header A header determined by the Dispatch Header.
Figure 7: Dispatch Type and Header Figure 1: Dispatch Type and Header
The dispatch value may be treated as an unstructured namespace. Only The dispatch value may be treated as an unstructured namespace. Only
a few symbols are required to represent current LoWPAN functionality. a few symbols are required to represent current LoWPAN functionality.
Although some additional savings could be achieved by encoding Although some additional savings could be achieved by encoding
additional functionality into the dispatch byte, these measures would additional functionality into the dispatch byte, these measures would
tend to constrain the ability to address future alternatives. tend to constrain the ability to address future alternatives.
Pattern Header Type Pattern Header Type
+------------+-----------------------------------------------+ +------------+-----------------------------------------------+
| 00 xxxxxx | NALP - Not a LoWPAN frame | | 00 xxxxxx | NALP - Not a LoWPAN frame |
| 01 000001 | IPv6 - uncompressed IPv6 Addresses | | 01 000001 | IPv6 - Uncompressed IPv6 Addresses |
| 01 000010 | LOWPAN_HC1 - LOWPAN_HC1 compressed IPv6 | | 01 000010 | LOWPAN_HC1 - LOWPAN_HC1 compressed IPv6 |
| ... | reserved - Reserved for future use | | 01 000011 | reserved - Reserved for future use |
| 01 010000 | LOWPAN_BC0 - LOWPAN_BC0 broadcast | | ... | reserved - Reserved for future use |
| ... | reserved - Reserved for future use | | 01 001111 | reserved - Reserved for future use |
| 01 111111 | ESC - Additional Dispatch byte follows | | 01 010000 | LOWPAN_BC0 - LOWPAN_BC0 broadcast |
+------------+-----------------------------------------------+ | 01 010001 | reserved - Reserved for future use |
| ... | reserved - Reserved for future use |
| 01 111110 | reserved - Reserved for future use |
| 01 111111 | ESC - Additional Dispatch byte follows |
| 10 xxxxxx | MESH - Mesh Header |
| 11 000xxx | FRAG1 - Fragmentation Header (first) |
| 11 001000 | reserved - Reserved for future use |
| ... | reserved - Reserved for future use |
| 11 011111 | reserved - Reserved for future use |
| 11 100xxx | FRAGN - Fragmentation Header (subsequent)|
| 11 101000 | reserved - Reserved for future use |
| ... | reserved - Reserved for future use |
| 11 111111 | reserved - Reserved for future use |
+------------+-----------------------------------------------+
Figure 8: Dispatch Value Bit Pattern Figure 2: Dispatch Value Bit Pattern
NALP: Specifies that the following bits are not a part of the LoWPAN NALP: Specifies that the following bits are not a part of the LoWPAN
encapsulation, and any LoWPAN node that encounters a dispatch encapsulation, and any LoWPAN node that encounters a dispatch
value of 00xxxxxx shall discard the packet. Other non-LoWPAN value of 00xxxxxx shall discard the packet. Other non-LoWPAN
protocols that wish to coexist with LoWPAN nodes should include a protocols that wish to coexist with LoWPAN nodes should include a
byte matching this pattern immediately following the 802.15.4. byte matching this pattern immediately following the 802.15.4.
header. header.
IPv6: Specifies that the following header is an uncompressed IPv6 IPv6: Specifies that the following header is an uncompressed IPv6
header [RFC2460]. header [RFC2460].
LOWPAN_HC1: Specifies that the following header is a LOWPAN_HC1 LOWPAN_HC1: Specifies that the following header is a LOWPAN_HC1
compressd IPv6 header. This header format is defined in compressed IPv6 header. This header format is defined in
Figure 15. Figure 9.
LOWPAN_BC0: Specifies that the following header is a LOWPAN_BC0 LOWPAN_BC0: Specifies that the following header is a LOWPAN_BC0
header for mesh broadcast/multicast support and is described in header for mesh broadcast/multicast support and is described in
Section 11.1. Section 11.1.
ESC: Specifies that the following header is a single 8-bit field for ESC: Specifies that the following header is a single 8-bit field for
the Dispatch value. Allows support for Dispatch values larger the Dispatch value. It allows support for Dispatch values larger
than 127. than 127.
5.2. Mesh Addressing Type and Header 5.2. Mesh Addressing Type and Header
The mesh type is defined by a one-bit and zero-bit as the first two The mesh type is defined by a one bit and zero bit as the first two
bits. The mesh type and header is shown here: bits. The mesh type and header are shown here:
1 2 3 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 0|O|F|HopsLft| originator address, final address |1 0|V|F|HopsLft| originator address, final address
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 9: Mesh Addressing Type and Header Figure 3: Mesh Addressing Type and Header
Field definitions are as follows: Field definitions are as follows:
O: This 1-bit field SHALL be zero if the Originator Address is an V: This 1-bit field SHALL be zero if the Originator (or "Very first")
IEEE extended 64 bit address (EUI-64), or 1 if it is a short 16- Address is an IEEE extended 64-bit address (EUI-64), or 1 if it is
bit addresses. a short 16-bit addresses.
F: This 1-bit field SHALL be zero if the Final Destination Address is F: This 1-bit field SHALL be zero if the Final Destination Address is
an IEEE extended 64 bit address (EUI-64), or 1 if it is a short an IEEE extended 64-bit address (EUI-64), or 1 if it is a short
16-bit addresses. 16-bit addresses.
Hops Left: This 4-bit field SHALL be decremented by each forwarding Hops Left: This 4-bit field SHALL be decremented by each forwarding
node before sending this packet towards its next hop. The packet node before sending this packet towards its next hop. The packet
is not forwarded any further if Hops Left is decremented to 0. is not forwarded any further if Hops Left is decremented to zero.
The value 0xF is reserved and signifies an 8-bit Deep Hops Left The value 0xF is reserved and signifies an 8-bit Deep Hops Left
field immediately following, and allows a source node to specify a field immediately following, and allows a source node to specify a
hop limit greater than 14 hops. hop limit greater than 14 hops.
Originator Address: This is the link-layer address of the Originator Address: This is the link-layer address of the
Originator. Originator.
Final Destination Address: This is the link-layer address of the Final Destination Address: This is the link-layer address of the
Final Destination. Final Destination.
Note that the 'O' and 'F' bits allow for a mix of 16 and 64-bit Note that the 'V' and 'F' bits allow for a mix of 16 and 64-bit
addresses. This is useful at least to allow for mesh layer addresses. This is useful at least to allow for mesh layer
"broadcast", as 802.15.4 broadcast addresses are defined as 16-bit "broadcast", as 802.15.4 broadcast addresses are defined as 16-bit
short addresses. short addresses.
A further discussion of frame delivery within a mesh is in A further discussion of frame delivery within a mesh is in
Section 11. Section 11.
5.3. Fragmentation Type and Header 5.3. Fragmentation Type and Header
If an entire payload (e.g., IPv6) datagram fits within a single If an entire payload (e.g., IPv6) datagram fits within a single
802.15.4 frame, it is unfragmented and the LoWPAN encapsulation 802.15.4 frame, it is unfragmented and the LoWPAN encapsulation
should contain no fragmentation header. If the datagram does not fit should not contain a fragmentation header. If the datagram does not
within a single IEEE 802.15.4 frame, it SHALL be broken into link fit within a single IEEE 802.15.4 frame, it SHALL be broken into link
fragments. As the fragment offset can only express multiples of fragments. As the fragment offset can only express multiples of
eight bytes, all link fragments for a datagram except the last one eight bytes, all link fragments for a datagram except the last one
MUST be multiples of eight bytes in length. The first link fragment MUST be multiples of eight bytes in length. The first link fragment
SHALL contain the first fragment header defined as shown below. SHALL contain the first fragment header as defined below.
1 2 3 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 0 0 0| datagram_size | datagram_tag | |1 1 0 0 0| datagram_size | datagram_tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 10: First Fragment Figure 4: First Fragment
The second and subsequent link fragments (up to and including the The second and subsequent link fragments (up to and including the
last) SHALL contain a fragmentation header that conforms to the last) SHALL contain a fragmentation header that conforms to the
format shown below. format shown below.
1 2 3 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 0 0| datagram_size | datagram_tag | |1 1 1 0 0| datagram_size | datagram_tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|datagram_offset| |datagram_offset|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Figure 11: Subsequent Fragments Figure 5: Subsequent Fragments
datagram_size: This 11 bit field encodes the size of the entire IP datagram_size: This 11-bit field encodes the size of the entire IP
packet before link-layer fragmentation (but after IP layer packet before link-layer fragmentation (but after IP layer
fragmentation). The value of datagram_size SHALL be the same for fragmentation). The value of datagram_size SHALL be the same for
all link-layer fragments of an IP packet. For IPv6, this SHALL be all link-layer fragments of an IP packet. For IPv6, this SHALL be
40 octets (the size of the uncompressed IPv6 header) more than the 40 octets (the size of the uncompressed IPv6 header) more than the
value of Payload Length in the IPv6 header [RFC2460] of the value of Payload Length in the IPv6 header [RFC2460] of the
packet. Note that this packet may already be fragmented by hosts packet. Note that this packet may already be fragmented by hosts
involved in the communication, i.e., this field needs to encode a involved in the communication, i.e., this field needs to encode a
maximum length of 1280 octets (the IEEE 802.15.4 link MTU as maximum length of 1280 octets (the IEEE 802.15.4 link MTU, as
defined in this document). defined in this document).
NOTE: This field does not need to be in every packet, as one could NOTE: This field does not need to be in every packet, as one could
send it with the first fragment and elide it subsequently. send it with the first fragment and elide it subsequently.
However, including it in every link fragment eases the task of However, including it in every link fragment eases the task of
reassembly in the event that a second (or subsequent) link reassembly in the event that a second (or subsequent) link
fragment arrives before the first. In this case, the guarantee of fragment arrives before the first. In this case, the guarantee of
learning the datagram_size as soon as any of the fragments arrives learning the datagram_size as soon as any of the fragments arrives
tells the receiver how much buffer space to set aside as it waits tells the receiver how much buffer space to set aside as it waits
for the rest of the fragments. The format above trades off for the rest of the fragments. The format above trades off
skipping to change at page 11, line 45 skipping to change at page 12, line 29
increments of 8 octets, of the fragment from the beginning of the increments of 8 octets, of the fragment from the beginning of the
payload datagram. The first octet of the datagram (e.g., the payload datagram. The first octet of the datagram (e.g., the
start of the IPv6 header) has an offset of zero; the implicit start of the IPv6 header) has an offset of zero; the implicit
value of datagram_offset in the first link fragment is zero. This value of datagram_offset in the first link fragment is zero. This
field is 8 bits long. field is 8 bits long.
The recipient of link fragments SHALL use (1) the sender's 802.15.4 The recipient of link fragments SHALL use (1) the sender's 802.15.4
source address (or the Originator Address if a Mesh Addressing field source address (or the Originator Address if a Mesh Addressing field
is present), (2) the destination's 802.15.4 address (or the Final is present), (2) the destination's 802.15.4 address (or the Final
Destination address if a Mesh Addressing field is present), (3) Destination address if a Mesh Addressing field is present), (3)
datagram_size and (4) datagram_tag to identify all the link fragments datagram_size, and (4) datagram_tag to identify all the link
that belong to a given datagram. fragments that belong to a given datagram.
Upon receipt of a link fragment, the recipient starts constructing Upon receipt of a link fragment, the recipient starts constructing
the original unfragmented packet whose size is datagram_size. It the original unfragmented packet whose size is datagram_size. It
uses the datagram_offset field to determine the location of the uses the datagram_offset field to determine the location of the
individual fragments within the original unfragmented packet. For individual fragments within the original unfragmented packet. For
example, it may place the data payload (except the encapsulation example, it may place the data payload (except the encapsulation
header) within a payload datagram reassembly buffer at the location header) within a payload datagram reassembly buffer at the location
specified by datagram_offset. The size of the reassembly buffer specified by datagram_offset. The size of the reassembly buffer
SHALL be determined from datagram_size. SHALL be determined from datagram_size.
If a link fragment is received that overlaps another fragment as If a link fragment that overlaps another fragment is received, as
identified above and differs in either the size or datagram_offset of identified above, and differs in either the size or datagram_offset
the overlapped fragment, the fragment(s) already accumulated in the of the overlapped fragment, the fragment(s) already accumulated in
reassembly buffer SHALL be discarded. A fresh reassembly may be the reassembly buffer SHALL be discarded. A fresh reassembly may be
commenced with the most recently received link fragment. Fragment commenced with the most recently received link fragment. Fragment
overlap is determined by the combination of datagram_offset from the overlap is determined by the combination of datagram_offset from the
encapsulation header and "Frame Length" from the 802.15.4 PPDU packet encapsulation header and "Frame Length" from the 802.15.4 Physical
header. Layer Protocol Data Unit (PPDU) packet header.
Upon detection of a IEEE 802.15.4 Disassociation event, fragment Upon detection of a IEEE 802.15.4 Disassociation event, fragment
recipients MUST discard all link fragments of all partially recipients MUST discard all link fragments of all partially
reassembled payload datagrams, and fragment senders MUST discard all reassembled payload datagrams, and fragment senders MUST discard all
not yet transmitted link fragments of all partially transmitted not yet transmitted link fragments of all partially transmitted
payload (e.g., IPv6) datagrams. Similarly, when a node first payload (e.g., IPv6) datagrams. Similarly, when a node first
receives a fragment with a given datagram_tag, it starts a reassembly receives a fragment with a given datagram_tag, it starts a reassembly
timer. When this time expires, if the entire packet has not been timer. When this time expires, if the entire packet has not been
reassembled, the existing fragments MUST be discarded and the reassembled, the existing fragments MUST be discarded and the
reassembly state MUST be flushed. The reassembly timeout MUST be set reassembly state MUST be flushed. The reassembly timeout MUST be set
to a maximum of 60 seconds (this is also the timeout in the IPv6 to a maximum of 60 seconds (this is also the timeout in the IPv6
reassembly procedure [RFC2460] ). reassembly procedure [RFC2460]).
6. Stateless Address Autoconfiguration 6. Stateless Address Autoconfiguration
This section defines how to obtain an IPv6 interface identifier. This section defines how to obtain an IPv6 interface identifier.
The Interface Identifier [RFC4291] for an IEEE 802.15.4 interface may The Interface Identifier [RFC4291] for an IEEE 802.15.4 interface may
be based on the EUI-64 identifier [EUI64] assigned to the IEEE be based on the EUI-64 identifier [EUI64] assigned to the IEEE
802.15.4 device. In this case, the Interface Identifier is formed 802.15.4 device. In this case, the Interface Identifier is formed
from the EUI-64 according to the "IPv6 over Ethernet" specification from the EUI-64 according to the "IPv6 over Ethernet" specification
[RFC2464]. [RFC2464].
skipping to change at page 13, line 10 skipping to change at page 13, line 41
16_bit_PAN:16_zero_bits 16_bit_PAN:16_zero_bits
Then, these 32 bits are concatenated with the 16-bit short address. Then, these 32 bits are concatenated with the 16-bit short address.
This produces a 48-bit address as follows: This produces a 48-bit address as follows:
32_bits_as_specified_previously:16_bit_short_address 32_bits_as_specified_previously:16_bit_short_address
The interface identifier is formed from this 48-bit address as per The interface identifier is formed from this 48-bit address as per
the "IPv6 over Ethernet" specification [RFC2464]. However, in the the "IPv6 over Ethernet" specification [RFC2464]. However, in the
resultant interface identifier, the "Universal/Local" (U/L) bit SHALL resultant interface identifier, the "Universal/Local" (U/L) bit SHALL
be set to 0 in keeping with the fact that this is not a globally be set to zero in keeping with the fact that this is not a globally
unique value. For either address format, all zero addresses MUST NOT unique value. For either address format, all zero addresses MUST NOT
be used. be used.
A different MAC address set manually or by software MAY be used to A different MAC address set manually or by software MAY be used to
derive the Interface Identifier. If such a MAC address is used, its derive the Interface Identifier. If such a MAC address is used, its
global uniqueness property should be reflected in the value of the global uniqueness property should be reflected in the value of the
U/L bit. U/L bit.
An IPv6 address prefix used for stateless autoconfiguration An IPv6 address prefix used for stateless autoconfiguration [RFC4862]
[I-D.ietf-ipv6-rfc2462bis] of an IEEE 802.15.4 interface MUST have a of an IEEE 802.15.4 interface MUST have a length of 64 bits.
length of 64 bits.
7. IPv6 Link Local Address 7. IPv6 Link Local Address
The IPv6 link-local address [RFC4291] for an IEEE 802.15.4 interface The IPv6 link-local address [RFC4291] for an IEEE 802.15.4 interface
is formed by appending the Interface Identifier, as defined above, to is formed by appending the Interface Identifier, as defined above, to
the prefix FE80::/64. the prefix FE80::/64.
10 bits 54 bits 64 bits 10 bits 54 bits 64 bits
+----------+-----------------------+----------------------------+ +----------+-----------------------+----------------------------+
|1111111010| (zeros) | Interface Identifier | |1111111010| (zeros) | Interface Identifier |
+----------+-----------------------+----------------------------+ +----------+-----------------------+----------------------------+
Figure 12 Figure 6
8. Unicast Address Mapping 8. Unicast Address Mapping
The address resolution procedure for mapping IPv6 non-multicast The address resolution procedure for mapping IPv6 non-multicast
addresses into IEEE 802.15.4 link-layer addresses follows the general addresses into IEEE 802.15.4 link-layer addresses follows the general
description in section 7.2 of [I-D.ietf-ipv6-2461bis], unless description in Section 7.2 of [RFC4861], unless otherwise specified.
otherwise specified.
The Source/Target Link-layer Address option has the following forms The Source/Target Link-layer Address option has the following forms
when the link layer is IEEE 802.15.4 and the addresses are EUI-64 or when the link layer is IEEE 802.15.4 and the addresses are EUI-64 or
16-bit short addresses, respectively. 16-bit short addresses, respectively.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length=2 | | Type | Length=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 14, line 37 skipping to change at page 15, line 37
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length=1 | | Type | Length=1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 16-bit short Address | | 16-bit short Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
+- Padding -+ +- Padding -+
| (all zeros) | | (all zeros) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 13 Figure 7
Option fields: Option fields:
Type: Type:
1: for Source Link-layer address. 1: for Source Link-layer address.
2: for Target Link-layer address. 2: for Target Link-layer address.
Length: This is the length of this option (including the type and Length: This is the length of this option (including the type and
length fields) in units of 8 octets. The value of this field is 2 length fields) in units of 8 octets. The value of this field is 2
if using EUI-64 addresses, or 1 if using 16-bit short addresses. if using EUI-64 addresses, or 1 if using 16-bit short addresses.
IEEE 802.15.4 Address: The 64-bit IEEE 802.15.4 address, or the 16- IEEE 802.15.4 Address: The 64-bit IEEE 802.15.4 address, or the 16-
bit short address (as per the format in Section 9), in canonical bit short address (as per the format in Section 9), in canonical
bit order. This is the address the interface currently responds bit order. This is the address the interface currently responds
to. This address may be different from the built-in address used to. This address may be different from the built-in address used
skipping to change at page 15, line 15 skipping to change at page 16, line 12
IEEE 802.15.4 Address: The 64-bit IEEE 802.15.4 address, or the 16- IEEE 802.15.4 Address: The 64-bit IEEE 802.15.4 address, or the 16-
bit short address (as per the format in Section 9), in canonical bit short address (as per the format in Section 9), in canonical
bit order. This is the address the interface currently responds bit order. This is the address the interface currently responds
to. This address may be different from the built-in address used to. This address may be different from the built-in address used
to derive the Interface Identifier, because of privacy or security to derive the Interface Identifier, because of privacy or security
(e.g., of neighbor discovery) considerations. (e.g., of neighbor discovery) considerations.
9. Multicast Address Mapping 9. Multicast Address Mapping
The functionality in this section MUST only be used in a mesh-enabled The functionality in this section MUST only be used in a mesh-enabled
LoWPAN. An IPv6 packet with a multicast destination address DST, LoWPAN. An IPv6 packet with a multicast destination address (DST),
consisting of the sixteen octets DST[1] through DST[16], is consisting of the sixteen octets DST[1] through DST[16], is
transmitted to the following 802.15.4 16-bit multicast address: transmitted to the following 802.15.4 16-bit multicast address:
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 0 0|DST[15]* | DST[16] | |1 0 0|DST[15]* | DST[16] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 14 Figure 8
Here, DST[15]* refers to the last 5 bits in octet DST[15], that is, Here, DST[15]* refers to the last 5 bits in octet DST[15], that is,
bits 3-7 within DST[15]. The initial 3-bit pattern of "100" follows bits 3-7 within DST[15]. The initial 3-bit pattern of "100" follows
the 16-bit address format for multicast addresses (Section 12). the 16-bit address format for multicast addresses (Section 12).
This allows for multicast support within 6LoWPAN networks, but the This allows for multicast support within 6LoWPAN networks, but the
full specification of such support is out of scope of this document. full specification of such support is out of the scope of this
Example mechanisms are: flooding, controlled flooding, unicasting to document. Example mechanisms are: flooding, controlled flooding,
the PAN coordinator, etc. It is expected that this would be unicasting to the PAN coordinator, etc. It is expected that this
specified by the different mesh routing mechanisms. would be specified by the different mesh routing mechanisms.
10. Header Compression 10. Header Compression
There is much published and in-progress standardization work on There is much published and in-progress standardization work on
header compression. Nevertheless, header compression for IPv6 over header compression. Nevertheless, header compression for IPv6 over
IEEE 802.15.4 has differing constraints summarized as follows: IEEE 802.15.4 has differing constraints summarized as follows:
Existing work assumes that there are many flows between any two Existing work assumes that there are many flows between any two
devices. Here, we assume a very simple and low-context flavor of devices. Here, we assume a very simple and low-context flavor of
header compression. Whereas this works independently of flows header compression. Whereas this works independently of flows
(potentially several), it does not use any context specific to any (potentially several), it does not use any context specific to any
flow. Thus, it cannot achieve as much compression as schemes that flow. Thus, it cannot achieve as much compression as schemes that
build separate context for each flow to be compressed. build a separate context for each flow to be compressed.
Given the very limited packet sizes, it is highly desirable to Given the very limited packet sizes, it is highly desirable to
integrate layer 2 with layer 3 compression, something integrate layer 2 with layer 3 compression, something
traditionally not done (although now changing due to the ROHC traditionally not done (although now changing due to the ROHC
working group). (RObust Header Compression) working group).
It is expected that IEEE 802.15.4 devices will be deployed in It is expected that IEEE 802.15.4 devices will be deployed in
multi-hop networks. However, header compression in a mesh departs multi-hop networks. However, header compression in a mesh departs
from the usual point-to-point link scenario in which the from the usual point-to-point link scenario in which the
compressor and decompressor are in direct and exclusive compressor and decompressor are in direct and exclusive
communication with each other. In an IEEE 802.15.4 network, it is communication with each other. In an IEEE 802.15.4 network, it is
highly desirable for a device to be able to send header compressed highly desirable for a device to be able to send header compressed
packets via any of its neighbors, with as little preliminary packets via any of its neighbors, with as little preliminary
context-building as possible. context-building as possible.
Any new packets formats required by header compression reuse the Any new packet formats required by header compression reuse the basic
basic packet formats defined in Section 5 by using different dispatch packet formats defined in Section 5 by using different dispatch
values. values.
Header compression may result in alignment not falling on an octet
boundary. Since hardware typically cannot transmit data in units
less than an octet, padding must be used. Padding is done as
follows: First, the entire series of contiguous compressed headers is
laid out (this document only defines IPv6 and UDP header compression
schemes, but others may be defined elsewhere). Then, zero bits
SHOULD be added as appropriate to align to an octet boundary. This
counteracts any potential misalignment caused by header compression,
so subsequent fields (e.g., non-compressed headers or data payloads)
start on an octet boundary and follow as usual.
10.1. Encoding of IPv6 Header Fields 10.1. Encoding of IPv6 Header Fields
By virtue of having joined the same 6LoWPAN network, devices share By virtue of having joined the same 6LoWPAN network, devices share
some state. This makes it possible to compress headers without some state. This makes it possible to compress headers without
explicitly building any compression context state. Therefore, explicitly building any compression context state. Therefore,
6LoWPAN header compression does not keep any flow state; instead, it 6LoWPAN header compression does not keep any flow state; instead, it
relies on information pertaining to the entire link. The following relies on information pertaining to the entire link. The following
IPv6 header values are expected to be common on 6LoWPAN networks, so IPv6 header values are expected to be common on 6LoWPAN networks, so
the HC1 header has been constructed to efficiently compress them from the HC1 header has been constructed to efficiently compress them from
the onset: Version is IPv6; both IPv6 source and destination the onset: Version is IPv6; both IPv6 source and destination
skipping to change at page 17, line 12 skipping to change at page 18, line 17
bits) to encode the different combinations as shown below. This bits) to encode the different combinations as shown below. This
header may be preceded by a fragmentation header, which may be header may be preceded by a fragmentation header, which may be
preceded by a mesh header. preceded by a mesh header.
1 2 3 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HC1 encoding | Non-Compressed fields follow... | HC1 encoding | Non-Compressed fields follow...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 15: LOWPAN_HC1 (common compressed header encoding) Figure 9: LOWPAN_HC1 (common compressed header encoding)
As can be seen below (bit 7), an HC2 encoding may follow an HC1 As can be seen below (bit 7), an HC2 encoding may follow an HC1
octet. In this case, the non-compressed fields follow the HC2 octet. In this case, the non-compressed fields follow the HC2
encoding field Section 10.3. encoding field (Section 10.3).
The address fields encoded by "HC1 encoding" are interpreted as The address fields encoded by "HC1 encoding" are interpreted as
follows: follows:
PI: Prefix carried in-line (Section 10.3.1). PI: Prefix carried in-line (Section 10.3.1).
PC: Prefix compressed (link-local prefix assumed). PC: Prefix compressed (link-local prefix assumed).
II: Interface identifier carried in-line (Section 10.3.1). II: Interface identifier carried in-line (Section 10.3.1).
IC: Interface identifier elided (derivable from the corresponding IC: Interface identifier elided (derivable from the corresponding
link-layer address). If applied to the interface identifier of link-layer address). If applied to the interface identifier of
either the source or destination address when routing in a mesh either the source or destination address when routing in a mesh
(Section 11), the corresponding link-layer address is that (Section 11), the corresponding link-layer address is that
found in the "Mesh Addressing" field (Section 5.2). found in the "Mesh Addressing" field (Section 5.2).
The "HC1 encoding" is shown below (starting with bit 0 and ending at The "HC1 encoding" is shown below (starting with bit 0 and ending at
bit 7): bit 7):
IPv6 source address (bits 0 and 1): IPv6 source address (bits 0 and 1):
skipping to change at page 17, line 34 skipping to change at page 18, line 42
IC: Interface identifier elided (derivable from the corresponding IC: Interface identifier elided (derivable from the corresponding
link-layer address). If applied to the interface identifier of link-layer address). If applied to the interface identifier of
either the source or destination address when routing in a mesh either the source or destination address when routing in a mesh
(Section 11), the corresponding link-layer address is that (Section 11), the corresponding link-layer address is that
found in the "Mesh Addressing" field (Section 5.2). found in the "Mesh Addressing" field (Section 5.2).
The "HC1 encoding" is shown below (starting with bit 0 and ending at The "HC1 encoding" is shown below (starting with bit 0 and ending at
bit 7): bit 7):
IPv6 source address (bits 0 and 1): IPv6 source address (bits 0 and 1):
00: PI, II 00: PI, II
01: PI, IC 01: PI, IC
10: PC, II 10: PC, II
11: PC, IC 11: PC, IC
IPv6 destination address (bits 2 and 3): IPv6 destination address (bits 2 and 3):
00: PI, II 00: PI, II
01: PI, IC 01: PI, IC
10: PC, II 10: PC, II
11: PC, IC 11: PC, IC
Traffic Class and Flow Label (bit 4): Traffic Class and Flow Label (bit 4):
0: not compressed, full 8 bits for Traffic Class and 20 bits
0: not compressed; full 8 bits for Traffic Class and 20 bits
for Flow Label are sent for Flow Label are sent
1: Traffic Class and Flow Label are zero 1: Traffic Class and Flow Label are zero
Next Header (bits 5 and 6): Next Header (bits 5 and 6):
00: not compressed, full 8 bits are sent
00: not compressed; full 8 bits are sent
01: UDP 01: UDP
10: ICMP 10: ICMP
11: TCP 11: TCP
HC2 encoding(bit 7): HC2 encoding(bit 7):
0: No more header compression bits 0: No more header compression bits
1: HC1 encoding immediately followed by more header compression 1: HC1 encoding immediately followed by more header compression
bits per HC2 encoding format. Bits 5 and 6 determine which bits per HC2 encoding format. Bits 5 and 6 determine which
of the possible HC2 encodings apply (e.g., UDP, ICMP or TCP of the possible HC2 encodings apply (e.g., UDP, ICMP, or TCP
encodings). encodings).
10.2. Encoding of UDP Header Fields 10.2. Encoding of UDP Header Fields
Bits 5 and 6 of the LOWPAN_HC1 allows compressing the Next Header Bits 5 and 6 of the LOWPAN_HC1 allows compressing the Next Header
field in the IPv6 header (for UDP, TCP and ICMP). Further field in the IPv6 header (for UDP, TCP, and ICMP). Further
compression of each of these protocol headers is also possible. This compression of each of these protocol headers is also possible. This
section explains how the UDP header itself may be compressed. The section explains how the UDP header itself may be compressed. The
HC2 encoding in this section is the HC_UDP encoding, and it only HC2 encoding in this section is the HC_UDP encoding, and it only
applies if bits 5 and 6 in HC1 indicate that the protocol that applies if bits 5 and 6 in HC1 indicate that the protocol that
follows the IPv6 header is UDP. The HC_UDP encoding (Figure 16) follows the IPv6 header is UDP. The HC_UDP encoding (Figure 10)
allows compressing the following fields in the UDP header: source allows compressing the following fields in the UDP header: source
port, destination port and length. The UDP header's checksum field port, destination port, and length. The UDP header's checksum field
is not compressed and is therefore carried in full. The scheme is not compressed and is therefore carried in full. The scheme
defined below allows compressing the UDP header to 4 octets instead defined below allows compressing the UDP header to 4 octets instead
of the original 8 octets. of the original 8 octets.
The only UDP header field whose value may be deduced from information The only UDP header field whose value may be deduced from information
available elsewhere is the Length. The other fields must be carried available elsewhere is the Length. The other fields must be carried
in-line either in full or in a partially compressed manner in-line either in full or in a partially compressed manner
(Section 10.3.2). (Section 10.3.2).
1 2 3 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|HC_UDP encoding| Fields carried in-line follow... |HC_UDP encoding| Fields carried in-line follow...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 16: HC_UDP (UDP common compressed header encoding) Figure 10: HC_UDP (UDP common compressed header encoding)
The "HC_UDP encoding" for UDP is shown below (starting with bit 0 and The "HC_UDP encoding" for UDP is shown below (starting with bit 0 and
ending at bit 7): ending at bit 7):
UDP source port (bit 0): UDP source port (bit 0):
0: Not compressed, carried "in-line" (Section 10.3.2) 0: Not compressed, carried "in-line" (Section 10.3.2)
1: Compressed to 4 bits. The actual 16-bit source port is 1: Compressed to 4 bits. The actual 16-bit source port is
obtained by calculating: P + short_port value. The value of obtained by calculating: P + short_port value. The value of
P is the number 61616 (0xF0B0). The short_port is expressed P is the number 61616 (0xF0B0). The short_port is expressed
as a 4-bit value which is carried "in-line" (Section 10.3.2) as a 4-bit value which is carried "in-line" (Section 10.3.2)
UDP destination port (bit 1): UDP destination port (bit 1):
0: Not compressed, carried "in-line" (Section 10.3.2) 0: Not compressed, carried "in-line" (Section 10.3.2)
1: Compressed to 4 bits. The actual 16-bit destination port is 1: Compressed to 4 bits. The actual 16-bit destination port is
obtained by calculating: P + short_port value. The value of obtained by calculating: P + short_port value. The value of
P is the number 61616 (0xF0B0). The short_port is expressed P is the number 61616 (0xF0B0). The short_port is expressed
as a 4-bit value which is carried "in-line" (Section 10.3.2) as a 4-bit value which is carried "in-line" (Section 10.3.2)
Length (bit 2): Length (bit 2):
0: not compressed, carried "in-line" (Section 10.3.2) 0: not compressed, carried "in-line" (Section 10.3.2)
1: compressed, length computed from IPv6 header length 1: compressed, length computed from IPv6 header length
information. The value of the UDP length field is equal to information. The value of the UDP length field is equal to
the Payload Length from the IPv6 header, minus the length of the Payload Length from the IPv6 header, minus the length of
any extension headers present between the IPv6 header and any extension headers present between the IPv6 header and
the UDP header. the UDP header.
Reserved (bit 3 through 7) Reserved (bit 3 through 7)
10.3. Non-Compressed Fields 10.3. Non-Compressed Fields
skipping to change at page 19, line 46 skipping to change at page 21, line 22
specified by the Next Header field in the original IPv6 header) specified by the Next Header field in the original IPv6 header)
immediately follows the IPv6 non-compressed fields. immediately follows the IPv6 non-compressed fields.
Uncompressed IPv6 addressing is described by a dispatch type Uncompressed IPv6 addressing is described by a dispatch type
containing an IPv6 dispatch value followed by the uncompressed IPv6 containing an IPv6 dispatch value followed by the uncompressed IPv6
header. This dispatch type may be preceded by additional LoWPAN header. This dispatch type may be preceded by additional LoWPAN
headers. headers.
The non-compressed IPv6 field that MUST be always present is the Hop The non-compressed IPv6 field that MUST be always present is the Hop
Limit (8 bits). This field MUST always follow the encoding fields Limit (8 bits). This field MUST always follow the encoding fields
(e.g., "HC1 encoding" as shown in Figure 15), perhaps including other (e.g., "HC1 encoding" as shown in Figure 9), perhaps including other
future encoding fields). Other non-compressed fields MUST follow the future encoding fields). Other non-compressed fields MUST follow the
Hop Limit as implied by the "HC1 encoding" in the exact same order as Hop Limit as implied by the "HC1 encoding" in the exact same order as
shown above (Section 10.1): source address prefix (64 bits) and/or shown above (Section 10.1): source address prefix (64 bits) and/or
interface identifier (64 bits), destination address prefix (64 bits) interface identifier (64 bits), destination address prefix (64 bits)
and/or interface identifier (64 bits), Traffic Class (8 bits), Flow and/or interface identifier (64 bits), Traffic Class (8 bits), Flow
Label (20 bits) and Next Header (8 bits). The actual next header Label (20 bits) and Next Header (8 bits). The actual next header
(e.g., UDP, TCP, ICMP, etc) follows the non-compressed fields. (e.g., UDP, TCP, ICMP, etc) follows the non-compressed fields.
10.3.2. Non-Compressed and partially compressed UDP fields 10.3.2. Non-Compressed and Partially Compressed UDP Fields
This scheme allows the UDP header to be compressed to different This scheme allows the UDP header to be compressed to different
degrees. Hence, instead of the entire (standard) UDP header, only degrees. Hence, instead of the entire (standard) UDP header, only
non-compressed or partially compressed fields need to be sent. non-compressed or partially compressed fields need to be sent.
The non-compressed or partially compressed fields in the UDP header The non-compressed or partially compressed fields in the UDP header
MUST always follow the IPv6 header and any of its associated in-line MUST always follow the IPv6 header and any of its associated in-line
fields. Any UDP header in-line fields present MUST appear in the fields. Any UDP header in-line fields present MUST appear in the
same order as the corresponding fields appear in a normal UDP header same order as the corresponding fields appear in a normal UDP header
[RFC0768], e.g., source port, destination port, length and checksum. [RFC0768], e.g., source port, destination port, length, and checksum.
If either the source or destination ports are in "short_port" If either the source or destination ports are in "short_port"
notation (as indicated in the compressed UDP header), then instead of notation (as indicated in the compressed UDP header), then instead of
taking 16 bits, the inline port numbers take 4 bits. taking 16 bits, the inline port numbers take 4 bits.
11. Frame Delivery in a Link-Layer Mesh 11. Frame Delivery in a Link-Layer Mesh
Even though 802.15.4 networks are expected to commonly use mesh Even though 802.15.4 networks are expected to commonly use mesh
routing, the IEEE 802.15.4-2003 specification [ieee802.15.4] does not routing, the IEEE 802.15.4-2003 specification [ieee802.15.4] does not
define such capability. In such cases, Full Function Devices (FFDs) define such capability. In such cases, Full Function Devices (FFDs)
run an ad hoc or mesh routing protocol to populate their routing run an ad hoc or mesh routing protocol to populate their routing
skipping to change at page 20, line 41 skipping to change at page 22, line 17
An originator device may use other intermediate devices as forwarders An originator device may use other intermediate devices as forwarders
towards the final destination. In order to achieve such frame towards the final destination. In order to achieve such frame
delivery using unicast, it is necessary to include the link-layer delivery using unicast, it is necessary to include the link-layer
addresses of the originator and final destinations, in addition to addresses of the originator and final destinations, in addition to
the hop-by-hop source and destination. the hop-by-hop source and destination.
This section defines how to effect delivery of layer 2 frames in a This section defines how to effect delivery of layer 2 frames in a
mesh, given a target "Final Destination" link-layer address. mesh, given a target "Final Destination" link-layer address.
Mesh delivery is enabled by including a Mesh Addressing header prior Mesh delivery is enabled by including a Mesh Addressing header prior
to any other headers of the LoWPAN encapsulation (Section 5), to any other headers of the LoWPAN encapsulation (Section 5), an
unfragmented and fragmented, a full-blown IPv6 header, or a unfragmented and fragmented header; a full-blown IPv6 header; or a
compressed IPv6 header as per Section 10, or any others defined compressed IPv6 header as per Section 10 or any others defined
elsewhere. elsewhere.
If a node wishes to use a default mesh forwarder to deliver a packet If a node wishes to use a default mesh forwarder to deliver a packet
(i.e., because it does not have direct reachability to the (i.e., because it does not have direct reachability to the
destination), it MUST include a Mesh Addressing header with the destination), it MUST include a Mesh Addressing header with the
originator's link-layer address set to its own, and the final originator's link-layer address set to its own, and the final
destination's link-layer address set to the packet's ultimate destination's link-layer address set to the packet's ultimate
destination. It sets the source address in the 802.15.4 header to destination. It sets the source address in the 802.15.4 header to
its own link-layer address, and puts the forwarder's link-layer its own link-layer address, and puts the forwarder's link-layer
address in the 802.15.4 header's destination address field. Finally, address in the 802.15.4 header's destination address field. Finally,
skipping to change at page 21, line 44 skipping to change at page 23, line 19
broadcast header consists of a LOWPAN_BC0 dispatch followed by a broadcast header consists of a LOWPAN_BC0 dispatch followed by a
sequence number field. The sequence number is used to detect sequence number field. The sequence number is used to detect
duplicate packets (and hopefully suppress them). duplicate packets (and hopefully suppress them).
1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|1|LOWPAN_BC0 |Sequence Number| |0|1|LOWPAN_BC0 |Sequence Number|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 17: Broadcast Header Figure 11: Broadcast Header
Field definitions are as follows: Field definitions are as follows:
Sequence Number: This 8-bit field SHALL be incremented by the Sequence Number: This 8-bit field SHALL be incremented by the
originator whenever it sends a new mesh broadcast or multicast originator whenever it sends a new mesh broadcast or multicast
packet. Full specification of how to handle this field is out of packet. Full specification of how to handle this field is out of
scope of this document. the scope of this document.
Further implications of such mesh-layer broadcast, e.g., whether it Further implications of such mesh-layer broadcast, e.g., whether it
maps to a controlled flooding mechanism or its role in, say, topology maps to a controlled flooding mechanism or its role in, say, topology
discovery, is out of scope of this document. discovery, is out of the scope of this document.
Additional mesh routing capabilities, such as specifying the mesh Additional mesh routing capabilities, such as specifying the mesh
routing protocol, source routing, and so on may be expressed by routing protocol, source routing, and so on may be expressed by
defining additional routing headers that preceed the fragmentation or defining additional routing headers that precede the fragmentation or
addressing header in the header stack. The full specification of addressing header in the header stack. The full specification of
such mesh routing capabilities are out of scope of this document. such mesh routing capabilities are out of the scope of this document.
12. IANA Considerations 12. IANA Considerations
This document creates two new IANA registries, as discussed below. This document creates two new IANA registries, as discussed below.
Future assignments in these registries are to be coordinated via IANA Future assignments in these registries are to be coordinated via IANA
under the policy of "Specification Required" [RFC2434]. It is under the policy of "Specification Required" [RFC2434]. It is
expected that this policy will allow for other (non-IETF) expected that this policy will allow for other (non-IETF)
organizations to more easily obtain assignments. organizations to more easily obtain assignments.
This document creates a new IANA registry for the Dispatch type field This document creates a new IANA registry for the Dispatch type field
shown in the header definitions Section 5. This document defines the shown in the header definitions in Section 5. This document defines
values IPv6, LOWPAN_HC1 header compression, BC0 broadcast and two the values IPv6, LOWPAN_HC1 header compression, BC0 broadcast and two
escape patterns (NALP to indicate not a LOWPAN frame and ESC to allow escape patterns (NALP to indicate not a LOWPAN frame and ESC to allow
additional dispatch bytes). This document defines this field to be 8 additional dispatch bytes). This document defines this field to be 8
bits long. The values 00xxxxxx being reserved and not used, this bits long. The values 00xxxxxx being reserved and not used, allows
allows for a total of 192 different values, which should be more than for a total of 192 different values, which should be more than
enough. If header compression formats in addition to HC1 are defined enough. If header compression formats in addition to HC1 are defined
or if additional TCP, ICMP HC2 formats are defined, it is expected or if additional TCP, ICMP HC2 formats are defined, it is expected
that these will use reserved dispatch values following LOWPAN_HC1. that these will use reserved dispatch values following LOWPAN_HC1.
If additional mesh delivery formats are defined these will use If additional mesh delivery formats are defined these will use
reserved values following LOWPAN_BC0. reserved values following LOWPAN_BC0.
This document creates a new IANA registry for the 16-bit short This document creates a new IANA registry for the 16-bit short
address fields as used in 6LoWPAN packets. address fields as used in 6LoWPAN packets.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 16-bit short Address | | 16-bit short Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 18
Figure 12
This registry MUST include the addresses 0xffff (16-bit broadcast This registry MUST include the addresses 0xffff (16-bit broadcast
address accepted by all devices currently listening to the channel) address accepted by all devices currently listening to the channel)
and 0xfffe as defined in [ieee802.15.4]. Additionally, within and 0xfffe as defined in [ieee802.15.4]. Additionally, within
6LoWPAN networks, 16-bit short addresses MUST follow this format 6LoWPAN networks, 16-bit short addresses MUST follow this format
(referring to bit fields in the order from 0 to 7), where "x" is a (referring to bit fields in the order from 0 to 7), where "x" is a
place holder for an unspecified bit value: place holder for an unspecified bit value:
Range 1, Oxxxxxxxxxxxxxxx: The first bit (bit 0) SHALL be zero if Range 1, 0xxxxxxxxxxxxxxx: The first bit (bit 0) SHALL be zero if
the 16-bit address is a unicast address. This leaves 15 bits for the 16-bit address is a unicast address. This leaves 15 bits for
the actual address. the actual address.
Range 2, 100xxxxxxxxxxxxx: Bits 0,1 and 2 SHALL follow this pattern Range 2, 100xxxxxxxxxxxxx: Bits 0, 1, and 2 SHALL follow this
if the 16-bit address is a multicast address (see Section 9). pattern if the 16-bit address is a multicast address (see
This leaves 13 bits for the actual multicast address. Section 9). This leaves 13 bits for the actual multicast address.
Range 3, 101xxxxxxxxxxxxx: This pattern for bits 0,1 and 2 is Range 3, 101xxxxxxxxxxxxx: This pattern for bits 0, 1, and 2 is
reserved. Any future assignment shall follow the policy mentioned reserved. Any future assignment shall follow the policy mentioned
above. above.
Range 4, 110xxxxxxxxxxxxx: This pattern for bits 0,1 and 2 is Range 4, 110xxxxxxxxxxxxx: This pattern for bits 0, 1, and 2 is
reserved. Any future assignment shall follow the policy mentioned reserved. Any future assignment shall follow the policy mentioned
above. above.
Range 5, 111xxxxxxxxxxxxx: This pattern for bits 0,1 and 2 is Range 5, 111xxxxxxxxxxxxx: This pattern for bits 0, 1, and 2 is
reserved. Any future assignment shall follow the policy mentioned reserved. Any future assignment shall follow the policy mentioned
above. above.
13. Security Considerations 13. Security Considerations
The method of derivation of Interface Identifiers from EUI-64 MAC The method of derivation of Interface Identifiers from EUI-64 MAC
addresses is intended to preserve global uniqueness when possible. addresses is intended to preserve global uniqueness when possible.
However, there is no protection from duplication through accident or However, there is no protection from duplication through accident or
forgery. forgery.
Neighbor Discovery in IEEE 802.15.4 links may be susceptible to Neighbor Discovery in IEEE 802.15.4 links may be susceptible to
threats as detailed in [RFC3756]. Mesh routing is expected to be threats as detailed in [RFC3756]. Mesh routing is expected to be
common in IEEE 802.15.4 networks. This implies additional threats common in IEEE 802.15.4 networks. This implies additional threats
due to ad hoc routing as per [KW03]. IEEE 802.15.4 provides some due to ad hoc routing as per [KW03]. IEEE 802.15.4 provides some
capability for link-layer security. Users are urged to make use of capability for link-layer security. Users are urged to make use of
such provisions if at all possible and practical. Doing so will such provisions if at all possible and practical. Doing so will
alleviate the threats referred to above. alleviate the threats stated above.
A sizeable portion of IEEE 802.15.4 devices is expected to always A sizeable portion of IEEE 802.15.4 devices is expected to always
communicate within their PAN (i.e., within their link, in IPv6 communicate within their PAN (i.e., within their link, in IPv6
terms). In response to cost and power consumption considerations, terms). In response to cost and power consumption considerations,
and in keeping with the IEEE 802.15.4 model of "Reduced Function and in keeping with the IEEE 802.15.4 model of "Reduced Function
Devices" (RFDs), these devices will typically implement the minimum Devices" (RFDs), these devices will typically implement the minimum
set of features necessary. Accordingly, security for such devices set of features necessary. Accordingly, security for such devices
may rely quite strongly on the mechanisms defined at the link-layer may rely quite strongly on the mechanisms defined at the link layer
by IEEE 802.15.4. The latter, however, only defines the AES modes by IEEE 802.15.4. The latter, however, only defines the Advanced
for authentication or encryption of IEEE 802.15.4 frames, and does Encryption Standard (AES) modes for authentication or encryption of
not, in particular, specify key management (presumably group IEEE 802.15.4 frames, and does not, in particular, specify key
oriented). Other issues to address in real deployments relate to management (presumably group oriented). Other issues to address in
secure configuration and management. Whereas such a complete picture real deployments relate to secure configuration and management.
is out of scope of this document, it is imperative that IEEE 802.15.4 Whereas such a complete picture is out of the scope of this document,
networks be deployed with such considerations in mind. Of course, it it is imperative that IEEE 802.15.4 networks be deployed with such
is also expected that some IEEE 802.15.4 devices (the so-called "Full considerations in mind. Of course, it is also expected that some
Function Devices", or "FFDs") will implement coordination or IEEE 802.15.4 devices (the so-called "Full Function Devices", or
integration functions. These may communicate regularly with off-link "FFDs") will implement coordination or integration functions. These
IPv6 peers (in addition to the more common on-link exchanges). Such may communicate regularly with off-link IPv6 peers (in addition to
IPv6 devices are expected to secure their end-to-end communications the more common on-link exchanges). Such IPv6 devices are expected
with the usual mechanisms (e.g., IPsec, TLS, etc). to secure their end-to-end communications with the usual mechanisms
(e.g., IPsec, TLS, etc).
14. Acknowledgements 14. Acknowledgements
Thanks to the authors of RFC 2464 and RFC 2734, as parts of this Thanks to the authors of RFC 2464 and RFC 2734, as parts of this
document are patterned after theirs. Thanks to Geoff Mulligan for document are patterned after theirs. Thanks to Geoff Mulligan for
useful discussions which helped shape this document. Erik Nordmark's useful discussions which helped shape this document. Erik Nordmark's
suggestions were instrumental for the header compression section. suggestions were instrumental for the header compression section.
Also thanks to Shoichi Sakane, Samita Chakrabarti, Vipul Gupta, Also thanks to Shoichi Sakane, Samita Chakrabarti, Vipul Gupta,
Carsten Bormann, Ki-Hyung Kim, Mario Mao, Phil Levis, Magnus Carsten Bormann, Ki-Hyung Kim, Mario Mao, Phil Levis, Magnus
Westerlund and Jari Arkko. Westerlund, and Jari Arkko.
15. References 15. References
15.1. Normative References 15.1. Normative References
[I-D.ietf-ipv6-2461bis] [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Narten, T., "Neighbor Discovery for IP version 6 (IPv6)", Requirement Levels", BCP 14, RFC 2119, March 1997.
draft-ietf-ipv6-2461bis-11 (work in progress), March 2007.
[I-D.ietf-ipv6-rfc2462bis] [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing
Thomson, S., "IPv6 Stateless Address Autoconfiguration", an IANA Considerations Section in RFCs", BCP 26,
draft-ietf-ipv6-rfc2462bis-08 (work in progress), RFC 2434, October 1998.
May 2005.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2460] Deering, S. and R. Hinden, "Internet Protocol,
Requirement Levels", BCP 14, RFC 2119, March 1997. Version 6 (IPv6) Specification", RFC 2460,
December 1998.
[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an [RFC2464] Crawford, M., "Transmission of IPv6 Packets over
IANA Considerations Section in RFCs", BCP 26, RFC 2434, Ethernet Networks", RFC 2464, December 1998.
October 1998.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
(IPv6) Specification", RFC 2460, December 1998. Architecture", RFC 4291, February 2006.
[RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H.
Networks", RFC 2464, December 1998. Soliman, "Neighbor Discovery for IP version 6
(IPv6)", RFC 4861, September 2007.
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6
Architecture", RFC 4291, February 2006. Stateless Address Autoconfiguration", RFC 4862,
September 2007.
[ieee802.15.4] [ieee802.15.4] IEEE Computer Society, "IEEE Std. 802.15.4-2003",
IEEE Computer Society, "IEEE Std. 802.15.4-2003", October 2003.
October 2003.
15.2. Informative References 15.2. Informative References
[EUI64] "GUIDELINES FOR 64-BIT GLOBAL IDENTIFIER (EUI-64) [EUI64] "GUIDELINES FOR 64-BIT GLOBAL IDENTIFIER (EUI-64)
REGISTRATION AUTHORITY", IEEE http://standards.ieee.org/ REGISTRATION AUTHORITY", IEEE http://
regauth/oui/tutorials/EUI64.html. standards.ieee.org/regauth/oui/tutorials/EUI64.html.
[KW03] Karlof, Chris and Wagner, David, "Secure Routing in Sensor [KW03] Karlof, Chris and Wagner, David, "Secure Routing in
Networks: Attacks and Countermeasures", Elsevier's AdHoc Sensor Networks: Attacks and Countermeasures",
Networks Journal, Special Issue on Sensor Network Elsevier's AdHoc Networks Journal, Special Issue on
Applications and Protocols vol 1, issues 2-3, Sensor Network Applications and Protocols vol 1,
September 2003. issues 2-3, September 2003.
[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
August 1980. August 1980.
[RFC3756] Nikander, P., Kempf, J., and E. Nordmark, "IPv6 Neighbor [RFC3756] Nikander, P., Kempf, J., and E. Nordmark, "IPv6
Discovery (ND) Trust Models and Threats", RFC 3756, Neighbor Discovery (ND) Trust Models and Threats",
May 2004. RFC 3756, May 2004.
[RFC3819] Karn, P., Bormann, C., Fairhurst, G., Grossman, D., [RFC3819] Karn, P., Bormann, C., Fairhurst, G., Grossman, D.,
Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J., and L. Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J.,
Wood, "Advice for Internet Subnetwork Designers", BCP 89, and L. Wood, "Advice for Internet Subnetwork
RFC 3819, July 2004. Designers", BCP 89, RFC 3819, July 2004.
Appendix A. Alternatives for Delivery of Frames in a Mesh Appendix A. Alternatives for Delivery of Frames in a Mesh
Before settling on the mechanism finally adopted for delivery in a Before settling on the mechanism finally adopted for delivery in a
mesh (Section 11), several alternatives were considered. In addition mesh (Section 11), several alternatives were considered. In addition
to the hop-by-hop source and destination link-layer addresses, to the hop-by-hop source and destination link-layer addresses,
delivering a packet in a LoWPAN mesh requires the end-to-end delivering a packet in a LoWPAN mesh requires the end-to-end
originator and destination addresses. These could be expressed originator and destination addresses. These could be expressed
either as layer 2 or as layer 3 (i.e., IP ) addresses. In the latter either as layer 2 or as layer 3 (i.e., IP ) addresses. In the latter
case, there would be no need to provide any additional header support case, there would be no need to provide any additional header support
skipping to change at page 26, line 28 skipping to change at page 28, line 36
receives a subsequent fragment would lack the required information. receives a subsequent fragment would lack the required information.
It would be forced to wait until it receives the IP header (within It would be forced to wait until it receives the IP header (within
the first fragment) before being able to forward the fragment any the first fragment) before being able to forward the fragment any
further. This imposes some additional buffering requirements on further. This imposes some additional buffering requirements on
intermediate nodes. Additionally, such a specification would only intermediate nodes. Additionally, such a specification would only
work for one type of LoWPAN payload: IPv6. In general, it would have work for one type of LoWPAN payload: IPv6. In general, it would have
to be adapted for any other payload, and would require that payload to be adapted for any other payload, and would require that payload
to provide its own end-to-end addressing information. to provide its own end-to-end addressing information.
On the other hand, the approach finally followed (Section 11) creates On the other hand, the approach finally followed (Section 11) creates
a mesh at the LoWPAN layer (below layer 3). Accordingly, link-layer a mesh at the LoWPAN layer (below layer 3). Accordingly, the link-
originator and final destination address are included within the layer originator and final destination address are included within
LoWPAN header. This enables mesh delivery for any protocol or the LoWPAN header. This enables mesh delivery for any protocol or
application layered on the LoWPAN adaptation layer (Section 5). For application layered on the LoWPAN adaptation layer (Section 5). For
IPv6 as supported in this document, another advantage of expressing IPv6 as supported in this document, another advantage of expressing
the originator and final destinations as layer 2 addresses is that the originator and final destinations as layer 2 addresses is that
the IPv6 addresses can be compressed as per the header compression the IPv6 addresses can be compressed as per the header compression
specified in Section 10. Furthermore, the number of octets needed to specified in Section 10. Furthermore, the number of octets needed to
maintain routing tables is reduced due to the smaller size of maintain routing tables is reduced due to the smaller size of
802.15.4 addresses (either 64 bits or 16 bits) as compared to IPv6 802.15.4 addresses (either 64 bits or 16 bits) as compared to IPv6
addresses (128 bits). A disadvantage is that applications on top of addresses (128 bits). A disadvantage is that applications on top of
IP do not address packets to link-layer destination addresses, but to IP do not address packets to link-layer destination addresses, but to
IP (layer 3) destination addresses. Thus, given an IP address, there IP (layer 3) destination addresses. Thus, given an IP address, there
is a need to resolve the corresponding link-layer address. is a need to resolve the corresponding link-layer address.
Accordingly, a mesh routing specification needs to clarify the Accordingly, a mesh routing specification needs to clarify the
Neighbor Discovery implications, although in some special cases, it Neighbor Discovery implications, although in some special cases, it
may be possible to derive a device's address at layer 2 from its may be possible to derive a device's address at layer 2 from its
address at layer 3 (and viceversa). Such complete specification is address at layer 3 (and vice versa). Such complete specification is
outside the scope of this document. outside the scope of this document.
Appendix B. Changes
Changes up to version 13 are as follows:
Fixed note about datagram_size: it needs to codify a max of 1280.
Changed multicast address mapping from MAY in a mesh configuration
to a MUST only use in a mesh configuration.
Changes up to version 12 are as follows:
Datagram_tag size increased.
Fixed UDP port P done without IANA intervention.
Deleted unused references, and various editorial clarifications
and issues resulting from IESG review.
Changes up to version 11 are as follows:
Changed to MUST discard (from SHOULD) fragments after a disconnect
or reassembly timeout expiration.
3rd last para of section 6: Added reference to IPv6 over Ethernet
in addition to that in the 1st paragraph.
Changes up to version 09 and 10 are as follows:
Editorial changes, typos, nits.
Changes up to version draft-ietf-6lowpan-format-08.txt are as
follows:
Clarification of dispatch header name space and Mesh Delivery
Header.
Changes up to version draft-ietf-6lowpan-format-07.txt are as
follows:
Conversion to stacked header layout analogous to IPv6 headers.
Changes up to version draft-ietf-6lowpan-format-06.txt are as
follows:
Further clarification in the reassembly procedures.
Editorial nits and corrections.
Changes up to version draft-ietf-6lowpan-format-05.txt are as
follows:
Added some padding bits to the first and subsequent fragment
formats to align on an octet boundary.
Header compression may result in alignment not falling on an octet
boundary. Since hardware typically cannot transmit units less
than an octet, added text to the effect that one lays out the
contiguous compressed headers and then zero bits SHOULD BE added
as appropriate to align to an octet boundary.
Added how to distinguish between the multicast and the unicast
formats for the mesh delivery field. We use one of the 5 reserved
bits to signal if the bcast/mcast mesh delivery format is being
used, and we called it the 'B' ("broadcast") bit. So no change to
the mesh delivery fields is required. Since the reserved bits are
common to all three lowpan header formats, the 'B' bit applies to
all.
Changes from version draft-ietf-6lowpan-format-02.txt to version
draft-ietf-6lowpan-format-03.txt are as follows:
Interface Identifier derivation using 16-bit short addresses now
using the PAN ID as well.
Word of caution on the transient nature of 16 bit short addresses.
Reassembly now also keying on destination and datagram_size.
Mesh delivery header now allowing mix of 16/64 bit addresses.
This leaves 6 bits for hops_left (64 hops is plenty).
Added optional Multicast Address mapping patterned after that of
ethernet.
Clarified that all zero addresses must not be used (for either 16
or 64 bit formats).
Added address format section to IANA considerations to define
unicast, multicast and reserved address formats.
Added Mesh Broadcast or Multicast Delivery Field.
Created a new section on Addressing Modes.
Sundry editorial changes.
Changes from version draft-ietf-6lowpan-format-01.txt to version
draft-ietf-6lowpan-format-02.txt are as follows:
Further details on broadcast by using PAN-specific broadcast.
Sundry editorial changes.
Changes from version draft-ietf-6lowpan-format-00.txt to version
draft-ietf-6lowpan-format-01.txt are as follows:
Added a reassembly timeout of 15 sec.
Added support for 16-bit "short" addresses.
datagram tag now at 10 bits protocol_type and datagram offset both
went from 11 to 8 bits (which is still enough for the format, and
which implies counting offset in units of 8 octets for the
latter).
Addition of the originator's link-layer source address to the
"Mesh Delivery" header.
Changed name of "Final Destination" header to "Mesh Delivery"
header.
Further clarification on mesh delivery.
Sundry editorial changes.
Changes from version
draft-montenegro-lowpan-ipv6-over-802.15.4-02.txt to version
draft-ietf-6lowpan-format-00.txt are as follows:
The LoWPAN encapsulation was modified to allow 11 bits of protocol
type (prot_type field). Because of this, the minimum overhead
grew from 1 octet to 2 octets. This was done in order to allow
more protocol types as the previous format started with a field
only 5 bits wide. Whereas growing it to 7 bits was possible in
the future, this would always entail 2 octets of overhead for the
longer protocol types to be used.
The 'M' bit had been left out of the 3rd packet format (for
subsequent fragments). Corrected this oversight. This means that
the fragment tag lost one bit.
Sundry editorial changes.
Authors' Addresses Authors' Addresses
Gabriel Montenegro Gabriel Montenegro
Microsoft Corporation Microsoft Corporation
Email: [email protected] EMail: [email protected]
Nandakishore Kushalnagar Nandakishore Kushalnagar
Intel Corp Intel Corp
Email: [email protected] EMail: [email protected]
Jonathan W. Hui Jonathan W. Hui
Arch Rock Corp Arch Rock Corp
Email: [email protected] EMail: [email protected]
David E. Culler David E. Culler
Arch Rock Corp Arch Rock Corp
Email: [email protected] EMail: [email protected]
Full Copyright Statement Full Copyright Statement
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors contained in BCP 78, and except as set forth therein, the authors
retain all their rights. retain all their rights.
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
skipping to change at page 31, line 44 skipping to change at line 1284
attempt made to obtain a general license or permission for the use of attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at this standard. Please address the information to the IETF at
[email protected] [email protected]
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
 End of changes. 143 change blocks. 
397 lines changed or deleted 286 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/