| < 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: gabriel.montenegro@microsoft.com | EMail: gabriel.montenegro@microsoft.com | |||
| Nandakishore Kushalnagar | Nandakishore Kushalnagar | |||
| Intel Corp | Intel Corp | |||
| Email: nandakishore.kushalnagar@intel.com | EMail: nandakishore.kushalnagar@intel.com | |||
| Jonathan W. Hui | Jonathan W. Hui | |||
| Arch Rock Corp | Arch Rock Corp | |||
| Email: jhui@archrock.com | EMail: jhui@archrock.com | |||
| David E. Culler | David E. Culler | |||
| Arch Rock Corp | Arch Rock Corp | |||
| Email: dculler@archrock.com | EMail: dculler@archrock.com | |||
| 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 | |||
| ietf-ipr@ietf.org. | ietf-ipr@ietf.org. | |||
| 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.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||