| < draft-bergmann-bier-ccast-01.txt | draft-bergmann-bier-ccast-02.txt > | |||
|---|---|---|---|---|
| Network Working Group O. Bergmann | Network Working Group O. Bergmann | |||
| Internet-Draft C. Bormann | Internet-Draft C. Bormann | |||
| Intended status: Standards Track S. Gerdes | Intended status: Standards Track S. Gerdes | |||
| Expires: October 5, 2016 Universitaet Bremen TZI | Expires: April 8, 2017 Universitaet Bremen TZI | |||
| H. Chen | H. Chen | |||
| Huawei Technologies | Huawei Technologies | |||
| April 03, 2016 | October 05, 2016 | |||
| Constrained-Cast: Source-Routed Multicast for RPL | Constrained-Cast: Source-Routed Multicast for RPL | |||
| draft-bergmann-bier-ccast-01 | draft-bergmann-bier-ccast-02 | |||
| Abstract | Abstract | |||
| This specification defines a protocol for forwarding multicast | This specification defines a protocol for forwarding multicast | |||
| traffic in a constrained node network employing the RPL routing | traffic in a constrained node network employing the RPL routing | |||
| protocol in non-storing mode. | protocol in non-storing mode. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on October 5, 2016. | This Internet-Draft will expire on April 8, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 13 ¶ | skipping to change at page 2, line 13 ¶ | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. The BIER Approach . . . . . . . . . . . . . . . . . . . . . . 3 | 2. The BIER Approach . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. The Constrained-Cast Approach . . . . . . . . . . . . . . . . 3 | 3. The Constrained-Cast Approach . . . . . . . . . . . . . . . . 3 | |||
| 4. False Positives . . . . . . . . . . . . . . . . . . . . . . . 3 | 4. False Positives . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5.1. Multicast Listener Advertisement Object (MLAO) . . . . . 4 | 5.1. Multicast Listener Advertisement Object (MLAO) . . . . . 4 | |||
| 5.2. Routing Header . . . . . . . . . . . . . . . . . . . . . 5 | 5.2. Routing Header . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 6. Implementation . . . . . . . . . . . . . . . . . . . . . . . 6 | 6. Implementation . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 7. Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 7. Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8.1. ICMPv6 Parameter Registration . . . . . . . . . . . . . . 7 | 8.1. ICMPv6 Parameter Registration . . . . . . . . . . . . . . 7 | |||
| 8.2. IPv6 Routing Type Registration . . . . . . . . . . . . . 7 | 8.2. IPv6 Routing Type Registration . . . . . . . . . . . . . 7 | |||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 8 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| skipping to change at page 2, line 43 ¶ | skipping to change at page 2, line 43 ¶ | |||
| up and create bread-crumbs. This specification, although part of RFC | up and create bread-crumbs. This specification, although part of RFC | |||
| 6550, appears to be incomplete and untested. More importantly, | 6550, appears to be incomplete and untested. More importantly, | |||
| Storing Mode is not in use in constrained node networks outside | Storing Mode is not in use in constrained node networks outside | |||
| research operating environments. | research operating environments. | |||
| The present specification addresses multicast forwarding for RPL | The present specification addresses multicast forwarding for RPL | |||
| networks in the much more common Non-Storing Mode. Non-Storing is | networks in the much more common Non-Storing Mode. Non-Storing is | |||
| based on the root node adding source-routing information to downward | based on the root node adding source-routing information to downward | |||
| packets. Evidently, to make this work, RPL multicast needs to | packets. Evidently, to make this work, RPL multicast needs to | |||
| source-route multicast packets. A source route here is a list of | source-route multicast packets. A source route here is a list of | |||
| outgoing interfaces, which subsets the whole set of potential | identifiers to instruct forwarders to relay the respective IP | |||
| forwarders available in the RPL DODAG to those that need to forward | datagram. | |||
| in order to reach known multicast listeners. | ||||
| As every forwarder in an IP-based constrained node network has at | ||||
| least one network interface, it is straight-forward to use the | ||||
| address of an outgoing interface as identifiers in this source-route. | ||||
| (Typically, this is a globally unique public address of the node's | ||||
| only network adapter.) | ||||
| The source-route subsets the whole set of potential forwarders | ||||
| available in the RPL DODAG to those that need to forward in order to | ||||
| reach known multicast listeners. | ||||
| Including an actual list of outgoing interfaces is rarely applicable, | Including an actual list of outgoing interfaces is rarely applicable, | |||
| as this is likely to be a large list of 16-byte IPv6 addresses. Even | as this is likely to be a large list of 16-byte IPv6 addresses. Even | |||
| with [RFC6554] style compression, the size of the list becomes | with [RFC6554] style compression, the size of the list becomes | |||
| prohibitively quickly. | prohibitively quickly. | |||
| 1.1. Terminology | 1.1. Terminology | |||
| 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 | |||
| skipping to change at page 4, line 38 ¶ | skipping to change at page 4, line 49 ¶ | |||
| yes, it then forwards the packet to all outgoing interfaces that | yes, it then forwards the packet to all outgoing interfaces that | |||
| match the bloom filter in the packet. | match the bloom filter in the packet. | |||
| 5.1. Multicast Listener Advertisement Object (MLAO) | 5.1. Multicast Listener Advertisement Object (MLAO) | |||
| The header format of the MLAO is depicted in Figure 1. The basic | The header format of the MLAO is depicted in Figure 1. The basic | |||
| structure of the MLAO message is similar to the RPL Destination | structure of the MLAO message is similar to the RPL Destination | |||
| Advertisement Object (DAO). In particular, it starts with RPL ICMP | Advertisement Object (DAO). In particular, it starts with RPL ICMP | |||
| base header with a type value of 155 and the code {IANA TBD1} (MLAO), | base header with a type value of 155 and the code {IANA TBD1} (MLAO), | |||
| followed by the Checksum, RPLInstanceID, parameters and flags as in a | followed by the Checksum, RPLInstanceID, parameters and flags as in a | |||
| DAO. A sequence number allows ordering of MLAOs generated by a | DAO. | |||
| sender. | ||||
| 0 1 2 3 | 0 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type = 0x05 | Option Length | Reserved | Prefix Length | | | Type = 0x05 | Option Length | Reserved | Prefix Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| + + | + + | |||
| | Group Address | | | Group Address | | |||
| . . | . . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: RPL Target Option for MLAO | Figure 1: RPL Target Option for MLAO | |||
| The next header field indicates the group that the sender is | The group address field indicates the group that the sender of the | |||
| interested in. This field usually contains a 128 bit IPv6 multicast | MLAO is interested in. This field usually contains a 128 bit IPv6 | |||
| group address. Shorter group identifiers could be used together with | multicast group address. Shorter group identifiers could be used | |||
| a protocol for explicit creation of groups. The MLAO message must | together with a protocol for explicit creation of groups. The MLAO | |||
| have at least one RPL target option to specify the address of the | message must have at least one RPL target option to specify the | |||
| listener that has generated the MLAO. As the MLAO message is | address of the listener that has generated the MLAO. The message is | |||
| forwarded hop-by-hop upwards the routing tree using link-local | directed to the global unicast address of the DODAG root and travels | |||
| addresses only, the target option is the only way to communicate the | upwards the routing tree. | |||
| interface address to be used for group subscription. | ||||
| Note: It has been suggested to use the RPL Transit Option (Type | ||||
| 0x06) instead as it is used in Non-Storing mode to inform the | ||||
| DODAG root of path attributes. Specifically, this option can be | ||||
| used to limit the subscription by providing a proper Path | ||||
| Lifetime. | ||||
| 5.2. Routing Header | 5.2. Routing Header | |||
| 0 1 2 3 | 0 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Next Header | Hdr Ext Len | Routing Type | Segments Left | | | Next Header | Hdr Ext Len | Routing Type | Segments Left | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sequence Number | Func set | Modulus | | | Sequence Number | Func set | Modulus | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 5, line 48 ¶ | skipping to change at page 6, line 4 ¶ | |||
| | | | | | | |||
| . . | . . | |||
| . Filter data . | . Filter data . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: Routing header | Figure 2: Routing header | |||
| Routing Type: {IANA TBD2} 253 | Routing Type: {IANA TBD2} 253 | |||
| Segments Left: This value is always 0, so network nodes that do not | Segments Left: This value is always 0, so network nodes that do not | |||
| support this routing header do not generate ICMP6 error messages. | support this routing header do not generate ICMP6 error messages. | |||
| Sequence Number: 16 bits sequence number. The number space is | Sequence Number: 16 bits sequence number. The number space is | |||
| unique for a sequence of multicast datagrams for a specific group | unique for a sequence of multicast datagrams for a specific group | |||
| that arrive at the DAG root on their way up. The DAG root | that arrive at the DAG root on their way up. The DAG root | |||
| increments the number for each datagram it sends down the | increments the number for each datagram it sends down the | |||
| respective DODAG. | respective DODAG. | |||
| Func set: The set of hash functions used to generate the Filter data | Func set: The set of hash functions used to generate the Filter data | |||
| value. | value. | |||
| Note: As the function set contains a combination of several distinct | Note: As the function set contains a combination of several distinct | |||
| hash functions, it is currently unclear if 8 bits number space is | hash functions, it is currently unclear if 8 bits number space is | |||
| large enough. | large enough. | |||
| Modulus: The modulus that is used by the hash functions, minus 64 | Modulus: The modulus that is used by the hash functions, minus 64 | |||
| (the minimum filter data size that can be used). The sender | (the minimum filter data size that can be used). The DAG root | |||
| chooses the modulus (and thus the filter data size) to achieve its | chooses the modulus (and thus the filter data size) to achieve its | |||
| objectives for false positive rates (Section 4). | objectives for false positive rates (Section 4). | |||
| Filter data: A bit field that indicates which nodes should relay | Filter data: A bit field that indicates which nodes should relay | |||
| this multicast datagram. The length of this field is a multiple | this multicast datagram. The length of this field is a multiple | |||
| of 8 bytes. The actual length is derived from the contents of the | of 8 bytes. The actual length is derived from the contents of the | |||
| field Header Ext Length. | field Header Ext Length. | |||
| Note: The modulus could be derived from the length of the filter data | Note: The modulus could be derived from the length of the filter data | |||
| which is known from the extension header size. On the other hand, | which is known from the extension header size. On the other hand, | |||
| keeping a separate record of the modulus means that the sender could | keeping a separate record of the modulus means that the DAG root | |||
| leave out 8-byte multiples of trailing zero bits if they happen to | could leave out 8-byte multiples of trailing zero bits if they happen | |||
| occur. But then, a modulus that leaves 8-byte sequences of zero bits | to occur. But then, a modulus that leaves 8-byte sequences of zero | |||
| in the filter is probably too large. | bits in the filter is probably too large. | |||
| 6. Implementation | 6. Implementation | |||
| In 2013, Constrained-Cast was implemented in Contiki. It turns out | In 2013, Constrained-Cast was implemented in Contiki. It turns out | |||
| that forwarders can compute the hash functions once for their | that forwarders can compute the hash functions once for their | |||
| outgoing interfaces and then cache them, simply bit-matching their | outgoing interfaces and then cache them, simply bit-matching their | |||
| outgoing interface hash bits against the bloom filter in the packet | outgoing interface hash bits against the bloom filter in the packet | |||
| (a match is indicated when all bits in the outgoing interface hash | (a match is indicated when all bits in the outgoing interface hash | |||
| are set in the bloom filter). | are set in the bloom filter). | |||
| skipping to change at page 8, line 7 ¶ | skipping to change at page 8, line 7 ¶ | |||
| Types registry: | Types registry: | |||
| +-------+----------------------+------------+ | +-------+----------------------+------------+ | |||
| | Value | Name | Reference | | | Value | Name | Reference | | |||
| +-------+----------------------+------------+ | +-------+----------------------+------------+ | |||
| | TBD2 | CCast Routing Header | [RFC-XXXX] | | | TBD2 | CCast Routing Header | [RFC-XXXX] | | |||
| +-------+----------------------+------------+ | +-------+----------------------+------------+ | |||
| 9. Acknowledgments | 9. Acknowledgments | |||
| Thanks to Yasuyuki Tanaka for valuable comments. | ||||
| This work has been supported by Siemens Corporate Technology. | This work has been supported by Siemens Corporate Technology. | |||
| 10. References | 10. References | |||
| 10.1. Normative References | 10.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| skipping to change at page 8, line 33 ¶ | skipping to change at page 8, line 35 ¶ | |||
| <http://www.rfc-editor.org/info/rfc6550>. | <http://www.rfc-editor.org/info/rfc6550>. | |||
| 10.2. Informative References | 10.2. Informative References | |||
| [BLOOM] Bloom, B., "Space/time trade-offs in hash coding with | [BLOOM] Bloom, B., "Space/time trade-offs in hash coding with | |||
| allowable errors", ISSN 0001-0782, ACM | allowable errors", ISSN 0001-0782, ACM | |||
| Press Communications of the ACM vol 13 no 7 pp 422-426, | Press Communications of the ACM vol 13 no 7 pp 422-426, | |||
| 1970, <http://doi.acm.org/10.1145/362686.362692>. | 1970, <http://doi.acm.org/10.1145/362686.362692>. | |||
| [I-D.ietf-bier-architecture] | [I-D.ietf-bier-architecture] | |||
| Wijnands, I., Rosen, E., Dolganow, A., P, T., and S. | Wijnands, I., Rosen, E., Dolganow, A., Przygienda, T., and | |||
| Aldrin, "Multicast using Bit Index Explicit Replication", | S. Aldrin, "Multicast using Bit Index Explicit | |||
| draft-ietf-bier-architecture-03 (work in progress), | Replication", draft-ietf-bier-architecture-04 (work in | |||
| January 2016. | progress), July 2016. | |||
| [RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6 | [RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6 | |||
| Routing Header for Source Routes with the Routing Protocol | Routing Header for Source Routes with the Routing Protocol | |||
| for Low-Power and Lossy Networks (RPL)", RFC 6554, | for Low-Power and Lossy Networks (RPL)", RFC 6554, | |||
| DOI 10.17487/RFC6554, March 2012, | DOI 10.17487/RFC6554, March 2012, | |||
| <http://www.rfc-editor.org/info/rfc6554>. | <http://www.rfc-editor.org/info/rfc6554>. | |||
| [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | |||
| Specifications and Registration Procedures", BCP 13, | Specifications and Registration Procedures", BCP 13, | |||
| RFC 6838, DOI 10.17487/RFC6838, January 2013, | RFC 6838, DOI 10.17487/RFC6838, January 2013, | |||
| End of changes. 13 change blocks. | ||||
| 29 lines changed or deleted | 42 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||