--- 1/draft-ietf-roll-trickle-mcast-06.txt 2014-02-14 16:15:17.246498814 -0800 +++ 2/draft-ietf-roll-trickle-mcast-07.txt 2014-02-14 16:15:17.298500084 -0800 @@ -1,19 +1,19 @@ ROLL J. Hui Internet-Draft Cisco Intended status: Standards Track R. Kelsey -Expires: July 25, 2014 Silicon Labs - January 21, 2014 +Expires: August 19, 2014 Silicon Labs + February 15, 2014 Multicast Protocol for Low power and Lossy Networks (MPL) - draft-ietf-roll-trickle-mcast-06 + draft-ietf-roll-trickle-mcast-07 Abstract This document specifies the Multicast Protocol for Low power and Lossy Networks (MPL) that provides IPv6 multicast forwarding in constrained networks. MPL avoids the need to construct or maintain any multicast forwarding topology, disseminating messages to all MPL Forwarders in an MPL Domain. MPL uses the Trickle algorithm to manage message transmissions for both control and data-plane messages. Different Trickle parameter configurations allow MPL to @@ -27,21 +27,21 @@ Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. 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." - This Internet-Draft will expire on July 25, 2014. + This Internet-Draft will expire on August 19, 2014. Copyright Notice Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -55,45 +55,45 @@ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 4 4. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 5 4.1. MPL Domains . . . . . . . . . . . . . . . . . . . . . . . 5 4.2. Information Base Overview . . . . . . . . . . . . . . . . 6 4.3. Overview . . . . . . . . . . . . . . . . . . . . . . . . 6 4.4. Signaling Overview . . . . . . . . . . . . . . . . . . . 8 5. MPL Parameters and Constants . . . . . . . . . . . . . . . . 8 - 5.1. MPL Multicast Addresses . . . . . . . . . . . . . . . . . 9 + 5.1. MPL Multicast Addresses . . . . . . . . . . . . . . . . . 8 5.2. MPL Message Types . . . . . . . . . . . . . . . . . . . . 9 5.3. MPL Seed Identifiers . . . . . . . . . . . . . . . . . . 9 - 5.4. MPL Forwarder Parameters . . . . . . . . . . . . . . . . 9 + 5.4. MPL Parameters . . . . . . . . . . . . . . . . . . . . . 9 6. Protocol Message Formats . . . . . . . . . . . . . . . . . . 11 6.1. MPL Option . . . . . . . . . . . . . . . . . . . . . . . 11 - 6.2. MPL Control Message . . . . . . . . . . . . . . . . . . . 13 - 6.3. MPL Seed Info . . . . . . . . . . . . . . . . . . . . . . 14 - 7. Information Base . . . . . . . . . . . . . . . . . . . . . . 15 - 7.1. Local Interface Set . . . . . . . . . . . . . . . . . . . 15 + 6.2. MPL Control Message . . . . . . . . . . . . . . . . . . . 12 + 6.3. MPL Seed Info . . . . . . . . . . . . . . . . . . . . . . 13 + 7. Information Base . . . . . . . . . . . . . . . . . . . . . . 14 + 7.1. Local Interface Set . . . . . . . . . . . . . . . . . . . 14 7.2. Domain Set . . . . . . . . . . . . . . . . . . . . . . . 15 7.3. Seed Set . . . . . . . . . . . . . . . . . . . . . . . . 15 7.4. Buffered Message Set . . . . . . . . . . . . . . . . . . 15 8. MPL Seed Sequence Numbers . . . . . . . . . . . . . . . . . . 16 9. MPL Data Messages . . . . . . . . . . . . . . . . . . . . . . 16 9.1. MPL Data Message Generation . . . . . . . . . . . . . . . 16 9.2. MPL Data Message Transmission . . . . . . . . . . . . . . 17 9.3. MPL Data Message Processing . . . . . . . . . . . . . . . 18 10. MPL Control Messages . . . . . . . . . . . . . . . . . . . . 19 10.1. MPL Control Message Generation . . . . . . . . . . . . . 19 10.2. MPL Control Message Transmission . . . . . . . . . . . . 19 10.3. MPL Control Message Processing . . . . . . . . . . . . . 20 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 - 12.1. MPL Option Type . . . . . . . . . . . . . . . . . . . . 22 + 12.1. MPL Option Type . . . . . . . . . . . . . . . . . . . . 21 12.2. MPL ICMPv6 Type . . . . . . . . . . . . . . . . . . . . 22 12.3. Well-known Multicast Addresses . . . . . . . . . . . . . 22 13. Security Considerations . . . . . . . . . . . . . . . . . . . 22 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 14.1. Normative References . . . . . . . . . . . . . . . . . . 23 14.2. Informative References . . . . . . . . . . . . . . . . . 24 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 1. Introduction @@ -193,25 +193,20 @@ designed for networks that communicate using low-power and lossy links with widely varying topologies in both the space and time dimensions. While designed specifically for Low-Power and Lossy Networks, this protocol is not limited to use over such networks. This protocol may be applicable to any network where no multicast routing state is desired. This protocol may also be used in environments where only a subset of links are considered Low-Power and Lossy links. - Operationally, the scope of this protocol is administratively - determined. In other words, the scope of dissemination is determined - by routers configured to disallow transmission or reception of MPL - messages on a subset of interfaces. - A host need not be aware that their multicast is supported by MPL as long as its attachment router forwards multicast messages between the MPL Domain and the host. However, a host may choose to implement MPL so that it can take advantage of the broadcast medium inherent in many Low-Power and Lossy Networks and receive multicast messages carried by MPL directly. 4. Protocol Overview The goal of MPL is to deliver multicast messages to all interfaces @@ -223,22 +218,22 @@ An MPL Domain is a scope zone, as defined in [RFC4007], in which MPL Interfaces subscribe to the same MPL Domain Address and participate in disseminating MPL Data Messages. By default, an MPL Forwarder SHOULD participate in an MPL Domain identified by the ALL_MPL_FORWARDERS multicast address with a scope value of 3 (Realm-Local) [I-D.ietf-6man-multicast-scopes]. When MPL is used in deployments that use administratively defined scopes that cover, for example, multiple subnets based on different - underlying network technologies, Admin-Local scope (scop value 4) and - /or Site-Local scope (scop value 5) SHOULD be used. + underlying network technologies, Admin-Local scope (scop value 4) or + Site-Local scope (scop value 5) SHOULD be used. An MPL Forwarder MAY participate in additional MPL Domains identified by other multicast addresses. An MPL Interface MUST subscribe to the MPL Domain Addresses for the MPL Domains that it participates in. The assignment of other multicast addresses is out of scope. For each MPL Domain Address that an MPL Interface subscribes to, the MPL Interface MUST also subscribe to the same MPL Domain Address with a scope value of 2 (link-local) when reactive forwarding is in use (i.e. when communicating MPL Control Messages). @@ -391,52 +386,50 @@ For each MPL Domain Address that an MPL Interface subscribes to, the MPL Interface MUST also subscribe to the MPL Domain Address with a scope value of 2 (link-local) when reactive forwarding is in use. MPL Forwarders use the link-scoped MPL Domain Address to communicate MPL Control Messages to neighboring (i.e. on-link) MPL Forwarders. 5.2. MPL Message Types MPL defines an IPv6 Option for carrying an MPL Seed Identifier and a sequence number within an MPL Data Message. The IPv6 Option Type has - value MPL_OPT_TYPE. + value 0x6D. MPL defines an ICMPv6 Message (MPL Control Message) for communicating information contained in an MPL Domain's Seed Set and Buffered Message Set to neighboring MPL Forwarders. The MPL Control Message has ICMPv6 Type MPL_ICMP_TYPE. 5.3. MPL Seed Identifiers MPL uses MPL Seed Identifiers to uniquely identify MPL Seeds within an MPL Domain. For each MPL Domain that the MPL Forwarder serves as an MPL Seed, the MPL Forwarder MUST have an associated MPL Seed Identifier. An MPL Forwarder MAY use the same MPL Seed Identifier across multiple MPL Domains, but the MPL Seed Identifier MUST be unique within each MPL Domain. The mechanism for assigning and verifying uniqueness of MPL Seed Identifiers is not specified in this document. -5.4. MPL Forwarder Parameters +5.4. MPL Parameters PROACTIVE_FORWARDING A boolean value that indicates whether the MPL Forwarder schedules MPL Data Message transmissions after receiving - them for the first time. It is RECOMMENDED that all MPL - Interfaces attached to the same link of a given MPL Domain use the - same value for PROACTIVE_FORWARDING and has a default value of - TRUE. The mechanism for setting PROACTIVE_FORWARDING is not + them for the first time. PROACTIVE_FORWARDING has a default value + of TRUE. The mechanism for setting PROACTIVE_FORWARDING is not specified within this document. SEED_SET_ENTRY_LIFETIME The minimum lifetime for an entry in the Seed Set. SEED_SET_ENTRY_LIFETIME has a default value of 30 minutes. It is RECOMMENDED that all MPL Forwarders use the same - value for SEED_SET_ENTRY_LIFETIME for a given MPL Domain and has a + value for SEED_SET_ENTRY_LIFETIME for a given MPL Domain and use a default value of 30 minutes. The mechanism for setting SEED_SET_ENTRY_LIFETIME is not specified within this document. As specified in [RFC6206], a Trickle timer runs for a defined interval and has three configuration parameters: the minimum interval size Imin, the maximum interval size Imax, and a redundancy constant k. This specification defines a fourth Trickle configuration parameter, TimerExpirations, which indicates the number of Trickle timer @@ -480,51 +473,50 @@ expirations that occur before terminating the Trickle algorithm for MPL Control Message transmissions. CONTROL_MESSAGE_TIMER_EXPIRATIONS has a default value of 10. Following [RFC6206], it is RECOMMENDED that all MPL Interfaces attached to the same link of a given MPL Domain use the same values for the Trickle Parameters above for a given MPL Domain. The mechanism for setting the Trickle Parameters is not specified within this document. - The default Trickle parameter values above combined with the default - MPL Forwarder parameters in the prior section specify a forwarding - strategy that utilizes both proactive and reactive techniques. Using - these default values, an MPL Forwarder proactively transmits any new - MPL Data Messages it receives then uses MPL Control Messages to - trigger additional MPL Data Message retransmissions where message - drops are detected. Setting DATA_MESSAGE_IMAX to the same as - DATA_MESSAGE_IMIN in this case is acceptable since subsequent MPL - Data Message retransmissions are triggered by MPL Control Messages, - where CONTROL_MESSAGE_IMAX is greater than CONTROL_MESSAGE_IMIN. + The default MPL parameters specify a forwarding strategy that + utilizes both proactive and reactive techniques. Using these default + values, an MPL Forwarder proactively transmits any new MPL Data + Messages it receives then uses MPL Control Messages to trigger + additional MPL Data Message retransmissions where message drops are + detected. Setting DATA_MESSAGE_IMAX to the same as DATA_MESSAGE_IMIN + in this case is acceptable since subsequent MPL Data Message + retransmissions are triggered by MPL Control Messages, where + CONTROL_MESSAGE_IMAX is greater than CONTROL_MESSAGE_IMIN. 6. Protocol Message Formats The protocol messages generated and processed by an MPL Forwarder are described in this section. 6.1. MPL Option The MPL Option is carried in MPL Data Messages in an IPv6 Hop-by-Hop Options header, immediately following the IPv6 header. The MPL Option has the following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Type | Opt Data Len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | S |M|V| rsv | sequence | seed-id (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - Option Type MPL_OPT_TYPE + Option Type 0x6D. Opt Data Len Length of the Option Data field in octets. S 2-bit unsigned integer. Identifies the length of seed-id. 0 indicates that the seed-id is the IPv6 Source Address and not included in the MPL Option. 1 indicates that the seed-id is a 16-bit unsigned integer. 2 indicates that the seed-id is a 64-bit unsigned integer. 3 indicates that the seed-id is a 128-bit unsigned integer. @@ -975,71 +967,82 @@ entries in the Buffered Message Set, the MPL Forwarder MUST reset the Trickle timer and reset e to 0. If a Trickle timer is not associated with the MPL Data Message, the MPL Forwarder MUST initialize and start a new Trickle timer. 11. Acknowledgements The authors would like to acknowledge the helpful comments of Robert Cragie, Esko Dijk, Ralph Droms, Paul Duffy, Adrian Farrel, Ulrich Herberg, Owen Kirby, Kerry Lynn, Joseph Reddy, Michael Richardson, - Don Sturek, Dario Tedeschi, and Peter van der Stok, which greatly - improved the document. + Ines Robles, Don Sturek, Dario Tedeschi, and Peter van der Stok, + which greatly improved the document. 12. IANA Considerations This document defines one IPv6 Option, a type that must be allocated from the IPv6 "Destination Options and Hop-by-Hop Options" registry of [RFC2780]. This document defines one ICMPv6 Message, a type that must be allocated from the "ICMPv6 "type" Numbers" registry of [RFC4443]. - This document registers two well-known multicast addresses from the - IPv6 multicast address space. + This document registers a well-known multicast address from the + Variable Scope Multicast Address registry. 12.1. MPL Option Type IANA is requested to allocate an IPv6 Option Type from the IPv6 "Destination Options and Hop-by-Hop Options" registry of [RFC2780], as specified in Table 1 below: - +--------------+-----+-----+--------------+-------------+-----------+ - | Mnemonic | act | chg | rest | Description | Reference | - +--------------+-----+-----+--------------+-------------+-----------+ - | MPL_OPT_TYPE | 01 | 1 | TBD | MPL Option | This | - | | | | (suggested | | Document | - | | | | value 01101) | | | - +--------------+-----+-----+--------------+-------------+-----------+ + +-----------+-----+-----+-------+-------------+---------------+ + | Hex Value | act | chg | rest | Description | Reference | + +-----------+-----+-----+-------+-------------+---------------+ + | 0x6D | 01 | 1 | 01101 | MPL Option | This Document | + +-----------+-----+-----+-------+-------------+---------------+ Table 1: IPv6 Option Type Allocation 12.2. MPL ICMPv6 Type IANA is requested to allocate an ICMPv6 Type from the "ICMPv6 "type" Numbers" registry of [RFC4443], as specified in Table 2 below: - +---------------+------+---------------------+---------------+ - | Mnemonic | Type | Name | Reference | - +---------------+------+---------------------+---------------+ - | MPL_ICMP_TYPE | TBD | MPL Control Message | This Document | - +---------------+------+---------------------+---------------+ + +------+---------------------+---------------+ + | Type | Name | Reference | + +------+---------------------+---------------+ + | TBD | MPL Control Message | This Document | + +------+---------------------+---------------+ Table 2: IPv6 Option Type Allocation + In this document, the mnemonic MPL_ICMP_TYPE was used to refer to the + ICMPv6 Type above, which is TBD by IANA. + 12.3. Well-known Multicast Addresses IANA is requested to allocate an IPv6 multicast address, with Group ID in the range [0x01,0xFF] for 6LoWPAN compression [RFC6282], "ALL_MPL_FORWARDERS" from the "Variable Scope Multicast Addresses" - sub-registry of the "IPv6 Multicast Address Space" registry - [RFC3307]. + sub-registry of the "IPv6 Multicast Address Space" registry [RFC3307] + as specified in Table 3 below: + + +---------------------+--------------------+-----------+------------+ + | Address(s) | Description | Reference | Date | + | | | | Registered | + +---------------------+--------------------+-----------+------------+ + | FF0X:0:0:0:0:0:0:FC | ALL_MPL_FORWARDERS | This | 2013-04-10 | + | | | Document | | + +---------------------+--------------------+-----------+------------+ + + Table 3: Variable Scope Multicast Address Allocation 13. Security Considerations MPL uses sequence numbers to maintain a total ordering of MPL Data Messages from an MPL Seed. The use of sequence numbers allows a denial-of-service attack where an attacker can spoof a message with a sufficiently large sequence number to: (i) flush messages from the Buffered Message List and (ii) increase the MinSequence value for an MPL Seed in the corresponding Seed Set. The former side effect allows an attacker to halt the forwarding process of any MPL Data