Internet Engineering Task Force (IETF) J. Hui Request for Comments: 7731 Nest Labs Category: Standards Track R. Kelsey ISSN: 2070-1721 Silicon Labs February 2016
Internet Engineering Task Force (IETF) J. Hui Request for Comments: 7731 Nest Labs Category: Standards Track R. Kelsey ISSN: 2070-1721 Silicon Labs February 2016
Multicast Protocol for Low-Power and Lossy Networks (MPL)
低功耗有损网络组播协议(MPL)
Abstract
摘要
This document specifies the Multicast Protocol for Low-Power and Lossy Networks (MPL), which 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)的多播协议,该协议在受限网络中提供IPv6多播转发。MPL避免了构造或维护任何多播转发拓扑的需要,从而将消息分发给MPL域中的所有MPL转发器。
MPL has two modes of operation. One mode uses the Trickle algorithm to manage control-plane and data-plane message transmissions and is applicable for deployments with few multicast sources. The other mode uses classic flooding. By providing both modes and parameterization of the Trickle algorithm, an MPL implementation can be used in a variety of multicast deployments and can trade between dissemination latency and transmission efficiency.
MPL有两种操作模式。一种模式使用涓流算法来管理控制平面和数据平面消息传输,适用于具有少量多播源的部署。另一种模式使用经典泛洪。通过提供涓流算法的模式和参数化,MPL实现可用于各种多播部署,并可在传播延迟和传输效率之间进行权衡。
Status of This Memo
关于下段备忘
This is an Internet Standards Track document.
这是一份互联网标准跟踪文件。
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.
本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 5741第2节。
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7731.
有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc7731.
Copyright Notice
版权公告
Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved.
版权所有(c)2016 IETF信托基金和确定为文件作者的人员。版权所有。
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 carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。
Table of Contents
目录
1. Introduction ....................................................4 2. Terminology .....................................................5 3. Applicability Statement .........................................6 4. MPL Protocol Overview ...........................................7 4.1. MPL Domains ................................................7 4.2. Information Base Overview ..................................8 4.3. Protocol Overview ..........................................8 4.4. Signaling Overview ........................................10 5. MPL Parameters and Constants ...................................11 5.1. MPL Multicast Addresses ...................................11 5.2. MPL Message Types .........................................11 5.3. MPL Seed Identifiers ......................................11 5.4. MPL Parameters ............................................11 6. Protocol Message Formats .......................................14 6.1. MPL Option ................................................14 6.2. MPL Control Message .......................................15 6.3. MPL Seed Info .............................................16 7. Information Base ...............................................17 7.1. Local Interface Set .......................................17 7.2. Domain Set ................................................18 7.3. Seed Set ..................................................18 7.4. Buffered Message Set ......................................18 8. MPL Seed Sequence Numbers ......................................19 9. MPL Data Messages ..............................................19 9.1. MPL Data Message Generation ...............................19 9.2. MPL Data Message Transmission .............................20 9.3. MPL Data Message Processing ...............................21 10. MPL Control Messages ..........................................22 10.1. MPL Control Message Generation ...........................22 10.2. MPL Control Message Transmission .........................22 10.3. MPL Control Message Processing ...........................23 11. IANA Considerations ...........................................24 11.1. MPL Option Type ..........................................24 11.2. MPL ICMPv6 Type ..........................................25 11.3. Well-Known Multicast Addresses ...........................25 12. Security Considerations .......................................25 13. References ....................................................26 13.1. Normative References .....................................26 13.2. Informative References ...................................28 Acknowledgements ..................................................29 Authors' Addresses ................................................29
1. Introduction ....................................................4 2. Terminology .....................................................5 3. Applicability Statement .........................................6 4. MPL Protocol Overview ...........................................7 4.1. MPL Domains ................................................7 4.2. Information Base Overview ..................................8 4.3. Protocol Overview ..........................................8 4.4. Signaling Overview ........................................10 5. MPL Parameters and Constants ...................................11 5.1. MPL Multicast Addresses ...................................11 5.2. MPL Message Types .........................................11 5.3. MPL Seed Identifiers ......................................11 5.4. MPL Parameters ............................................11 6. Protocol Message Formats .......................................14 6.1. MPL Option ................................................14 6.2. MPL Control Message .......................................15 6.3. MPL Seed Info .............................................16 7. Information Base ...............................................17 7.1. Local Interface Set .......................................17 7.2. Domain Set ................................................18 7.3. Seed Set ..................................................18 7.4. Buffered Message Set ......................................18 8. MPL Seed Sequence Numbers ......................................19 9. MPL Data Messages ..............................................19 9.1. MPL Data Message Generation ...............................19 9.2. MPL Data Message Transmission .............................20 9.3. MPL Data Message Processing ...............................21 10. MPL Control Messages ..........................................22 10.1. MPL Control Message Generation ...........................22 10.2. MPL Control Message Transmission .........................22 10.3. MPL Control Message Processing ...........................23 11. IANA Considerations ...........................................24 11.1. MPL Option Type ..........................................24 11.2. MPL ICMPv6 Type ..........................................25 11.3. Well-Known Multicast Addresses ...........................25 12. Security Considerations .......................................25 13. References ....................................................26 13.1. Normative References .....................................26 13.2. Informative References ...................................28 Acknowledgements ..................................................29 Authors' Addresses ................................................29
Low-Power and Lossy Networks (LLNs) typically operate with strict resource constraints in communication, computation, memory, and energy. Such resource constraints may preclude the use of existing IPv6 multicast routing and forwarding mechanisms. Traditional IP multicast delivery typically relies on topology maintenance mechanisms to discover and maintain routes to all subscribers of a multicast group (e.g., [RFC3973] [RFC4601]). However, maintaining such topologies in LLNs is costly and may not be feasible given the available resources.
低功耗和有损网络(LLN)通常在通信、计算、内存和能量方面受到严格的资源限制。这种资源限制可能会妨碍使用现有的IPv6多播路由和转发机制。传统的IP多播交付通常依赖拓扑维护机制来发现和维护到多播组的所有订户的路由(例如,[RFC3973][RFC4601])。然而,在LLN中维护此类拓扑结构成本高昂,并且鉴于可用资源可能不可行。
Memory constraints may limit devices to maintaining links/routes to one or a few neighbors. For this reason, the Routing Protocol for LLNs (RPL) specifies both storing and non-storing modes [RFC6550]. The latter allows RPL routers to maintain only one or a few default routes towards an LLN Border Router (LBR) and use source routing to forward messages away from the LBR. For the same reasons, an LLN device may not be able to maintain a multicast routing topology when operating with limited memory.
内存限制可能会限制设备维护到一个或几个邻居的链路/路由。因此,LLN路由协议(RPL)指定了存储和非存储模式[RFC6550]。后者允许RPL路由器只维护一条或几条通向LLN边界路由器(LBR)的默认路由,并使用源路由将消息转发到远离LBR的地方。出于同样的原因,LLN设备在使用有限内存运行时可能无法维护多播路由拓扑。
Furthermore, the dynamic properties of wireless networks can make the cost of maintaining a multicast routing topology prohibitively expensive. In wireless environments, topology maintenance may involve selecting a connected dominating set used to forward multicast messages to all nodes in an administrative domain. However, existing mechanisms often require two-hop topology information, and the cost of maintaining such information grows polynomially with network density.
此外,无线网络的动态特性会使维护多播路由拓扑的成本过高。在无线环境中,拓扑维护可能涉及选择用于将多播消息转发到管理域中的所有节点的连接支配集。然而,现有机制通常需要两跳拓扑信息,并且维护这些信息的成本随网络密度呈多项式增长。
This document specifies the Multicast Protocol for Low-Power and Lossy Networks (MPL), which provides IPv6 multicast forwarding in constrained networks. MPL avoids the need to construct or maintain any multicast routing topology, disseminating multicast messages to all MPL Forwarders in an MPL Domain. By using the Trickle algorithm [RFC6206], MPL requires only small, constant state for each MPL device that initiates disseminations. The Trickle algorithm also allows MPL to be density aware, allowing the communication rate to scale logarithmically with density.
本文档指定了用于低功耗和有损网络(MPL)的多播协议,该协议在受限网络中提供IPv6多播转发。MPL避免了构造或维护任何多播路由拓扑的需要,将多播消息分发给MPL域中的所有MPL转发器。通过使用Trickle算法[RFC6206],MPL只需要启动传播的每个MPL设备的小的、恒定的状态。涓流算法还允许MPL具有密度感知能力,允许通信速率与密度成对数比例。
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”应按照[RFC2119]中的说明进行解释。
The following terms are used throughout this document:
本文件中使用了以下术语:
MPL Forwarder - A router that implements MPL. An MPL Forwarder is equipped with at least one MPL Interface.
MPL转发器-实现MPL的路由器。MPL转发器配备有至少一个MPL接口。
MPL Interface - An MPL Forwarder's attachment to a communications medium, over which it transmits and receives MPL Data Messages and MPL Control Messages according to this specification. An MPL Interface is assigned one or more unicast addresses and is subscribed to one or more MPL Domain Addresses.
MPL接口——MPL转发器与通信介质的连接,根据本规范,通过该连接传输和接收MPL数据消息和MPL控制消息。MPL接口分配一个或多个单播地址,并订阅一个或多个MPL域地址。
MPL Domain Address - A multicast address that identifies the set of MPL Interfaces within an MPL Domain. MPL Data Messages disseminated in an MPL Domain have the associated MPL Domain Address as their destination address.
MPL域地址—标识MPL域内MPL接口集的多播地址。在MPL域中传播的MPL数据消息具有关联的MPL域地址作为其目标地址。
MPL Domain - 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.
MPL域-如[RFC4007]中所定义的作用域,其中MPL接口订阅相同的MPL域地址并参与传播MPL数据消息。
MPL Data Message - A multicast message that is used to communicate a multicast payload between MPL Forwarders within an MPL Domain. An MPL Data Message contains an MPL Option in the IPv6 header and has as its destination address the MPL Domain Address corresponding to the MPL Domain.
MPL数据消息-用于在MPL域内的MPL转发器之间传送多播负载的多播消息。MPL数据消息在IPv6报头中包含MPL选项,并将与MPL域对应的MPL域地址作为其目标地址。
MPL Control Message - A link-local multicast message that is used to communicate information about recently received MPL Data Messages to neighboring MPL Forwarders.
MPL控制消息-链路本地多播消息,用于将最近接收到的MPL数据消息的信息传送给相邻的MPL转发器。
MPL Seed - An MPL Forwarder that generates MPL Data Messages and serves as an entry point into an MPL Domain.
MPL种子-生成MPL数据消息并作为MPL域入口点的MPL转发器。
MPL Seed Identifier - An unsigned integer that uniquely identifies an MPL Seed within an MPL Domain.
MPL种子标识符-唯一标识MPL域中MPL种子的无符号整数。
Node - Used within this document to refer to an MPL Forwarder.
节点-在本文档中用于指代MPL转发器。
MPL is an IPv6 multicast forwarding protocol designed for the communication characteristics and resource constraints of LLNs. By implementing controlled disseminations of multicast messages using the Trickle algorithm, MPL is designed for networks that communicate using low-power and lossy links with widely varying topologies in both the space and time dimensions.
MPL是针对LLN的通信特性和资源限制而设计的IPv6多播转发协议。通过使用涓流算法实现多播消息的受控传播,MPL被设计用于使用低功耗和有损链路进行通信的网络,这些链路在空间和时间维度上具有广泛变化的拓扑结构。
While designed specifically for LLNs, MPL is not limited to use over such networks. MPL may be applicable to any network where no multicast routing state is desired. MPL may also be used in environments where only a subset of links are considered low-power and lossy links.
虽然MPL是专门为LLN设计的,但并不限于在此类网络上使用。MPL可适用于不需要多播路由状态的任何网络。MPL还可用于只有一部分链路被视为低功耗和有损链路的环境中。
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 LLNs and receive multicast messages carried by MPL directly.
只要其附件路由器在MPL域和主机之间转发多播消息,主机就不需要知道其多播受MPL支持。然而,主机可以选择实现MPL,以便它可以利用许多lln中固有的广播介质并直接接收MPL承载的多播消息。
MPL is parameterized to support different dissemination techniques. In one parameterization, MPL may utilize the classic flooding method that involves having each device receiving a message rebroadcast the message. In another parameterization, MPL may utilize Trickle's [RFC6206] "polite gossip" method, which involves transmission suppression and adaptive timing techniques. [Clausen2013] questions the efficiency of Trickle's "polite gossip" mechanism in some multicast scenarios, so by also including a classic flooding mode of operation MPL aims to be able to perform satisfactorily in a variety of situations.
MPL被参数化以支持不同的传播技术。在一个参数化中,MPL可以利用经典的泛洪方法,该方法涉及使接收消息的每个设备重播该消息。在另一个参数化中,MPL可以利用Trickle的[RFC6206]“礼貌八卦”方法,该方法涉及传输抑制和自适应定时技术。[Clausen2013]对涓流的“礼貌闲话”机制在某些多播场景中的效率提出质疑,因此,通过包括经典的泛洪操作模式,MPL旨在能够在各种情况下令人满意地执行。
To support efficient message delivery in networks that have many poor links, MPL supports a reactive forwarding mode that utilizes MPL Control Messages to summarize the current multicast state. The MPL Control Message size grows linearly with the number of simultaneous MPL Seeds in the MPL Domain -- 4 octets per MPL Seed. When reactive forwarding is not enabled, MPL Control Messages are not transmitted, and the associated overhead is not incurred.
为了在具有许多不良链路的网络中支持高效的消息传递,MPL支持一种反应式转发模式,该模式利用MPL控制消息来汇总当前多播状态。MPL控制消息大小随MPL域中同时出现的MPL种子数线性增长——每个MPL种子4个八位组。如果未启用响应转发,则不会传输MPL控制消息,并且不会产生相关开销。
This document does not specify a cryptographic security mechanism for MPL to ensure that MPL messages are not spoofed by anyone with access to the LLN. In general, the basic ability to inject messages into an LLN may be used as a denial-of-service attack, regardless of what forwarding protocol is used. For these reasons, LLNs typically employ link-layer security mechanisms to mitigate an attacker's ability to inject messages. For example, the IEEE 802.15.4 [IEEE802.15.4] standard specifies frame security mechanisms using
本文档没有为MPL指定加密安全机制,以确保任何有权访问LLN的人都不会伪造MPL消息。通常,无论使用何种转发协议,将消息注入LLN的基本能力都可能被用作拒绝服务攻击。出于这些原因,LLN通常采用链路层安全机制来降低攻击者注入消息的能力。例如,IEEE 802.15.4[IEEE802.15.4]标准使用
AES-128 to support access control, message integrity, message confidentiality, and replay protection. However, if the attack vector includes attackers that have access to the LLN, then MPL SHOULD NOT be used.
AES-128支持访问控制、消息完整性、消息机密性和重播保护。然而,如果攻击向量包含可访问LLN的攻击者,则不应使用MPL。
The goal of MPL is to deliver multicast messages to all interfaces that subscribe to the multicast messages' destination address within an MPL Domain.
MPL的目标是将多播消息传递到MPL域中订阅多播消息目的地址的所有接口。
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.
MPL域是一个作用域,如[RFC4007]中所定义,其中MPL接口订阅相同的MPL域地址并参与传播MPL数据消息。
When participating in only one MPL Domain, the MPL Domain Address is the ALL_MPL_FORWARDERS multicast address with Realm-Local scope ("scop" value 3) [RFC7346].
当仅参与一个MPL域时,MPL域地址是具有领域本地作用域(“scop”值3)的所有MPL转发器多播地址[RFC7346]。
When an MPL Forwarder participates in multiple MPL Domains simultaneously, at most one MPL Domain may be assigned an MPL Domain Address equal to the ALL_MPL_FORWARDERS multicast address. All other MPL Domains MUST be assigned a unique MPL Domain Address that allows the MPL Forwarder to identify each MPL Domain. The MPL Domains SHOULD be configured automatically based on some underlying topology. For example, when using RPL [RFC6550], MPL Domains may be configured based on RPL Instances.
当MPL转发器同时参与多个MPL域时,最多可以为一个MPL域分配一个等于所有MPL转发器多播地址的MPL域地址。必须为所有其他MPL域分配一个唯一的MPL域地址,该地址允许MPL转发器标识每个MPL域。MPL域应该根据一些底层拓扑自动配置。例如,当使用RPL[RFC6550]时,可以基于RPL实例配置MPL域。
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) or Site-Local scope (scop value 5) SHOULD be used.
当MPL用于使用管理定义的作用域(例如,基于不同基础网络技术的多个子网)的部署时,应使用管理本地作用域(scop值4)或站点本地作用域(scop值5)。
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.
MPL转发器可以参与由其他多播地址标识的附加MPL域。MPL接口必须为其参与的MPL域订阅MPL域地址。其他多播地址的分配超出范围。
For each MPL Domain Address that an MPL Interface subscribes to, the MPL Interface MUST also subscribe to the same MPL Domain Address with Link-Local scope (scop value 2) when reactive forwarding is in use (i.e., when communicating MPL Control Messages).
对于MPL接口订阅的每个MPL域地址,当使用响应转发时(即,在传输MPL控制消息时),MPL接口还必须订阅具有链路本地作用域(scop值2)的相同MPL域地址。
A node records necessary protocol state in the following information sets:
节点在以下信息集中记录必要的协议状态:
o The Local Interface Set records the set of local MPL Interfaces and the unicast addresses assigned to those MPL Interfaces.
o 本地接口集记录本地MPL接口集和分配给这些MPL接口的单播地址。
o The Domain Set records the set of MPL Domain Addresses and the local MPL Interfaces that subscribe to those addresses.
o 域集记录MPL域地址集和订阅这些地址的本地MPL接口。
o A Seed Set records information about received MPL Data Messages received from an MPL Seed within an MPL Domain. Each MPL Domain has an associated Seed Set. A Seed Set maintains the minimum sequence number for MPL Data Messages that the MPL Forwarder is willing to receive or has buffered in its Buffered Message Set from an MPL Seed. MPL uses Seed Sets and Buffered Message Sets to determine when to accept an MPL Data Message, process its payload, and retransmit it.
o 种子集记录有关从MPL域内的MPL种子接收的MPL数据消息的信息。每个MPL域都有一个关联的种子集。种子集维护MPL转发器愿意从MPL种子接收或已在其缓冲消息集中缓冲的MPL数据消息的最小序列号。MPL使用种子集和缓冲消息集来确定何时接受MPL数据消息、处理其有效负载并重新传输它。
o A Buffered Message Set records recently received MPL Data Messages from an MPL Seed within an MPL Domain. Each MPL Domain has an associated Buffered Message Set. MPL Data Messages resident in a Buffered Message Set have sequence numbers that are greater than or equal to the minimum threshold maintained in the corresponding Seed Set. MPL uses Buffered Message Sets to store MPL Data Messages that may be transmitted by the MPL Forwarder for forwarding.
o 缓冲消息集记录最近从MPL域内的MPL种子接收的MPL数据消息。每个MPL域都有一个关联的缓冲消息集。驻留在缓冲消息集中的MPL数据消息的序列号大于或等于相应种子集中保持的最小阈值。MPL使用缓冲消息集存储MPL数据消息,这些消息可由MPL转发器传输以进行转发。
MPL achieves its goal by implementing a controlled flood that attempts to disseminate the multicast data message to all interfaces within an MPL Domain. MPL performs the following tasks to disseminate a multicast message:
MPL通过实现一个受控泛洪来实现其目标,该泛洪试图将多播数据消息传播到MPL域内的所有接口。MPL执行以下任务以传播多播消息:
o When having a multicast message to forward into an MPL Domain, the MPL Seed generates an MPL Data Message that includes the MPL Domain Address as the IPv6 Destination Address, the MPL Seed Identifier, a newly generated sequence number, and the multicast message. If the multicast destination address is not the MPL Domain Address, IP-in-IP tunneling [RFC2473] is used to encapsulate the multicast message in an MPL Data Message, preserving the original IPv6 Destination Address.
o 当具有要转发到MPL域的多播消息时,MPL种子生成MPL数据消息,其包括作为IPv6目的地地址的MPL域地址、MPL种子标识符、新生成的序列号和多播消息。如果多播目标地址不是MPL域地址,则IP in IP隧道[RFC2473]用于将多播消息封装在MPL数据消息中,从而保留原始IPv6目标地址。
o Upon receiving an MPL Data Message, the MPL Forwarder extracts the MPL Seed and sequence number and determines whether or not the MPL Data Message was previously received using the MPL Domain's Seed Set and Buffered Message Set.
o 在接收到MPL数据消息时,MPL转发器提取MPL种子和序列号,并确定MPL数据消息之前是否使用MPL域的种子集和缓冲消息集接收。
* If the sequence number is less than the lower-bound sequence number maintained in the Seed Set or a message with the same sequence number exists within the Buffered Message Set, the MPL Forwarder marks the MPL Data Message as old.
* 如果序列号小于种子集中维护的下限序列号,或者缓冲消息集中存在具有相同序列号的消息,则MPL转发器将MPL数据消息标记为旧消息。
* Otherwise, the MPL Forwarder marks the MPL Data Message as new.
* 否则,MPL转发器将MPL数据消息标记为新消息。
o For each newly received MPL Data Message, an MPL Forwarder updates the Seed Set, adds the MPL Data Message into the Buffered Message Set, processes its payload, and multicasts the MPL Data Message a number of times on all MPL Interfaces participating in the same MPL Domain to forward the message.
o 对于每个新接收的MPL数据消息,MPL转发器更新种子集,将MPL数据消息添加到缓冲消息集中,处理其有效负载,并在参与相同MPL域的所有MPL接口上多次多播MPL数据消息以转发消息。
o Each MPL Forwarder may periodically link-local multicast MPL Control Messages on MPL Interfaces to communicate information contained in an MPL Domain's Seed Set and Buffered Message Set.
o 每个MPL转发器可以周期性地链接MPL接口上的本地多播MPL控制消息,以传递包含在MPL域的种子集和缓冲消息集中的信息。
o Upon receiving an MPL Control Message, an MPL Forwarder determines whether or not there are any new MPL Data Messages that have yet to be received by the MPL Control Message's source and multicasts those MPL Data Messages.
o 在接收到MPL控制消息时,MPL转发器确定是否有任何新的MPL数据消息尚未被MPL控制消息的源接收,并多播这些MPL数据消息。
MPL's configuration parameters allow two forwarding strategies for disseminating MPL Data Messages via MPL Interfaces:
MPL的配置参数允许通过MPL接口传播MPL数据消息的两种转发策略:
Proactive Forwarding - With proactive forwarding, an MPL Forwarder schedules transmissions of MPL Data Messages using the Trickle algorithm, without any prior indication that neighboring nodes have yet to receive the message. After transmitting the MPL Data Message a limited number of times, the MPL Forwarder may terminate proactive forwarding for the MPL Data Message.
主动转发-通过主动转发,MPL转发器使用涓流算法调度MPL数据消息的传输,而无需事先指示相邻节点尚未接收消息。在有限次数地发送MPL数据消息之后,MPL转发器可以终止MPL数据消息的主动转发。
Reactive Forwarding - With reactive forwarding, an MPL Forwarder link-local multicasts MPL Control Messages using the Trickle algorithm [RFC6206]. MPL Forwarders use MPL Control Messages to discover new MPL Data Messages that have not yet been received. When discovering that a neighboring MPL Forwarder has not yet received an MPL Data Message, the MPL Forwarder schedules those MPL Data Messages for transmission using the Trickle algorithm.
反应式转发-通过反应式转发,MPL转发器使用涓流算法链接本地多播MPL控制消息[RFC6206]。MPL转发器使用MPL控制消息来发现尚未收到的新MPL数据消息。当发现相邻MPL转发器尚未接收到MPL数据消息时,MPL转发器使用涓流算法调度这些MPL数据消息以进行传输。
Note that, when used within the same MPL Domain, proactive and reactive forwarding strategies are not mutually exclusive and may be used simultaneously. For example, upon receiving a new MPL Data Message when both proactive and reactive forwarding techniques are enabled, an MPL Forwarder will proactively retransmit the MPL Data Message a limited number of times and schedule further transmissions upon receiving MPL Control Messages.
注意,当在同一MPL域中使用时,主动转发策略和反应转发策略不是互斥的,可以同时使用。例如,当启用了主动转发和反应转发技术时,在接收到新的MPL数据消息时,MPL转发器将主动地将MPL数据消息重新传输有限的次数,并在接收到MPL控制消息时调度进一步的传输。
MPL generates and processes the following messages:
MPL生成并处理以下消息:
MPL Data Message - Generated by an MPL Seed to deliver a multicast message across an MPL Domain. The MPL Data Message's source is an address in the Local Interface Set of the MPL Seed that generated the message and is valid within the MPL Domain. The MPL Data Message's destination is the MPL Domain Address corresponding to the MPL Domain. An MPL Data Message contains:
MPL数据消息-由MPL种子生成,用于跨MPL域传递多播消息。MPL数据消息的源是生成消息的MPL种子的本地接口集中的地址,在MPL域内有效。MPL数据消息的目的地是与MPL域对应的MPL域地址。MPL数据消息包含:
* The Seed Identifier of the MPL Seed that generated the MPL Data Message.
* 生成MPL数据消息的MPL种子的种子标识符。
* The sequence number of the MPL Seed that generated the MPL Data Message.
* 生成MPL数据消息的MPL种子的序列号。
* The original multicast message.
* 原始多播消息。
MPL Control Message - Generated by an MPL Forwarder to communicate information contained in an MPL Domain's Seed Set and Buffered Message Set to neighboring MPL Forwarders. An MPL Control Message contains a list of tuples for each entry in the Seed Set. Each tuple contains:
MPL控制消息-由MPL转发器生成,用于将包含在MPL域种子集和缓冲消息集中的信息传递给相邻的MPL转发器。MPL控制消息包含种子集中每个条目的元组列表。每个元组包含:
* The minimum sequence number maintained in the Seed Set for the MPL Seed.
* MPL种子在种子集中保持的最小序列号。
* A bit-vector indicating the sequence numbers of MPL Data Messages resident in the Buffered Message Set for the MPL Seed, where the first bit represents a sequence number equal to the minimum threshold maintained in the Seed Set.
* 位向量,指示驻留在MPL种子的缓冲消息集中的MPL数据消息的序列号,其中第一位表示等于种子集中保持的最小阈值的序列号。
* The length of the bit-vector.
* 位向量的长度。
This section describes various program and networking parameters and constants used by MPL.
本节介绍MPL使用的各种程序和网络参数及常量。
MPL makes use of MPL Domain Addresses to identify MPL Interfaces of an MPL Domain. By default, MPL Forwarders subscribe to the ALL_MPL_FORWARDERS multicast address with Realm-Local scope (scop value 3) [RFC7346].
MPL利用MPL域地址来标识MPL域的MPL接口。默认情况下,MPL转发器订阅具有领域本地作用域(scop值3)的所有MPL转发器多播地址[RFC7346]。
For each MPL Domain Address that an MPL Interface subscribes to, the MPL Interface MUST also subscribe to the MPL Domain Address with Link-Local scope (scop value 2) 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.
对于MPL接口订阅的每个MPL域地址,当使用响应转发时,MPL接口还必须使用链路本地作用域(scop值2)订阅MPL域地址。MPL转发器使用链路作用域MPL域地址将MPL控制消息传递给相邻(即链路上)MPL转发器。
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 0x6D.
MPL定义了一个IPv6选项,用于在MPL数据消息中携带MPL种子标识符和序列号。IPv6选项类型的值为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 159.
MPL定义了一个ICMPv6消息(MPL控制消息),用于将MPL域的种子集和缓冲消息集中包含的信息传送给相邻的MPL转发器。MPL控制消息具有ICMPv6类型159。
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.
MPL使用MPL种子标识符在MPL域中唯一标识MPL种子。对于MPL转发器用作MPL种子的每个MPL域,MPL转发器必须具有关联的MPL种子标识符。MPL转发器可以在多个MPL域中使用相同的MPL种子标识符,但MPL种子标识符在每个MPL域中必须是唯一的。本文档中未指定分配和验证MPL种子标识符唯一性的机制。
PROACTIVE_FORWARDING - A boolean value that indicates whether or not the MPL Forwarder schedules MPL Data Message transmissions after receiving them for the first time. PROACTIVE_FORWARDING has a default value of TRUE. All MPL Interfaces on the same link SHOULD be configured with the same value of PROACTIVE_FORWARDING. An implementation MAY choose to vary the value of
主动转发-一个布尔值,指示MPL转发器是否在第一次接收MPL数据消息传输后安排MPL数据消息传输。主动转发的默认值为TRUE。同一链路上的所有MPL接口应配置相同的主动转发值。一个实现可以选择改变
PROACTIVE_FORWARDING across interfaces on the same link if reactive forwarding is also in use. 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 use a default value of 30 minutes. Using a value of SEED_SET_ENTRY_LIFETIME that is too small can cause the duplicate detection mechanism to fail, resulting in an MPL Forwarder receiving a given MPL Data Message more than once. The mechanism for setting SEED_SET_ENTRY_LIFETIME is not specified within this document.
SEED_SET_ENTRY_LIFETIME-种子集中某个条目的最短生存期。种子\u集\u项\u生存期的默认值为30分钟。建议所有MPL转发器在给定MPL域的SEED\u SET\u ENTRY\u生存期中使用相同的值,并使用默认值30分钟。使用太小的SEED_SET_ENTRY_life值可能会导致重复检测机制失败,从而导致MPL转发器多次接收给定的MPL数据消息。本文档中未指定设置种子\设置\条目\生命周期的机制。
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.
如[RFC6206]中所述,涓流计时器在定义的间隔内运行,并具有三个配置参数:最小间隔大小Imin、最大间隔大小Imax和冗余常数k。
This specification defines a fourth Trickle configuration parameter, TimerExpirations, which indicates the number of Trickle timer expiration events that occur before terminating the Trickle algorithm for a given MPL Data Message or MPL Control Message.
本规范定义了第四个涓流配置参数TimerExpirations,该参数指示终止给定MPL数据消息或MPL控制消息的涓流算法之前发生的涓流计时器过期事件数。
Each MPL Interface uses the following Trickle parameters for MPL Data Message and MPL Control Message transmissions:
每个MPL接口使用以下涓流参数进行MPL数据消息和MPL控制消息传输:
DATA_MESSAGE_IMIN - The minimum Trickle timer interval, as defined in [RFC6206], for MPL Data Message transmissions. DATA_MESSAGE_IMIN has a default value of 10 times the expected link-layer latency.
DATA_MESSAGE_IMIN-MPL数据消息传输的最小涓流计时器间隔,如[RFC6206]中所定义。数据\消息\ IMIN的默认值为预期链路层延迟的10倍。
DATA_MESSAGE_IMAX - The maximum Trickle timer interval, as defined in [RFC6206], for MPL Data Message transmissions. DATA_MESSAGE_IMAX has a default value equal to DATA_MESSAGE_IMIN.
DATA_MESSAGE_IMAX—MPL数据消息传输的最大涓流定时器间隔,如[RFC6206]中所定义。DATA_MESSAGE_IMAX的默认值等于DATA_MESSAGE_IMIN。
DATA_MESSAGE_K - The redundancy constant, as defined in [RFC6206], for MPL Data Message transmissions. DATA_MESSAGE_K has a default value of 1.
DATA_MESSAGE_K-冗余常数,如[RFC6206]中所定义,用于MPL数据消息传输。数据消息的默认值为1。
DATA_MESSAGE_TIMER_EXPIRATIONS - The number of Trickle timer expirations that occur before terminating the Trickle algorithm's retransmission of a given MPL Data Message. DATA_MESSAGE_TIMER_EXPIRATIONS has a default value of 3.
DATA_MESSAGE_TIMER_EXPIRATIONS—终止涓流算法对给定MPL数据消息的重新传输之前发生的涓流计时器过期次数。数据\消息\计时器\过期的默认值为3。
CONTROL_MESSAGE_IMIN - The minimum Trickle timer interval, as defined in [RFC6206], for MPL Control Message transmissions. CONTROL_MESSAGE_IMIN has a default value of 10 times the worst-case link-layer latency.
CONTROL_MESSAGE_IMIN-MPL控制消息传输的最小涓流计时器间隔,如[RFC6206]中所定义。CONTROL_MESSAGE_IMIN的默认值为最坏情况下链路层延迟的10倍。
CONTROL_MESSAGE_IMAX - The maximum Trickle timer interval, as defined in [RFC6206], for MPL Control Message transmissions. CONTROL_MESSAGE_IMAX has a default value of 5 minutes.
CONTROL_MESSAGE_IMAX—MPL控制消息传输的最大涓流定时器间隔,如[RFC6206]中所定义。控件\消息\ IMAX的默认值为5分钟。
CONTROL_MESSAGE_K - The redundancy constant, as defined in [RFC6206], for MPL Control Message transmissions. CONTROL_MESSAGE_K has a default value of 1.
CONTROL_MESSAGE_K-冗余常量,如[RFC6206]中所定义,用于MPL控制消息传输。控件消息的默认值为1。
CONTROL_MESSAGE_TIMER_EXPIRATIONS - The number of Trickle timer expirations that occur before terminating the Trickle algorithm for MPL Control Message transmissions. CONTROL_MESSAGE_TIMER_EXPIRATIONS has a default value of 10.
CONTROL_MESSAGE_TIMER_EXPIRATIONS—终止MPL控制消息传输的涓流算法之前发生的涓流计时器过期数。控件\消息\计时器\过期的默认值为10。
As described in [RFC6206], if different nodes have different configuration parameters, Trickle may have unintended behaviors. Therefore, 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.
如[RFC6206]中所述,如果不同的节点具有不同的配置参数,则涓流可能具有非预期的行为。因此,建议连接到给定MPL域的同一链路的所有MPL接口使用上述给定MPL域的涓流参数的相同值。本文件未规定设置涓流参数的机制。
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 and then uses MPL Control Messages to trigger additional MPL Data Message retransmissions where message drops are detected. Setting DATA_MESSAGE_IMAX to the same value 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.
默认MPL参数指定了一种转发策略,该策略同时利用主动式和反应式技术。使用这些默认值,MPL转发器主动发送其接收到的任何新MPL数据消息,然后使用MPL控制消息触发检测到消息丢失的其他MPL数据消息重传。在这种情况下,可以将DATA_MESSAGE_IMAX设置为与DATA_MESSAGE_IMIN相同的值,因为随后的MPL数据消息重传是由MPL控制消息触发的,其中Control_MESSAGE_IMAX大于Control_MESSAGE_IMIN。
Messages generated and processed by an MPL Forwarder are described in this section.
MPL转发器生成和处理的消息将在本节中介绍。
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:
MPL选项在紧接着IPv6标头的IPv6逐跳选项标头中的MPL数据消息中携带。MPL选项具有以下格式:
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) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 0x6D.
选项类型0x6D。
Opt Data Len Length of the Option Data field [RFC2460] in octets.
Opt Data Len选项数据字段[RFC2460]的长度,以八位字节为单位。
S 2-bit unsigned integer. Identifies the length of the 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.
S 2位无符号整数。标识种子id的长度。“0”表示种子id是IPv6源地址,不包括在MPL选项中1'表示种子id是一个16位无符号整数。'2'表示种子id是64位无符号整数。'3'表示种子id是128位无符号整数。
M 1-bit flag. '1' indicates that the value in the sequence field is known to be the largest sequence number that was received from the MPL Seed.
M 1位标志。'1'表示已知序列字段中的值是从MPL种子接收到的最大序列号。
V 1-bit flag. '0' indicates that the MPL Option conforms to this specification. MPL Data Messages with an MPL Option in which this flag is set to 1 MUST be dropped.
V 1位标志。'0'表示MPL选项符合此规范。必须删除带有MPL选项(其中该标志设置为1)的MPL数据消息。
rsv 4-bit reserved field. MUST be set to 0 on transmission and ignored on reception.
rsv 4位保留字段。在传输时必须设置为0,在接收时忽略。
sequence 8-bit unsigned integer. Identifies relative ordering of MPL Data Messages from the MPL Seed identified by the seed-id.
序列8位无符号整数。标识来自Seed-id标识的MPL种子的MPL数据消息的相对顺序。
seed-id Uniquely identifies the MPL Seed that initiated dissemination of the MPL Data Message. The size of the seed-id is indicated by the S field.
种子id唯一标识发起分发MPL数据消息的MPL种子。种子id的大小由S字段指示。
The Option Data (specifically, the M flag) of the MPL Option is updated by MPL Forwarders as the MPL Data Message is forwarded. Nodes that do not understand the MPL Option MUST discard the MPL Data Message. Thus, according to [RFC2460], the three high-order bits of the Option Type are set to '011'. The Option Data length is variable.
当MPL数据消息被转发时,MPL转发器更新MPL选项的选项数据(具体地说,M标志)。不理解MPL选项的节点必须丢弃MPL数据消息。因此,根据[RFC2460],选项类型的三个高阶位被设置为“011”。选项数据长度是可变的。
The seed-id uniquely identifies an MPL Seed. When the seed-id is 128 bits (S=3), the MPL Seed MAY use an IPv6 address assigned to one of its interfaces that is unique within the MPL Domain. Managing MPL Seed Identifiers is not within the scope of this document.
种子id唯一标识MPL种子。当种子id为128位(S=3)时,MPL种子可以使用分配给其接口之一的IPv6地址,该地址在MPL域中是唯一的。管理MPL种子标识符不在本文档的范围内。
The sequence field establishes a total ordering of MPL Data Messages generated by an MPL Seed for an MPL Domain. The MPL Seed MUST increment the sequence field's value on each new MPL Data Message that it generates for an MPL Domain. Implementations MUST follow the Serial Number Arithmetic as defined in [RFC1982] when incrementing a sequence value or comparing two sequence values.
序列字段建立由MPL种子为MPL域生成的MPL数据消息的总顺序。MPL种子必须在为MPL域生成的每个新MPL数据消息上增加序列字段的值。当递增序列值或比较两个序列值时,实现必须遵循[RFC1982]中定义的序列号算法。
Future updates to this specification may define additional fields following the seed-id field.
本规范的未来更新可能会在种子id字段之后定义其他字段。
An MPL Forwarder uses ICMPv6 Messages to communicate information contained in an MPL Domain's Seed Set and Buffered Message Set to neighboring MPL Forwarders. The MPL Control Message has the following format:
MPL转发器使用ICMPv6消息将MPL域的种子集和缓冲消息集中包含的信息传递给相邻的MPL转发器。MPL控制消息具有以下格式:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . MPL Seed Info[0..n] . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . MPL Seed Info[0..n] . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields:
IP字段:
Source Address An IPv6 address in the AddressSet of the corresponding MPL Interface. MUST be valid within the MPL Domain.
源地址对应MPL接口的地址集中的IPv6地址。必须在MPL域内有效。
Destination Address The link-scoped MPL Domain Address corresponding to the MPL Domain.
目标地址与MPL域对应的链路作用域MPL域地址。
Hop Limit 255
跃点限制255
ICMPv6 Fields:
ICMPv6字段:
Type 159
159型
Code 0
代码0
Checksum The ICMP checksum. See [RFC4443].
校验和ICMP校验和。参见[RFC4443]。
MPL Seed Info[0..n] List of zero or more MPL Seed Info entries.
MPL种子信息[0..n]零个或多个MPL种子信息条目的列表。
The MPL Control Message indicates the sequence numbers of MPL Data Messages that are within the MPL Domain's Buffered Message Set. The MPL Control Message also indicates the sequence numbers of MPL Data Messages that an MPL Forwarder is willing to receive. The MPL Control Message allows neighboring MPL Forwarders to determine whether or not there are any new MPL Data Messages to exchange.
MPL控制消息表示MPL域的缓冲消息集中的MPL数据消息的序列号。MPL控制消息还指示MPL转发器愿意接收的MPL数据消息的序列号。MPL控制消息允许相邻的MPL转发器确定是否有任何新的MPL数据消息要交换。
The MPL Seed Info encodes the minimum sequence number for an MPL Seed maintained in the MPL Domain's Seed Set. The MPL Seed Info also indicates the sequence numbers of MPL Data Messages generated by the MPL Seed that are stored within the MPL Domain's Buffered Message Set. The MPL Seed Info has the following format:
MPL种子信息编码MPL域种子集中维护的MPL种子的最小序列号。MPL种子信息还指示存储在MPL域的缓冲消息集中的由MPL种子生成的MPL数据消息的序列号。MPL种子信息的格式如下:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | min-seqno | bm-len | S | seed-id (0/2/8/16 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . buffered-mpl-messages (variable length) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | min-seqno | bm-len | S | seed-id (0/2/8/16 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . buffered-mpl-messages (variable length) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
min-seqno 8-bit unsigned integer. The lower-bound sequence number for the MPL Seed.
最小序列号8位无符号整数。MPL种子的下限序列号。
bm-len 6-bit unsigned integer. The size of buffered-mpl-messages in octets.
bm len 6位无符号整数。缓冲mpl消息的大小(以八位字节为单位)。
S 2-bit unsigned integer. Identifies the length of the seed-id. '0' indicates that the seed-id value is the IPv6 Source Address and not included in the MPL Seed Info. '1' indicates that the seed-id value is a 16-bit unsigned integer. '2' indicates that the seed-id value is a 64-bit unsigned integer. '3' indicates that the seed-id is a 128-bit unsigned integer.
S 2位无符号整数。标识种子id的长度。“0”表示种子id值是IPv6源地址,不包括在MPL种子信息中1'表示种子id值为16位无符号整数。'2'表示种子id值是64位无符号整数。'3'表示种子id是128位无符号整数。
seed-id Variable-length unsigned integer. Indicates the MPL Seed associated with this MPL Seed Info.
种子id变量长度无符号整数。指示与此MPL种子信息关联的MPL种子。
buffered-mpl-messages Variable-length bit-vector. Identifies the sequence numbers of MPL Data Messages maintained in the corresponding Buffered Message Set for the MPL Seed. The i-th bit represents a sequence number of min-seqno + i. '0' indicates that the corresponding MPL Data Message does not exist in the Buffered Message Set. '1' indicates that the corresponding MPL Data Message does exist in the Buffered Message Set.
缓冲mpl消息可变长度位向量。标识MPL种子的相应缓冲消息集中维护的MPL数据消息的序列号。第i位表示最小序号+i的序列号0'表示缓冲消息集中不存在相应的MPL数据消息。'1'表示缓冲消息集中确实存在相应的MPL数据消息。
The MPL Seed Info does not have any octet alignment requirement.
MPL种子信息没有任何八位字节对齐要求。
The Local Interface Set records the local MPL Interfaces of an MPL Forwarder. The Local Interface Set consists of Local Interface Tuples, one per MPL Interface: (AddressSet).
本地接口集记录MPL转发器的本地MPL接口。本地接口集由本地接口元组组成,每个MPL接口一个元组:(AddressSet)。
AddressSet - a set of unicast addresses assigned to the MPL Interface.
AddressSet—分配给MPL接口的一组单播地址。
The Domain Set records the MPL Interfaces that subscribe to each MPL Domain Address. The Domain Set consists of MPL Domain Tuples, one per MPL Domain: (MPLInterfaceSet).
域集记录订阅每个MPL域地址的MPL接口。域集由MPL域元组组成,每个MPL域一个元组:(MPL接口集)。
MPLInterfaceSet - a set of MPL Interfaces that subscribe to the MPL Domain Address that identifies the MPL Domain.
MPL接口集—一组MPL接口,用于订阅标识MPL域的MPL域地址。
A Seed Set records a sliding window used to determine the sequence numbers of MPL Data Messages (generated by the MPL Seed) that an MPL Forwarder is willing to accept. An MPL Forwarder maintains a Seed Set for each MPL Domain that it participates in. A Seed Set consists of MPL Seed Tuples: (SeedID, MinSequence, Lifetime).
种子集记录一个滑动窗口,用于确定MPL转发器愿意接受的MPL数据消息(由MPL种子生成)的序列号。MPL转发器为其参与的每个MPL域维护一个种子集。种子集由MPL种子元组组成:(种子ID、MinSequence、Lifetime)。
SeedID - the identifier for the MPL Seed.
SeedID—MPL种子的标识符。
MinSequence - a lower-bound sequence number that represents the sequence number of the oldest MPL Data Message the MPL Forwarder is willing to receive or transmit. An MPL Forwarder MUST ignore any MPL Data Message that has a sequence value less than MinSequence.
MinSequence—一个下限序列号,表示MPL转发器愿意接收或发送的最早MPL数据消息的序列号。MPL转发器必须忽略序列值小于MinSequence的任何MPL数据消息。
Lifetime - indicates the minimum remaining lifetime of the Seed Set entry. An MPL Forwarder MUST NOT free a Seed Set entry before the remaining lifetime expires.
生存期-指示种子集项的最小剩余生存期。MPL转发器不得在剩余生存期到期之前释放种子集项。
A Buffered Message Set records recently received MPL Data Messages from an MPL Seed within an MPL Domain. An MPL Forwarder uses a Buffered Message Set to buffer MPL Data Messages while the MPL Forwarder is forwarding the MPL Data Messages. An MPL Forwarder maintains a Buffered Message Set for each MPL Domain that it participates in. A Buffered Message Set consists of Buffered Message Tuples: (SeedID, SequenceNumber, DataMessage).
缓冲消息集记录最近从MPL域内的MPL种子接收的MPL数据消息。MPL转发器在转发MPL数据消息时,使用缓冲消息集来缓冲MPL数据消息。MPL转发器为其参与的每个MPL域维护一个缓冲消息集。缓冲消息集由缓冲消息元组组成:(SeedID、SequenceNumber、DataMessage)。
SeedID - the identifier for the MPL Seed that generated the MPL Data Message.
SeedID—生成MPL数据消息的MPL种子的标识符。
SequenceNumber - the sequence number for the MPL Data Message.
SequenceNumber—MPL数据消息的序列号。
DataMessage - the MPL Data Message.
DataMessage - the MPL Data Message.translate error, please retry
All MPL Data Messages within a Buffered Message Set MUST have a sequence number greater than or equal to MinSequence for the corresponding SeedID. When increasing MinSequence for an MPL Seed, the MPL Forwarder MUST delete any MPL Data Messages from the corresponding Buffered Message Set that have sequence numbers less than MinSequence.
缓冲消息集中的所有MPL数据消息的序列号必须大于或等于相应SeedID的MinSequence。当增加MPL种子的MinSequence时,MPL转发器必须从相应的缓冲消息集中删除序列号小于MinSequence的任何MPL数据消息。
Each MPL Seed maintains a sequence number for each MPL Domain that it serves. The sequence numbers are included in MPL Data Messages generated by the MPL Seed. The MPL Seed MUST increment the sequence number for each MPL Data Message that it generates for an MPL Domain. Implementations MUST follow the Serial Number Arithmetic as defined in [RFC1982] when incrementing a sequence value or comparing two sequence values. This sequence number is used to establish a total ordering of MPL Data Messages generated by an MPL Seed for an MPL Domain.
每个MPL种子为其服务的每个MPL域维护一个序列号。序列号包括在由MPL种子生成的MPL数据消息中。MPL种子必须增加它为MPL域生成的每个MPL数据消息的序列号。当递增序列值或比较两个序列值时,实现必须遵循[RFC1982]中定义的序列号算法。此序列号用于为MPL域建立由MPL种子生成的MPL数据消息的总顺序。
MPL Data Messages are generated by MPL Seeds when these messages enter the MPL Domain. All MPL Data Messages have the following properties:
MPL数据消息在这些消息进入MPL域时由MPL种子生成。所有MPL数据消息都具有以下属性:
o The IPv6 Source Address MUST be an address in the AddressSet of a corresponding MPL Interface and MUST be valid within the MPL Domain.
o IPv6源地址必须是相应MPL接口的地址集中的地址,并且必须在MPL域内有效。
o The IPv6 Destination Address MUST be set to the MPL Domain Address corresponding to the MPL Domain.
o IPv6目标地址必须设置为与MPL域对应的MPL域地址。
o An MPL Data Message MUST contain an MPL Option in its IPv6 header to identify the MPL Seed that generated the message and the ordering relative to other MPL Data Messages generated by the MPL Seed.
o MPL数据消息必须在其IPv6报头中包含MPL选项,以标识生成该消息的MPL种子以及相对于MPL种子生成的其他MPL数据消息的顺序。
When the destination address is an MPL Domain Address and the source address is in the AddressList of an MPL Interface that belongs to that MPL Domain Address, the application message and the MPL Data Message MAY be identical. In other words, the MPL Data Message may contain a single IPv6 header that includes the MPL Option.
当目标地址是MPL域地址且源地址在属于该MPL域地址的MPL接口的地址列表中时,应用消息和MPL数据消息可以相同。换句话说,MPL数据消息可以包含包含MPL选项的单个IPv6报头。
Otherwise, IPv6-in-IPv6 encapsulation MUST be used to satisfy the MPL Data Message requirements listed above [RFC2473]. The complete IPv6-in-IPv6 message forms an MPL Data Message. The outer IPv6
否则,必须使用IPv6-in-IPv6封装来满足上面列出的MPL数据消息要求[RFC2473]。完整的IPv6-in-IPv6消息形成MPL数据消息。外部IPv6
header conforms to the MPL Data Message requirements listed above. The encapsulated IPv6 datagram encodes the multicast data message that is communicated beyond the MPL Domain.
标头符合上面列出的MPL数据消息要求。封装的IPv6数据报对在MPL域之外通信的多播数据消息进行编码。
An MPL Forwarder manages transmission of MPL Data Messages in its Buffered Message Sets using the Trickle algorithm [RFC6206]. An MPL Forwarder MUST use a separate Trickle timer for each MPL Data Message that it is actively forwarding. In accordance with Section 5 of RFC 6206 [RFC6206], the following items apply:
MPL转发器使用涓流算法[RFC6206]在其缓冲消息集中管理MPL数据消息的传输。MPL转发器必须为其主动转发的每个MPL数据消息使用单独的涓流计时器。根据RFC 6206[RFC6206]第5节,以下项目适用:
o This document defines a "consistent" transmission as receiving an MPL Data Message that has the same MPL Domain Address, seed-id, and sequence value as the MPL Data Message managed by the Trickle timer.
o 本文档将“一致”传输定义为接收与涓流计时器管理的MPL数据消息具有相同MPL域地址、种子id和序列值的MPL数据消息。
o This document defines an "inconsistent" transmission as receiving an MPL Data Message that has the same MPL Domain Address, seed-id value, and the M flag set, but has a sequence value less than that of the MPL Data Message managed by the Trickle timer.
o 本文档将“不一致”传输定义为接收MPL数据消息,该消息具有相同的MPL域地址、种子id值和M标志集,但序列值小于涓流计时器管理的MPL数据消息的序列值。
o This document does not define any external "events".
o 本文件未定义任何外部“事件”。
o This document defines MPL Data Messages as Trickle messages.
o 本文档将MPL数据消息定义为涓流消息。
o The actions outside the Trickle algorithm that MPL takes involve managing the MPL Domain's Seed Set and Buffered Message Set.
o MPL采取的涓流算法之外的操作涉及管理MPL域的种子集和缓冲消息集。
As specified in [RFC6206], a Trickle timer has three variables: the current interval size I, a time within the current interval t, and a counter c. MPL defines a fourth variable, e, which counts the number of Trickle timer expiration events since the Trickle timer was last reset.
如[RFC6206]所述,涓流计时器有三个变量:当前间隔大小I、当前间隔t内的时间和计数器c。MPL定义了第四个变量e,它统计自上次重置涓流计时器以来涓流计时器过期事件的数量。
After DATA_MESSAGE_TIMER_EXPIRATIONS Trickle timer events, the MPL Forwarder MUST disable the Trickle timer. When a buffered MPL Data Message does not have an associated Trickle timer, the MPL Forwarder MAY delete the message from the Buffered Message Set by advancing the MinSequence value of the corresponding MPL Seed in the Seed Set. When the MPL Forwarder no longer buffers any messages for an MPL Seed, the MPL Forwarder MUST NOT increment MinSequence for that MPL Seed.
在数据消息计时器过期涓流计时器事件之后,MPL转发器必须禁用涓流计时器。当缓冲的MPL数据消息没有相关联的涓流计时器时,MPL转发器可以通过推进种子集中相应MPL种子的MinSequence值,从缓冲的消息集中删除该消息。当MPL转发器不再为MPL种子缓冲任何消息时,MPL转发器不得为该MPL种子增加MinSequence。
When transmitting an MPL Data Message, the MPL Forwarder MUST either set the M flag to zero or set it to a level that indicates whether or not the message's sequence number is the largest value that has been received from the MPL Seed.
传输MPL数据消息时,MPL转发器必须将M标志设置为零,或将其设置为指示消息的序列号是否为从MPL种子接收到的最大值的级别。
Upon receiving an MPL Data Message, the MPL Forwarder first processes the MPL Option and updates the Trickle timer associated with the MPL Data Message if one exists.
收到MPL数据消息后,MPL转发器首先处理MPL选项,并更新与MPL数据消息相关联的涓流计时器(如果存在)。
Upon receiving an MPL Data Message, an MPL Forwarder MUST perform one of the following actions:
收到MPL数据消息后,MPL转发器必须执行以下操作之一:
o Accept the message and enter the MPL Data Message in the MPL Domain's Buffered Message Set.
o 接受消息并在MPL域的缓冲消息集中输入MPL数据消息。
o Accept the message and update the corresponding MinSequence in the MPL Domain's Seed Set to 1 greater than the message's sequence number.
o 接受消息并将MPL域种子集中的相应MinSequence更新为大于消息序列号的1。
o Discard the message without any change to the MPL Information Base.
o 丢弃消息而不更改MPL信息库。
If a Seed Set entry exists for the MPL Seed, the MPL Forwarder MUST discard the MPL Data Message if its sequence number is less than MinSequence or exists in the Buffered Message Set.
如果MPL种子存在种子集条目,则如果MPL数据消息的序列号小于MinSequence或存在于缓冲消息集中,则MPL转发器必须丢弃该MPL数据消息。
If a Seed Set entry does not exist for the MPL Seed, the MPL Forwarder MUST create a new entry for the MPL Seed before accepting the MPL Data Message.
如果MPL种子不存在种子集条目,MPL转发器必须在接受MPL数据消息之前为MPL种子创建一个新条目。
If memory is limited, an MPL Forwarder SHOULD reclaim memory resources by:
如果内存有限,MPL转发器应通过以下方式回收内存资源:
o Incrementing MinSequence entries in a Seed Set and deleting MPL Data Messages in the corresponding Buffered Message Set that fall below the MinSequence value.
o 递增种子集中的MinSequence条目,并删除相应缓冲消息集中低于MinSequence值的MPL数据消息。
o Deleting other Seed Set entries that have expired and the corresponding MPL Data Messages in the Buffered Message Set.
o 删除已过期的其他种子集条目以及缓冲消息集中的相应MPL数据消息。
If the MPL Forwarder accepts the MPL Data Message, the MPL Forwarder MUST perform the following actions:
如果MPL转发器接受MPL数据消息,则MPL转发器必须执行以下操作:
o Reset the Lifetime of the corresponding Seed Set entry to SEED_SET_ENTRY_LIFETIME.
o 将相应种子集项的生存期重置为种子集项生存期。
o If PROACTIVE_FORWARDING is TRUE, the MPL Forwarder MUST initialize and start a Trickle timer for the MPL Data Message.
o 如果主动转发为TRUE,则MPL转发器必须初始化并启动MPL数据消息的涓流计时器。
o If the MPL Control Message Trickle timer is not running and CONTROL_MESSAGE_TIMER_EXPIRATIONS is non-zero, the MPL Forwarder MUST initialize and start the MPL Control Message Trickle timer.
o 如果MPL控制消息滴流计时器未运行且控制消息滴流计时器到期时间不为零,则MPL转发器必须初始化并启动MPL控制消息滴流计时器。
o If the MPL Control Message Trickle timer is running, the MPL Forwarder MUST reset the MPL Control Message Trickle timer.
o 如果MPL控制消息涓流计时器正在运行,MPL转发器必须重置MPL控制消息涓流计时器。
An MPL Forwarder generates MPL Control Messages to communicate an MPL Domain's Seed Set and Buffered Message Set to neighboring MPL Forwarders. Each MPL Control Message is generated according to Section 6.2, with an MPL Seed Info entry for each entry in the MPL Domain's Seed Set. Each MPL Seed Info entry has the following content:
MPL转发器生成MPL控制消息,以将MPL域的种子集和缓冲消息集传送给相邻的MPL转发器。每个MPL控制消息根据第6.2节生成,MPL域种子集中的每个条目都有一个MPL种子信息条目。每个MPL种子信息条目都有以下内容:
o S set to the size of the seed-id field in the MPL Seed Info entry.
o S设置为MPL种子信息条目中种子id字段的大小。
o min-seqno set to the MinSequence value of the MPL Seed.
o min seqno设置为MPL种子的MinSequence值。
o bm-len set to the size of buffered-mpl-messages in octets.
o bm len设置为缓冲mpl消息的大小(以八位字节为单位)。
o seed-id set to the MPL Seed Identifier.
o 种子id设置为MPL种子标识符。
o buffered-mpl-messages with each bit representing whether or not an MPL Data Message with the corresponding sequence number exists in the Buffered Message Set. The i-th bit represents a sequence number of min-seqno + i. '0' indicates that the corresponding MPL Data Message does not exist in the Buffered Message Set. '1' indicates that the corresponding MPL Data Message does exist in the Buffered Message Set.
o 缓冲mpl消息,每个位表示缓冲消息集中是否存在具有相应序列号的mpl数据消息。第i位表示最小序号+i的序列号0'表示缓冲消息集中不存在相应的MPL数据消息。'1'表示缓冲消息集中确实存在相应的MPL数据消息。
An MPL Forwarder transmits MPL Control Messages using the Trickle algorithm. An MPL Forwarder maintains a single Trickle timer for each MPL Domain. When CONTROL_MESSAGE_TIMER_EXPIRATIONS is 0, the MPL Forwarder does not execute the Trickle algorithm and does not transmit MPL Control Messages. In accordance with Section 5 of RFC 6206 [RFC6206], the following items apply:
MPL转发器使用涓流算法传输MPL控制消息。MPL转发器为每个MPL域维护一个涓流计时器。当CONTROL_MESSAGE_TIMER_EXPIRATIONS为0时,MPL转发器不执行涓流算法,也不发送MPL控制消息。根据RFC 6206[RFC6206]第5节,以下项目适用:
o This document defines a "consistent" transmission as receiving an MPL Control Message that results in a determination that neither the receiving nor transmitting node has any new MPL Data Messages to offer.
o 本文档将“一致”传输定义为接收MPL控制消息,从而确定接收节点和发送节点都没有任何新的MPL数据消息可提供。
o This document defines an "inconsistent" transmission as receiving an MPL Control Message that results in a determination that either the receiving or transmitting node has at least one new MPL Data Message to offer.
o 本文档将“不一致”传输定义为接收MPL控制消息,该消息导致确定接收或发送节点至少要提供一个新的MPL数据消息。
o The Trickle timer is reset in response to external "events". This document defines an "event" as increasing the MinSequence value of any entry in the corresponding Seed Set or adding a message to the corresponding Buffered Message Set.
o 涓流计时器根据外部“事件”重置。本文档将“事件”定义为增加相应种子集中任何条目的MinSequence值或向相应缓冲消息集中添加消息。
o This document defines an MPL Control Message as a Trickle message.
o 本文档将MPL控制消息定义为涓流消息。
As specified in [RFC6206], a Trickle timer has three variables: the current interval size I, a time within the current interval t, and a counter c. MPL defines a fourth variable, e, which counts the number of Trickle timer expiration events since the Trickle timer was last reset. After CONTROL_MESSAGE_TIMER_EXPIRATIONS Trickle timer events, the MPL Forwarder MUST disable the Trickle timer.
如[RFC6206]所述,涓流计时器有三个变量:当前间隔大小I、当前间隔t内的时间和计数器c。MPL定义了第四个变量e,它统计自上次重置涓流计时器以来涓流计时器过期事件的数量。控制消息计时器过期涓流计时器事件后,MPL转发器必须禁用涓流计时器。
An MPL Forwarder processes each MPL Control Message that it receives to determine if it has any new MPL Data Messages to receive or offer.
MPL转发器处理它接收到的每个MPL控制消息,以确定它是否有任何新的MPL数据消息要接收或提供。
An MPL Forwarder determines if a new MPL Data Message has not been received from a neighboring node if any of the following conditions hold true:
如果以下任一条件成立,MPL转发器确定是否尚未从相邻节点接收到新的MPL数据消息:
o The MPL Control Message includes an MPL Seed that does not exist in the MPL Domain's Seed Set.
o MPL控制消息包括MPL域的种子集中不存在的MPL种子。
o The MPL Control Message indicates that the neighbor has an MPL Data Message in its Buffered Message Set with sequence number greater than MinSequence (i.e., the i-th bit is set to 1 and min-seqno + i > MinSequence) and is not included in the MPL Domain's Buffered Message Set.
o MPL控制消息表示邻居在其缓冲消息集中具有序列号大于MinSequence的MPL数据消息(即,第i位设置为1且min seqno+i>MinSequence),并且不包括在MPL域的缓冲消息集中。
When an MPL Forwarder determines that it has not yet received an MPL Data Message buffered by a neighboring device, the MPL Forwarder MUST reset its Trickle timer associated with MPL Control Message transmissions. If an MPL Control Message Trickle timer is not running, the MPL Forwarder MUST initialize and start a new Trickle timer.
当MPL转发器确定其尚未接收到由相邻设备缓冲的MPL数据消息时,MPL转发器必须重置其与MPL控制消息传输相关联的涓流计时器。如果MPL控制消息涓流计时器未运行,MPL转发器必须初始化并启动新的涓流计时器。
An MPL Forwarder determines if an MPL Data Message in the Buffered Message Set has not yet been received by a neighboring MPL Forwarder if any of the following conditions hold true:
如果以下任一条件成立,MPL转发器确定缓冲消息集中的MPL数据消息是否尚未被相邻MPL转发器接收:
o The MPL Control Message does not include an MPL Seed for the MPL Data Message.
o MPL控制消息不包括MPL数据消息的MPL种子。
o The MPL Data Message's sequence number is greater than or equal to min-seqno and not included in the neighbor's corresponding Buffered Message Set (i.e., the MPL Data Message's sequence number does not have a corresponding bit in buffered-mpl-messages set to 1).
o MPL数据消息的序列号大于或等于min seqno,并且不包括在邻居的相应缓冲消息集中(即,MPL数据消息的序列号在缓冲MPL消息中没有设置为1的相应位)。
When an MPL Forwarder determines that it has at least one MPL Data Message in its corresponding Buffered Message Set that has not yet been received by a neighbor, the MPL Forwarder MUST reset the MPL Control Message Trickle timer. Additionally, for each of those 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.
当MPL转发器确定其相应的缓冲消息集中至少有一条MPL数据消息尚未被邻居接收时,MPL转发器必须重置MPL控制消息涓流计时器。此外,对于缓冲消息集中的每个条目,MPL转发器必须重置涓流计时器并将e重置为0。如果涓流计时器未与MPL数据消息关联,MPL转发器必须初始化并启动新的涓流计时器。
This document defines one IPv6 Option, a type that has been allocated from the IPv6 "Destination Options and Hop-by-Hop Options" registry of [RFC2780].
本文档定义了一个IPv6选项,该类型已从[RFC2780]的IPv6“目标选项和逐跳选项”注册表中分配。
This document defines one ICMPv6 Message, a type that has been allocated from the "ICMPv6 'type' Numbers" registry of [RFC4443].
本文档定义了一条ICMPv6消息,该消息类型已从[RFC4443]的“ICMPv6”类型“编号”注册表中分配。
This document registers a well-known multicast address from the "Variable Scope Multicast Addresses" registry of [RFC3307].
本文档从[RFC3307]的“可变范围多播地址”注册表中注册一个众所周知的多播地址。
IANA has allocated an IPv6 Option Type from the IPv6 "Destination Options and Hop-by-Hop Options" registry of [RFC2780], as specified in Table 1 below:
IANA已从[RFC2780]的IPv6“目标选项和逐跳选项”注册表中分配了IPv6选项类型,如下表1所示:
+-----------+-----+-----+-------+-------------+-----------+ | Hex Value | act | chg | rest | Description | Reference | +-----------+-----+-----+-------+-------------+-----------+ | 0x6D | 01 | 1 | 01101 | MPL Option | RFC 7731 | +-----------+-----+-----+-------+-------------+-----------+
+-----------+-----+-----+-------+-------------+-----------+ | Hex Value | act | chg | rest | Description | Reference | +-----------+-----+-----+-------+-------------+-----------+ | 0x6D | 01 | 1 | 01101 | MPL Option | RFC 7731 | +-----------+-----+-----+-------+-------------+-----------+
Table 1: IPv6 Option Type Allocation
表1:IPv6选项类型分配
Note: IANA has marked the value 0x4D (previously "MPL Option") as "Deprecated".
注意:IANA已将值0x4D(以前的“MPL选项”)标记为“已弃用”。
IANA has allocated an ICMPv6 Type from the "ICMPv6 'type' Numbers" registry of [RFC4443], as specified in Table 2 below:
IANA已从[RFC4443]的“ICMPv6”类型“编号”注册表中分配了ICMPv6类型,如下表2所示:
+------+---------------------+-----------+ | Type | Name | Reference | +------+---------------------+-----------+ | 159 | MPL Control Message | RFC 7731 | +------+---------------------+-----------+
+------+---------------------+-----------+ | Type | Name | Reference | +------+---------------------+-----------+ | 159 | MPL Control Message | RFC 7731 | +------+---------------------+-----------+
Table 2: ICMPv6 Type Allocation
表2:ICMPv6类型分配
IANA has allocated an IPv6 multicast address, with Group ID in the range [0x01,0xFF] for IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) compression [RFC6282], "ALL_MPL_FORWARDERS" from the "Variable Scope Multicast Addresses" sub-registry of the "IPv6 Multicast Address Space Registry" [RFC3307], as specified in Table 3 below:
IANA已经分配了一个IPv6多播地址,组ID在[0x01,0xFF]范围内,用于低功率无线个人局域网(6LoWPAN)上的IPv6压缩[RFC6282],“IPv6多播地址空间注册表”[RFC3307]的“可变范围多播地址”子注册表中的“所有MPL转发器”,如下表3所示:
+---------------------+--------------------+-----------+------------+ | Address(es) | Description | Reference | Date | | | | | Registered | +---------------------+--------------------+-----------+------------+ | FF0X:0:0:0:0:0:0:FC | ALL_MPL_FORWARDERS | RFC 7731 | 2013-04-10 | +---------------------+--------------------+-----------+------------+
+---------------------+--------------------+-----------+------------+ | Address(es) | Description | Reference | Date | | | | | Registered | +---------------------+--------------------+-----------+------------+ | FF0X:0:0:0:0:0:0:FC | ALL_MPL_FORWARDERS | RFC 7731 | 2013-04-10 | +---------------------+--------------------+-----------+------------+
Table 3: Variable Scope Multicast Address Allocation
表3:可变作用域多播地址分配
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. In both cases, the side effect allows an attacker to halt the forwarding process of any MPL Data Messages being disseminated and prevents MPL Forwarders from accepting new MPL Data Messages that an MPL Seed generates while the sequence number is less than MinSequence or until the corresponding Seed Set Entry expires. The net effect applies to both proactive and reactive forwarding modes.
MPL使用序列号来维护来自MPL种子的MPL数据消息的总顺序。序列号的使用允许拒绝服务攻击,攻击者可以利用足够大的序列号欺骗消息,以(i)刷新缓冲消息列表中的消息,以及(ii)增加相应种子集中MPL种子的MinSequence值。在这两种情况下,副作用都允许攻击者停止正在分发的任何MPL数据消息的转发过程,并阻止MPL转发器接受MPL种子在序列号小于MinSequence时或在相应种子集条目过期之前生成的新MPL数据消息。净效应适用于主动和被动转发模式。
In general, the basic ability to inject messages into an LLN may be used as a denial-of-service attack, regardless of what forwarding protocol is used. Because MPL is a dissemination protocol, the ability to spoof MPL messages allows an attacker to affect an entire MPL Domain. For these reasons, LLNs typically employ link-layer security mechanisms to mitigate an attacker's ability to inject messages. For example, the IEEE 802.15.4 [IEEE802.15.4] standard specifies frame security mechanisms using AES-128 to support access control, message integrity, message confidentiality, and replay protection. However, if the attack vector includes attackers that have access to the LLN, then MPL SHOULD NOT be used.
通常,无论使用何种转发协议,将消息注入LLN的基本能力都可能被用作拒绝服务攻击。由于MPL是一种传播协议,因此欺骗MPL消息的能力允许攻击者影响整个MPL域。出于这些原因,LLN通常采用链路层安全机制来降低攻击者注入消息的能力。例如,IEEE 802.15.4[IEEE802.15.4]标准指定了使用AES-128的帧安全机制,以支持访问控制、消息完整性、消息机密性和重播保护。然而,如果攻击向量包含可访问LLN的攻击者,则不应使用MPL。
To prevent attackers from injecting packets through an MPL Forwarder, the MPL Forwarder MUST NOT accept or forward MPL Data Messages from a communication interface that does not subscribe to the MPL Domain Address identified in the message's destination address.
为防止攻击者通过MPL转发器注入数据包,MPL转发器不得接受或转发来自未订阅消息目的地址中标识的MPL域地址的通信接口的MPL数据消息。
MPL uses the Trickle algorithm to manage message transmissions; therefore, the security considerations described in [RFC6206] apply.
MPL使用涓流算法来管理消息传输;因此,[RFC6206]中描述的安全注意事项适用。
[RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, DOI 10.17487/RFC1982, August 1996, <http://www.rfc-editor.org/info/rfc1982>.
[RFC1982]Elz,R.和R.Bush,“序列号算术”,RFC 1982,DOI 10.17487/RFC1982,1996年8月<http://www.rfc-editor.org/info/rfc1982>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.
[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<http://www.rfc-editor.org/info/rfc2119>.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, December 1998, <http://www.rfc-editor.org/info/rfc2460>.
[RFC2460]Deering,S.和R.Hinden,“互联网协议,第6版(IPv6)规范”,RFC 2460,DOI 10.17487/RFC2460,1998年12月<http://www.rfc-editor.org/info/rfc2460>.
[RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473, December 1998, <http://www.rfc-editor.org/info/rfc2473>.
[RFC2473]Conta,A.和S.Deering,“IPv6规范中的通用数据包隧道”,RFC 2473,DOI 10.17487/RFC2473,1998年12月<http://www.rfc-editor.org/info/rfc2473>.
[RFC2780] Bradner, S. and V. Paxson, "IANA Allocation Guidelines For Values In the Internet Protocol and Related Headers", BCP 37, RFC 2780, DOI 10.17487/RFC2780, March 2000, <http://www.rfc-editor.org/info/rfc2780>.
[RFC2780]Bradner,S.和V.Paxson,“互联网协议和相关报头中值的IANA分配指南”,BCP 37,RFC 2780,DOI 10.17487/RFC2780,2000年3月<http://www.rfc-editor.org/info/rfc2780>.
[RFC3307] Haberman, B., "Allocation Guidelines for IPv6 Multicast Addresses", RFC 3307, DOI 10.17487/RFC3307, August 2002, <http://www.rfc-editor.org/info/rfc3307>.
[RFC3307]Haberman,B.,“IPv6多播地址分配指南”,RFC 3307,DOI 10.17487/RFC3307,2002年8月<http://www.rfc-editor.org/info/rfc3307>.
[RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, DOI 10.17487/RFC4007, March 2005, <http://www.rfc-editor.org/info/rfc4007>.
[RFC4007]Deering,S.,Haberman,B.,Jinmei,T.,Nordmark,E.,和B.Zill,“IPv6作用域地址体系结构”,RFC 4007,DOI 10.17487/RFC4007,2005年3月<http://www.rfc-editor.org/info/rfc4007>.
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification", RFC 4443, DOI 10.17487/RFC4443, March 2006, <http://www.rfc-editor.org/info/rfc4443>.
[RFC4443]Conta,A.,Deering,S.,和M.Gupta,Ed.,“互联网协议版本6(IPv6)规范的互联网控制消息协议(ICMPv6)”,RFC 4443,DOI 10.17487/RFC4443,2006年3月<http://www.rfc-editor.org/info/rfc4443>.
[RFC6206] Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko, "The Trickle Algorithm", RFC 6206, DOI 10.17487/RFC6206, March 2011, <http://www.rfc-editor.org/info/rfc6206>.
[RFC6206]Levis,P.,Clausen,T.,Hui,J.,Gnawali,O.,和J.Ko,“涓流算法”,RFC 6206,DOI 10.17487/RFC6206,2011年3月<http://www.rfc-editor.org/info/rfc6206>.
[RFC6282] Hui, J., Ed., and P. Thubert, "Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based Networks", RFC 6282, DOI 10.17487/RFC6282, September 2011, <http://www.rfc-editor.org/info/rfc6282>.
[RFC6282]Hui,J.,Ed.,和P.Thubert,“基于IEEE 802.15.4的网络上IPv6数据报的压缩格式”,RFC 6282,DOI 10.17487/RFC6282,2011年9月<http://www.rfc-editor.org/info/rfc6282>.
[RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, JP., and R. Alexander, "RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks", RFC 6550, DOI 10.17487/RFC6550, March 2012, <http://www.rfc-editor.org/info/rfc6550>.
[RFC6550]温特,T.,Ed.,Thubert,P.,Ed.,Brandt,A.,Hui,J.,Kelsey,R.,Levis,P.,Pister,K.,Struik,R.,Vasseur,JP.,和R.Alexander,“RPL:低功耗和有损网络的IPv6路由协议”,RFC 6550,DOI 10.17487/RFC6550,2012年3月<http://www.rfc-editor.org/info/rfc6550>.
[RFC7346] Droms, R., "IPv6 Multicast Address Scopes", RFC 7346, DOI 10.17487/RFC7346, August 2014, <http://www.rfc-editor.org/info/rfc7346>.
[RFC7346]Droms,R.,“IPv6多播地址范围”,RFC 7346,DOI 10.17487/RFC7346,2014年8月<http://www.rfc-editor.org/info/rfc7346>.
[Clausen2013] Clausen, T., de Verdiere, A., and J. Yi, "Performance Analysis of Trickle as a Flooding Mechanism", The 15th IEEE International Conference on Communication Technology (ICCT2013), DOI 10.1109/ICCT.2013.6820439, November 2013.
[Clausen2013]Clausen,T.,de Verdiere,A.,和J.Yi,“涓流作为洪水机制的性能分析”,第15届IEEE国际通信技术会议(ICCT2013),DOI 10.1109/ICCT.2013.6820439,2013年11月。
[IEEE802.15.4] IEEE, "IEEE Standard for Local and metropolitan area networks--Part 15.4: Low-Rate Wireless Personal Area Networks (LR-WPANs)", IEEE 802.15.4, DOI 10.1109/ieeestd.2011.6012487, <http://ieeexplore.ieee.org/servlet/ opac?punumber=6012485>.
[IEEE802.15.4]IEEE,“局域网和城域网的IEEE标准——第15.4部分:低速无线个人区域网(LR WPAN)”,IEEE 802.15.4,DOI 10.1109/ieeestd.2011.6012487<http://ieeexplore.ieee.org/servlet/ opac?punumber=6012485>。
[RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol Independent Multicast - Dense Mode (PIM-DM): Protocol Specification (Revised)", RFC 3973, DOI 10.17487/RFC3973, January 2005, <http://www.rfc-editor.org/info/rfc3973>.
[RFC3973]Adams,A.,Nicholas,J.,和W.Siadak,“协议独立多播-密集模式(PIM-DM):协议规范(修订版)”,RFC 3973,DOI 10.17487/RFC3973,2005年1月<http://www.rfc-editor.org/info/rfc3973>.
[RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, "Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)", RFC 4601, DOI 10.17487/RFC4601, August 2006, <http://www.rfc-editor.org/info/rfc4601>.
[RFC4601]Fenner,B.,Handley,M.,Holbrook,H.,和I.Kouvelas,“协议独立多播-稀疏模式(PIM-SM):协议规范(修订版)”,RFC 4601,DOI 10.17487/RFC4601,2006年8月<http://www.rfc-editor.org/info/rfc4601>.
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, Philip Levis, Kerry Lynn, Joseph Reddy, Michael Richardson, Ines Robles, Don Sturek, Dario Tedeschi, and Peter van der Stok, which greatly improved the document.
作者希望感谢罗伯特·克拉吉、埃斯科·迪克、拉尔夫·德罗姆斯、保罗·达菲、阿德里安·法雷尔、乌尔里希·赫伯格、欧文·柯比、菲利普·列维斯、克里·林恩、约瑟夫·雷迪、迈克尔·理查森、伊内斯·罗伯斯、唐·斯特雷克、达里奥·泰德斯基和彼得·范德斯托克的有益评论,这些评论极大地改进了该文件。
Authors' Addresses
作者地址
Jonathan W. Hui Nest Labs 3400 Hillview Ave. Palo Alto, California 94304 United States
美国加利福尼亚州帕洛阿尔托Hillview大道3400号Jonathan W.Hui Nest实验室94304
Phone: +650 253 2770 Email: jonhui@nestlabs.com
Phone: +650 253 2770 Email: jonhui@nestlabs.com
Richard Kelsey Silicon Labs 25 Thomson Place Boston, Massachusetts 02210 United States
美国马萨诸塞州波士顿汤姆森广场25号Richard Kelsey硅实验室02210
Phone: +617 951 1225 Email: richard.kelsey@silabs.com
Phone: +617 951 1225 Email: richard.kelsey@silabs.com