<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
  <!ENTITY RFC5548 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5548.xml">
  <!ENTITY RFC5673 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5673.xml">
  <!ENTITY RFC5826 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5826.xml">
  <!ENTITY RFC5867 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5867.xml">
  <!ENTITY RFC6206 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6206.xml">
  <!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
  <!ENTITY I-D.ietf-roll-rpl SYSTEM
    "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-roll-rpl.xml">
  <!ENTITY I-D.ietf-roll-p2p-rpl SYSTEM
    "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-roll-p2p-rpl.xml">
  <!ENTITY I-D.ietf-roll-trickle-mcast SYSTEM
    "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-roll-trickle-mcast.xml">
  <!ENTITY I-D.ietf-core-coap SYSTEM
    "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-core-coap.xml">

]>

<!-- Use with the following tips & tools:
      http://xml.resource.org/authoring/draft-mrose-writing-rfcs.html
      http://xml.resource.org/
      http://fenron.net/~fenner/ietf/xml2rfc-valid/
      http://tools.ietf.org/rfcdiff
  -->
      
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.35) -->

<!-- give errors regarding ID-nits and DTD validation -->
<?rfc strict="yes"?>

<!-- control the table of contents (ToC) -->
<!-- generate a ToC -->
<?rfc toc="yes"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<?rfc tocdepth="2"?>

<!-- control references -->
<!-- use anchors instead of numbers for refs, i.e, [RFC2119] instead of [1] -->
<?rfc symrefs="yes"?>
<!-- sort the reference entries alphabetically -->
<?rfc sortrefs="no" ?>

<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<!-- do not start each main section on a new page -->
<?rfc compact="yes" ?>
<!-- "no" to keep one blank line between list items (rfced) -->
<?rfc subcompact="yes" ?>

<!-- encourage use of "xml2rfc" tool -->
<?rfc rfcprocack="yes" ?>
<!-- end of list of popular I-D processing instructions -->

<rfc category="info" ipr="trust200902" docName="draft-vanderstok-roll-mcreq-01">
  <front>
    <title abbrev="MCReq"> Multicast requirements for control over LLN </title>

  	<author initials="P.D.V." surname="van der Stok" fullname="Peter van der Stok" role="editor">
  		<organization abbrev="Philips Research">Philips Research</organization>
      <address>
      	<postal>
        	<street>High Tech Campus 34-1</street>
          <city>Eindhoven</city><region></region><code>5656 AA</code>
         	<country>The Netherlands</country>
       	</postal>
  		  <email>peter.van.der.stok@philips.com</email>		
	  	</address>
  	</author>

   

    <date day="12" month="March" year="2012"/>
    <area> Routing </area>
    <workgroup> ROLL </workgroup>

    <abstract>
      <t>
      This is a working document intended to focus discussion on requirements
	for multicast in Low-power and Lossy Networks in the area of M2M communication
	for control purposes. The Trickle algorithm, which uses re-broadcasting to assure that messages arrive at all destinations, 
	is proposed as the ROLL multicast protocol.
	In this draft additional requirements on Trickle, such as timeliness and ordering, are motivated by building control.
	Re-broadcasting and timeliness can be mutually exclusive properties.
	To alleviate that problem, this draft considers minimizing re-broadcast by limiting the number of re-broadcasting devices in the wireless network.
      </t>
    </abstract>

<!--
    <note title="Requirements Language">
    <t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;,
    &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
    &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,
    &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be
    interpreted as described in  <xref target="RFC2119">RFC 2119</xref>.
    </t>
    </note>
-->

  </front>
  <middle>

    <!-- section anchor="sec-1" title="Introduction" -->
    <section title="Introduction">
        <t>
        The ROLL working group is chartered to design and standardize a
        routing protocol for resource constrained
        devices in Low-power and Lossy Networks (LLN) <xref target="I-D.ietf-roll-rpl"/>.  The requirements
        for ROLL are documented in <xref target="RFC5548"/> <xref target="RFC5673"/> <xref target="RFC5826"/>
	<xref target="RFC5867"/>. For building control it is recognized that most communication is local to the wireless mesh network, 
	and does not necessarily pass through the edge router. 
	The point-to-point RPL routing algorithm is developed to 
 	efficiently support such applications <xref target="I-D.ietf-roll-p2p-rpl"/>.
	The Trickle algorithm was developed to support the RPL
 	routing algorithm <xref target="RFC6206"/>, 
	and later proposed to support general multicast delivery in LLN <xref target="I-D.ietf-roll-trickle-mcast"/>.

	
	</t><t>
	This draft
	 discusses the multicast requirements for constrained devices participating in M2M building control networks. 
	An important requirement is the delivery of
	control commands to a subset (group) of neighbouring devices in the LLN within some latency bound.
        </t>

      <!-- section anchor="sec-1.1" title="Terminology" -->
      <section title="Terminology">
        <t>
        The key words &quot;MUST&quot;, &quot;MUST NOT&quot;,
        &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
        &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,
        &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be
        interpreted as described in  <xref target="RFC2119">RFC 2119</xref>.
	Addtional privileged words are described below.
	  </t><t>
	A "device" is a physical processor connected to at least one link through a network interface. 
	Each interface has at least one IP unicast address. The IP address is optionally bound to a host name, 
	which may be a Fully Qualified Domain Name (FQDN).
	</t><t>
	One device communicates directly with another device by wirelessly transmitting packets to it over a link.
	The link quality is divided in three regions: 
	</t><t>
	<list style="numbers">
	<t>good: where a transmitted packet will be correctly received by a destination with a probability higher than 99%.</t> 
	<t>transitional: where the probability of correct reception fluctuates. </t>
	<t>bad: where almost no transmission is successfully received. </t>
	</list>
	</t><t>
	It is empirically known that good links can become bad occasionally (e.g. once a week for a few minutes)due 
	to dynamic effects such as multipath interference.
	</t><t>
	A distinction is made between reception and delivery of a message. 
	A message is received when it is stored in the reception buffer of the receiver after transmission
	and all error checks have been succesfully passed. 
	The message is delivered when the message is passed from the reception buffer to the destination application. We
	also say the application accepts the message.
	</t><t>
	Broadcasting is used for the link-local sending of one packet to all reachable 1-hop neigbours. This is
	equivalent to the term link-local multicast.
        </t>
	  
      </section>

      <!-- section anchor="sec-1.2" title="Motivation" -->
      <section title="Motivation">
        <t>
        In this draft, we focus and develop discussions on requirements pertaining to multicasting, in the context of building control applications.

        </t>
      </section>

    </section>

    <!-- section anchor="sec-2" title="Application characteristics" -->
    <section title="Application characteristics">
      <t>
	Multicast is important for building control applications. Two types of applications are considered:
	</t><t>
	<list style="numbers">
	<t> Discovery messages to (a subset of) the members of the mesh (multicast GET)</t>
	<t>Control messages to a subset of the mesh (multicast PUT)</t>
	</list>
	</t><t>
	The first type requires the message to be sent to a (sub)set which may be randomly distributed over the
	building area. Some of the destinations return unicast messages to the source.
	</t><t>
	The second type requires the message to be sent to a closely spaced subset. No return messages are generated.
	This second type is the subject of this draft, although most of the requirements equally apply to case 1.
	</t><t>
	PUT and GET are the message types defined for CoAP <xref target="I-D.ietf-core-coap"/>. They are 
	thought representative for the two applications types, as one returns a result and the other does not.
	</t><t>
	An office building typically consist of multiple floors, divided in working areas. The working areas
	can be open or enclosed by walls. Within a working area sensors measure temperature, presence, humidity and other parameters.
	On the basis of these measurements, equipment within the working area can receive commands to change settings.
	A well-known example is presence detection to switch on or dim lights.
	The equipment configuration is quite stable, because devices are installed in the ceiling, 
	and modifying (or servicing) the installation can be costly.
	</t><t>
	The equipment is interconnected in a wireless network. The RF transmissions pass through the walls
	and generate interference to the wireless equipment in other working areas.
	</t><t>
	The lay-out of a network may be different from installation to installation.
	However, it is expected that many wireless networks extend over one floor and include several working areas.
	Another working hypothesis is that most of the time sensors will multicast their values to a group of devices
	within the working area. Consequently, multicast messages are often meant for a subset of neigbouring devices.
	</t><t>
	A LoWPAN is a mesh of wireless devices that share the same IPv6 address prefix. 
	A typical LowPAN in a building may cover the area of an entire floor. 
	A commercial installation may cover 1000 m2 per floor. A length of 50 m can easily mean a hop 
	count >5 for a message to pass from end to end.
 	For example, devices may be installed in the ceiling in a grid with a grid pattern distance of 40 cm between devices.
	</t><t>
	Messages may consist of sensor measurements performed or commands issued in a given working area,
	which then must be acted upon by neigbouring devices in the same working area.
	Under this control pattern, source and sink are located in one working area, and accordingly
	sink and source of a multicast message are often between 3 - 6 m from each other. 
	Consequently, it is required to send a multicast to a subset of the devices in the LoWPAN.
	</t><t> 
	In case of commands to luminaries, messages must be delivered within a clear deadline of about 200ms. 
	In <xref target="RFC5867"/> a deadline of 120 ms is suggested for other building applications.
	</t><t> 
	Although control messages are frequently exchanged between closely spaced (less than 6 m) devices,
 	it is sometimes necessary, say every hour or less frequently, to send a message to a subset of devices 
	covering the whole building. In that case the multicast message will need to pass the edge router
 	of the lowpan and to propagate to other subnets.
	</t>
	</section>


    <!-- section anchor="sec-3" title="Multicast requirements" -->
    <section title="Multicast requirements">
      <t>	
	The Multicast requirements are derived from the characteristics of the applications. 
	A device is said to be correct it it follows the selected multicast algorithm.
	The application characteristics and the network installation make it possible to add an additional set of network properties
	 to make the multicast algorithm more efficient.
	</t><t>
	The basic traditional multicast requirements (applying to PUT and GET)are:
	</t><t>
	<list style="symbols">
	<t>Validity: If sender S sends message, m, to a group, g, of destinations, a path exists between S and a destination D, 
	and S and D are correct, D eventually accepts m.</t>
	<t>Integrity: A destination accepts m at most once from sender and only if sender sent m to a group including destination.</t>
	<t>Agreement: If a correct destination of g accepts m, then all correct destinations of g accept m.</t>
	</list>
	</t><t>
	The set of intended destination devices is identified by the multicast (group) IP address. 
	Every device in the associated multicast group is a destination of the multicast. 
	Each destination accepts messages with as destination the specified IP multicast address. 
	Additional multicast requirements are:
	</t><t>
	<list style="symbols">
	<t>Timeliness: There is a known constant C such that if m is sent at time t, no correct destination accepts m after t+C.</t>
	</list>
	</t><t>
	For lighting control applications the value of C is taken as 200 ms. This requirement considers the PUT case and not the
	return of a response in the GET case.
	</t><t>
	</t><t>
	<list style="symbols">
	<t>Ordering: When m1 and m2 sent to the same group g, and a receiver in g accepts message m1 before m2, every receiver in g accepts m1 before accepting m2</t>
	</list>
	</t><t>
	Ordering applies to PUT and GET cases. Ordering can be partial or total. 
	Partial ordering means that for specified message pairs, one message of the pair precedes the other.
	In case of total ordering, every message pair is ordered.
	Partial ordering is obtained by adding message counters in the message
	such that destinations can order the messages of a given sender. 
	Messages from different sources are not ordered. 
	Total ordering can be obtained with vector clocks or using synchronized clocks. Vector clocks require a large overhead
	that increases linearly with the number of devices in the network.
	As long as no synchronized clocks are available, partial ordering seems the most realistic. 
	Total Ordering is interesting for the discovery application. When two devices announce themselves 
	simultaneously with conflicting properties, all participants can come to the same decision by favoring the first arrival. 
	Partial ordering is necessary when a multicast message needs multiple packets (for example discovery messages) or when
	multicast messages are sent with intervals shorter than the throughput delay.
	</t>
	</section>


    <!-- section anchor="sec-4" title="Wireless link characteristics" -->
    <section title="Wireless link characteristics">
      <t>	
	It is possible to broadcast from a source to a set of devices reachable over good links in one hop. 
	This is not sufficient because the set of reachable devices is often a subset of the set of destination devices. 
	Consequently, additional measures are needed to make sure that the Agreement requirement is met.
	A standard technique, to reach all devices instead of a subset, 
	stipulates that every receiver of a broadcast message rebroadcasts this message (flooding).
	When the multicast address corresponds with a specified multicast address in the receiver device, 
	the message is delivered. 
 	Thanks to this technique it is assured that when a path exists between the source and the 
	destination device, the destination device will eventually receive the message from the sender. 
	</t><t>
 	Given the network density described in section 2, the multicast can generate a broadcast storm with lots of interfering senders.
 	The technique to prevent the storm, also used in Trickle, is to randomly delay the message rebroadcast. 
	However, the long delays can seriously jeopardize the timeliness requirement. This draft proposes three ways
	suggested by the application characteristics, to
	reduce the interference between re-broadcasting devices:
	</t><t>
	<list style="numbers">
	<t>Restrict the scope of the multicast.</t>
	<t>Restrict number of rebroadcasting devices.</t>
	<t>Weaken the Timeliness requirement.</t>
	</list>
	</t><t>
	In the application characteristics it is mentioned that most control messages have a set of destinations
 	which are closely spaced to the source. 
	The interference between multicast sources can be reduced by limiting the scope of the broadcast message.  
	The ensuing proximity condition can be formulated for both PUT and GET as:
	</t><t>
	<list style="symbols">
	<t>Proximity condition: A multicast message is accepted by a subset of devices closely spaced to the sender.</t>
	</list>
	</t><t>
	In practice, this condition means that most multicast messages can be constrained to 1-2 hops. Therefore, it is recommended to
	put the multicast range under control of the multicast source.
	</t><t>
	Given the stability of the network configuration, the configuration of good links
	is also stable over long periods (say several days). When all good links are available, 
	the number of possible paths between a source 
	and each of its destinations is probably larger than required given the sporadic failure of a good link.
	Under the assumption that the qualities 
	of the good links of a given device are unrelated, the failure of good link has no consequence for alternative good links. 
	The number of paths can be reduced by specifying a subset of devices, called relay devices
	(possibly equivalent with Trickle multicast forwarders mentioned in <xref target="I-D.ietf-roll-trickle-mcast"/>), to rebroadcast messages.
	A path can pass from a source via relay devices to the multicast destinations. 
	A relay device can also be a destination device. 
	In <xref target="RFC5867"/> it is mentioned that 1 out of 2 devices is a relay device. Given the network densities
	foreseen for lighting, a much lower relay density is possible.
	The reduction of the relay devices reduces the risk of interference in the dense networks described in section 2. 
	An appropriate condition to assure the presence of a path between source and destination can be formulated as:
	</t><t>
	<list style="symbols">
	<t>Multiple relay links: any device has good links to at least q relay devices</t>
	</list>
	</t><t>
	The value of q is determined by the quality of the links in a given installation.
	</t><t>
 	However, the probability that a path was temporarily unavailable cannot be excluded.
	The timeliness requirement is too strong for wireless sensor networks, where packets get
 	lost for multiple reasons like hidden terminal, multipath fading, and others. 
	The timeliness requirement can be reformulated for the PUT case as:
	</t><t>
	<list style="symbols">
	<t>Majority Timeliness: with high probability, p, the timeliness requirent is met;
	with probability (1-p) a subset s in g accepts m after t+C.</t>
	</list>
	</t><t>
	The agreement requirement specifies that all destinations in g accept the message eventually. 
	Consequently, there is a (low) probability (1-p) that members of g accept the message after t+C. 
	Probability p and subset s are specified as function of the installation and linked with the value of q.
	For a lighting application this means that in general all lights switch on/off within 200 ms
	and quite infrequently, (say once a month) one out of all lights swictches on/off a bit later (say a few seconds).
	</t><t>
	Using rebroadcast with a frequency that decreases with increasing density to reduce the probability of interference (as in Trickle)
	assures that missed messages are eventually repeated. It should be noted that the relay nodes can be consistent while a receiver node is not.
	Relay nodes cannot detect the inconsistency, and are thus required to rebroadcast the latest message continuously, or
	receiver nodes rebroadcast their status with a low frequency.
	</t>
	</section>


    <!-- section anchor="sec-5" title="Recommendations" -->
    <section title="Recommendation">
      <t>	
	From the text above emerges a number of recommendations to make it possible to put
	propagation characteristics of the multicast algorithm under application control.
	<list style="numbers">
	<t> Take into account timeliness and partial ordering requirements in multicast algorithm.</t>
	<t> Exploit the small range of most multicasts used for control purposes and put multicast range under application control.</t>
	<t> Introduce a subset of devices as relay devices to reduce the number of rebroadcasting devices.</t>
	<t> Introduce meachanisms to remove inconsistencies in receiver nodes in spite of consistent relay nodes.</t>
	<t> Use majority timeliness requirement to choose the number of relay devices with respect to 
	the probability that a device misses its multicast reception deadline.</t>
	<t> Multicast messages transit through an edge router.</t>
	</list>
	</t>
	</section>




    <!-- section anchor="IANA" title="IANA Considerations" -->
    <section title="IANA Considerations">
      <t>This document makes no request of IANA.</t>
      <t>Note to RFC Editor: this section may be removed on publication as an RFC.</t>
    </section>

    <!-- section anchor="Security" title="Security Considerations" -->
    <section title="Security Considerations">
      <t>
      TBD
      </t>
    </section>

    <!-- section anchor="Acknowledgements" title="Acknowledgements" -->
    <section title="Acknowledgments">
      <t>
 	This I-D has benefited from conversations with and comments from
      Anders Brandt, Kerry Lynn, Zach Shelby,
	Emmanuel Frimout, Michael Verschoor, Jamie Mc Cormack,
      Dee Denteneer, Esko van Dijk, Jerald Martocci,
	Matthieu Vial, and Nicolas Riou.
      </t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      &RFC2119;
	&RFC5548;
	&RFC5673;
	&RFC5826;
      &RFC5867;
	&RFC6206;
    </references>
    
    <references title="Informative References">
      &I-D.ietf-roll-rpl;
      &I-D.ietf-roll-p2p-rpl;
	&I-D.ietf-roll-trickle-mcast;
	&I-D.ietf-core-coap;
    </references>
  </back>
</rfc>
