<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="exp"
     docName="draft-roux-roll-mpl-eval-00.txt"
     ipr="trust200902">

  <!-- category values: std, bcp, info, exp, and historic ipr values:
       trust200902, noModificationTrust200902,
       noDerivativesTrust200902, or pre5378Trust200902 you can add the
       attributes updates="NNNN" and obsoletes="NNNN" they will
       automatically be output with "(if approved)" -->

  <front>

    <title abbrev='mpl-eval'>
      Preliminary results about MPL performance evaluation
    </title>

    <author initials='P.' surname='Roux' fullname='Pierre Roux'>
      <organization>CEA</organization>
      <address>
	<postal>
	  <street>
	  </street>
	  <city>
	    http://www.cea.fr
	  </city>
	  <region>
	  </region>
	  <code>
	  </code>
	  <country>
            France
	  </country>
	</postal>
	<phone>
	</phone>
	<email>
	  Pierre.Roux@cea.fr
	</email>
      </address>
    </author>

    <author initials='A.' surname="Petrescu" fullname='Alexandru Petrescu'>
      <organization>CEA</organization>
      <address>
	<postal>
	  <street>
	  </street>
	  <city>
	    http://www.cea.fr
	  </city>
	  <region>
	  </region>
	  <code>
	  </code>
	  <country>
            France
	  </country>
	</postal>
	<phone>
	</phone>
	<email>
	  Alexandru.Petrescu@cea.fr
	</email>
      </address>
    </author>

    <author initials='M.' surname="Kellil" fullname='Mounir Kellil'>
      <organization>CEA</organization>
      <address>
	<postal>
	  <street>
	  </street>
	  <city>
	    http://www.cea.fr
	  </city>
	  <region>
	  </region>
	  <code>
	  </code>
	  <country>
          France
	  </country>
	</postal>
	<phone>
	</phone>
	<email>
	  Mounir.Kellil@cea.fr
	</email>
      </address>
    </author>

    <date/>

    <!-- Meta-data Declarations -->

    <area>Internet</area>

    <workgroup>Network Working Group</workgroup>

    <!-- WG name at the upperleft corner of the doc, IETF is fine for
         individual submissions.  If this element is not present, the
         default is "Network Working Group", which is used by the RFC
         Editor as a nod to the history of the IETF. -->

    <keyword>
      MPL, Tricle Multicast, evaluation
    </keyword>

    <!-- Keywords will be incorporated into HTML output files in a
         meta tag but they have no effect on text or nroff output. If
         you submit your draft to the RFC Editor, the keywords will be
         used for the search engine. -->

    <abstract>
      <t>
This draft presents simulation work and first results related to MPL performance evaluation. 
The simulation makes it possible to evaluate MPL performances in the context of a large network. 
The simulated network introduces 500 nodes. The general principles of the simulator are described. 
Then reference settings are introduced, and evaluation indicators are proposed. 
Finally preliminary results are presented under the form of a few tables, that show the proposed indicator 
values depending on some specific parameter which is used as a variable argument. 
Among various results, the advantage of using reactive mode for MPL is shown 
in terms of the capability to maintain loss free diffusion in harsh radio conditions.

      </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>
	The RPL protocol is an IPv6 protocol for low-power and lossy
	networks, defined in <xref target='RFC6550'/>.
      </t>
<t>
The <xref target="I-D.ietf-roll-trickle-mcast"/> draft introduces the so called MPL algorithm, 
with a lot of freedom in terms of possible configuration. The current draft is a preliminary attempt
to provide guidance for finding good algorithm settings for MPL.
</t>
<t>
Simulation makes it possible to address algorithmic capabilities in terms of scalability. 
A network made of 500 nodes is considered in this document.
The proposed objective is to assess performance of the MPL protocol in such large networks, and to compare various MPL settings,
in order to understand their influence on performances, so that setting guidelines may be derived.
</t>
<t>
However, the presented results are still not mature enough to propose solid and motivated guidelines. 
This draft should be considered as a preliminary attempt in this direction. 
Depending on the feedback, a more complete set of results may be presented in the coming months.
</t>


    </section>
	
    <section title="Terminology">
      <t>
	The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in
	<xref target="RFC2119">RFC 2119</xref>.
      </t>
    </section>

    <section anchor="net-layout" title="Simulated Network Layout">
      <t>
	A reference network layout has been assumed for all
	simulations. It is composed of 500 nodes randomly distributed
	within a rectangular area, excluding a void sub-area in its center, as shown in Figure 1. 
	The main area width is 20 km and the height is 10 km. 
	The void sub-area is 2 km and its height is 5 km.
	The layout is built by dropping nodes randomly in the main area.
	Once a potential node has been dropped at a random location in the main area, 
	it is retained only if it is not located in the void sub-area, 
	and if its closest neighbour among previously defined nodes, is not closer than 20 meters.
	This process continues until 500 nodes has been retained in the area.
	Then the closest node to the point of coordinates (x=2km,y=5km) is selected as the seed node.
      </t>
<t> 
<figure align="center">
<artwork align="center">
<![CDATA[
+----------------------------------------+
|                                        |
|                +-----+                 |
|                |void |   500 nodes,    |
|    o seed      |sub  |   random        |
|                |area |   locations     |
|                |     |                 |
|                +-----+                 |
|                                        |
+----------------------------------------+
]]>
</artwork>
</figure>
</t>

    </section>

    <section anchor="sim-principle" title="Simulator Principle">
      <t>
	The simulator elementary time step has been set in such a way
	that it takes 4 elementary steps for a sender to send the
	longest messages, which are supposed not to exceed 128
	bytes. The simulator doesn't address anything below this time
	step. As an example the simulator doesn't actually fill
	messages with bits.
      </t>

      <t>
	At each elementary step, the simulator spans each node in the
	network several times in order to:
	<list style='symbols'>
	  <t>
	    Check data trickle timers and control trickle timer (if
	    one exists).
	  </t>
	  <t>
	    Treat incoming messages.
	  </t>
	  <t>
	    Take care of (data or control) message transmission (start, continue or complete a message transmission).
	  </t>
	</list>
      </t>
      
    </section>

    <section title='Radio Simulation Aspects'>
      <t>
	As said above, only a fragment of a message can be transmitted
	during an elementary time step of the simulator. The term of
	fragment, as used in this document, refers to the part of a
	message which can be transmitted during an elementary
	simulator step time.
      </t>
      <t>
	The radio coverage radius if set to 100m, which means that beyond this
	distance, no fragment can be transmitted between 2
	nodes. Below this distance, there is a probability for a
	transmitted fragment to be received which depends on the
	simulated power received at the receiver.
      </t>
      <t>
	The static attenuation in dB is assumed to be equal to 50 +
	30.log10(d/50), with d in meters, which means that we
	assume 3 as the path loss exponent.  A log normal shadowing with
	3 dB as standard deviation is added as a dynamical
	attenuation. Dynamical attenuation spectrum is limited with a 3
	Hz cut off frequency.
      </t>
      <t>
	A fragment being sent may not be received (or corrupted) at
	the receiver depending on a probability which is bound to the
	received level at the receiver at the receiving time. A
	predefined table defines the probability for a fragment to be
	received depending on the received power.
      </t>
      <t>
	For a message to be transmitted between a sender and a
	receiver it is necessary that all segments involved in the
	message are received uncorrupted. Otherwise, the message is
	assumed to be lost (because of the UDP checksum mechanism, it
	is assumed that a message received corrupted is also a non
	delivered UDP message). If any segment has been lost then the
	message is lost as well.
      </t>
      <t>
	Collisions are simulated as well: if a receiver receives
	fragments from multiples neighbour nodes under its coverage,
	then a collision may occur for the received fragment. For a
	message to be delivered, it is necessary that no collision
	occurs on any fragment of this message. A collision condition
	occurs if the received power from a first neighbour is
	interfered with the received power from one or a set of other
	neighbours which a total interfering power which is equal at
	least to half the useful received power from the first
	neighbour.
      </t>

    </section>

    <section title='Simulation Conditions'>

      <t>
	When not explicitly stated, preliminary results
	are obtained with the following parameter values:
      </t>

      <texttable anchor='t1'>
        <preamble></preamble>
	<ttcol align='left'>
	  Parameter
	</ttcol>
	<ttcol align='left'>
	  Value
	</ttcol>
	<c>
	  Maximum number of messages in buffer message set
	</c>
	<c>
	  10
	</c>
        <c>
	  Seed message rate
	</c>
        <c>
	  1 per each 4 seconds period
	</c>
        <c>
	  Number of messages sent during one simulation
	</c>
        <c>
	  200
	</c>
	<c>
	  DATA_MESSAGE_IMIN
	</c>
        <c>
	  1.28 second (128 simul. steps)
	</c>
	<c>
	  DATA_MESSAGE_IMAX
	</c>
	<c>
	  10 (max interval = 21 minutes)
	</c>
	<c>
	  DATA_MESSAGE_K
	</c>
	<c>
	  1
	</c>
	<c>
	  DATA_MESSAGE_TIMER_EXPIRATIONS
	</c>
	<c>
	  No expiration
	</c>
	<c>
	  CONTROL_MESSAGE_IMIN
	</c>
	<c>
	  128
	</c>
	<c>
	  CONTROL_MESSAGE_IMAX
	</c>
	<c>
	  10
	</c>
	<c>
	  CONTROL_MESSAGE_K
	</c>
	<c>
	  1
	</c>
	<c>
	  Transmission power 
	</c>
	<c>
	  5 mW
	</c>	
        <postamble>
	  Default values assumed for simulation
	</postamble>
      </texttable>

      <t>
	This set of default values should not be seen as a proposed
	configuration which would be optimum in some sense. It is just
	meant as a reference point to explore configuration space. A
	future contribution may propose a more optimized reference
	configuration, once systematic simulations will have been run.
      </t>
      
    </section>

    <section title='Types of Results'>
      <t>
	The following performance indicators are exploited:
      </t>

    <texttable anchor='table_example'>
        <preamble></preamble>
	<ttcol align='left'>
	  Indicator
	</ttcol>
	<ttcol align='left'>
	  Explanation
	</ttcol>	
	<c>
	  Proactive, or reactive date loss ratio
	</c>
	<c>
	  Data message loss ratio observed in each node after simulation,
	  and averaged across all nodes in the network.
	</c>
        <c>
	  Proactive, or reactive data expansion	  
	</c>
        <c>
	  Total number of data messages transmitted from any node
	  during simulation, divided by the number of nodes in the
	  network, and divided again by the number of data messages sent
	  from the seed.
	</c>
        <c>
	  Reactive control expansion
	</c>
        <c>
	  Total number of control messages transmitted from any node
	  during simulation, divided by the number of nodes in the
	  network, and divided again by the number of data messages sent
	  from the seed.
	</c>
	<c>
	  Reactive expansion
	</c>
        <c>
	  Sum of the reactive data expansion plus the reactive control
	  expansion
	</c>
        <postamble>
	  Performance indicators
	</postamble>
    </texttable>

    <t>
      With respect to expansion figures, there is no claim about any
      generic properties for the results which are presented in this
      document. Given the present definitions, it is expected that the
      denser is the network (in terms of average number of neighbours
      per node) the lower expansions rates will be. 
	  Therefore expansion rates are not only depending on the
      routing algorithmic aspects, they also depend on the network
      layout. Their interest in the context of this document is
      to compare different configuration settings, rather than to obtain generic performance indicators.
    </t>

    <section title='Preliminary Results with Respect to Achievable Data Rate'>

      <texttable anchor='t3'>
        <preamble></preamble>
	<ttcol align='left'>
	  Data message generation period at the seed
	</ttcol>
	<ttcol align='left'>
	  0.5s
	</ttcol>
	<ttcol align='left'>
	  1s
	</ttcol>
	<ttcol align='left'>
	  2s
	</ttcol>
	<ttcol align='left'>
	  4s
	</ttcol>	

	<c>
	  Proactive data loss ratio
	</c>
	<c>
	  0.38
	</c>
        <c>
	  0.15
	</c>
        <c>
	  0.03
	</c>
        <c>
	  0
	</c>

	<c>
	  Proactive data expansion
	</c>
	<c>
	  0.37
	</c>
        <c>
	  0.85
	</c>
        <c>
	  1.37
	</c>
        <c>
	  1.79
	</c>

	<c>
	  Reactive data loss ratio
	</c>
	<c>
	  0.38
	</c>
        <c>
	  0.2
	</c>
        <c>
	  0.02
	</c>
        <c>
	  0
	</c>

	<c>
	  Reactive data expansion
	</c>
	<c>
	  0.36
	</c>
        <c>
	  0.91
	</c>
        <c>
	  1.58
	</c>
        <c>
	  1.93
	</c>

	<c>
	  Reactive control expansion
	</c>
	<c>
	  0.1
	</c>
        <c>
	  0.22
	</c>
        <c>
	  0.44
	</c>
        <c>
	  0.72
	</c>

	<c>
	  Reactive total expansion
	</c>
	<c>
	  0.46
	</c>
        <c>
	  1.13
	</c>
        <c>
	  2.02
	</c>
        <c>
	  2.65
	</c>


	<postamble>
	  Preliminary results with respect to achievable data rates
	</postamble>
      </texttable>
      
      <t>
	Table 3 provides results for several message rates at the
	seed. It can be seen that a saturation phenomenon is observed
	(introducing significant message loss ratios) when the message
	rate is too high. Of course, this result is strongly related to
	the DATA_MESSAGE_IMIN and CONTROL_MESSAGE_IMIN parameters,
	which have both been set in this case to 1.28 s.
      </t>

      <t>
	The other observation seems to be that the reactive mode
	introduces more transmissions in the network (higher
	total expansion), with no real benefit in terms of achievable
	message rate given the constraints of negligible message loss
	ratios.
      </t>
    </section>

    <section title='Preliminary results with respect to
		    the influence of redundancy constants'>

      <texttable anchor='t4'>
        <preamble></preamble>
	<ttcol align='left'>
	  DATA_MESSAGE_K
	</ttcol>
	<ttcol align='left'>
	  1
	</ttcol>
	<ttcol align='left'>
	  2
	</ttcol>
	<ttcol align='left'>
	  4
	</ttcol>
	<c>
	  Proactive data expansion
	</c>
	<c>
	  1.79
	</c>
        <c>
	  2.95
	</c>
        <c>
	  4.4
	</c>

	<postamble>
	  Data expansion in proactive mode, versus redundancy constant
	</postamble>
      </texttable>

      <texttable anchor='t5'>
        <preamble></preamble>
	<ttcol align='left'>
	  DATA_MESSAGE_K
	</ttcol>
	<ttcol align='left'>
	  1
	</ttcol>
	<ttcol align='left'>
	  2
	</ttcol>
	<ttcol align='left'>
	  4
	</ttcol>
	
	
	<c>
	  Reactive data expansion
	</c>
	<c>
	  1.93
	</c>
	<c>
	  2.88
	</c>
	<c>
	  4.18
	</c>
	
	<c>
	  Reactive control expansion
	</c>
	<c>
	  0.72
	</c>
	<c>
	  0.7
	</c>
	<c>
	  0.72
	</c>
	
	<c>
	  Reactive total expansion
	</c>
	<c>
	  2.65
	</c>
	<c>
	  3.58
	</c>
	<c>
	  4.9
	</c>
	
	<postamble>
	  Data and control expansion in reactive mode, versus redundancy constants
	</postamble>
      </texttable>

      <t>
	Table 4 shows the effect of redundancy constant of trickle
	timers on data expansion, in case of proactive mode. The other
	configuration parameters are set as described in the
	simulation conditions section. In particular, the message rate
	is 1 message for 4s, so that there are not message losses in
	any simulation. With no surprise, it can be observed that the
	redundancy constant has a strong influence on expansion ratio.
      </t>

      <t>
	Table 5 shows the same result with respect to proactive
	mode. 
	It shows that expansion figures are higher when reactive mode is used, as compared to proactive mode.
	The influence of introducing vlues that are different of 1 for CONTROL_MESSAGE_K will be studied later.
      </t>
      
    </section>

    <section title='Preliminary results with respect
		    to the influence of transmit poser'>

      <texttable anchor='t6'>
        <preamble></preamble>
	<ttcol align='left'>
	  Tx power (mW)
	</ttcol>
	<ttcol align='left'>
	  1
	</ttcol>
	<ttcol align='left'>
	  2
	</ttcol>
	<ttcol align='left'>
	  3
	</ttcol>
	<ttcol align='left'>
	  4
	</ttcol>
	<ttcol align='left'>
	  5
	</ttcol>

	<c>
	  Proactive data loss ratio
	</c>
	<c>
	  0.56
	</c>
	<c>
	  0.14
	</c>
	<c>
	  0.03
	</c>
	<c>
	  0.01
	</c>
	<c>
	  0
	</c>
	
	<c>
	  Proactive data expansion
	</c>
	<c>
	  0.8
	</c>
	<c>
	  1.85
	</c>
	<c>
	  1.95
	</c>
	<c>
	  1.88
	</c>
	<c>
	  1.8
	</c>
	
	<c>
	  Reactive data loss ratio
	</c>
	<c>
	  0.4
	</c>
	<c>
	  0.07
	</c>
	<c>
	  0.01
	</c>
	<c>
	  0
	</c>
	<c>
	  0
	</c>
	
	<c>
	  Reactive data expansion
	</c>
	<c>
	  1.61
	</c>
	<c>
	  2.55
	</c>
	<c>
	  2.29
	</c>
	<c>
	  2.07
	</c>
	<c>
	  1.92
	</c>
	
	<c>
	  Reactive control expansion
	</c>
	<c>
	  0.68
	</c>
	<c>
	  0.88
	</c>
	<c>
	  0.81
	</c>
	<c>
	  0.76
	</c>
	<c>
	  0.72
	</c>
	
	<c>
	  Reactive total expansion
	</c>
	<c>
	  2.29
	</c>
	<c>
	  3.43
	</c>
	<c>
	  3.1
	</c>
	<c>
	  2.83
	</c>
	<c>
	  2.64
	</c>
	
	<postamble>
	  Results versus transmit power
	</postamble>
      </texttable>

      <t>
	Table 6 shows the effect of varying the transmit power.	
      </t>

      <t>
	It shows the interest of using reactive mode has it is
	able to achieve lower message loss ratios in harsh radio
	environments. Of course this result is obtained at the cost of
	higher expansion rates.
      </t>
      
    </section>
    
    </section>
    
    <section anchor="Security" title="Security Considerations">
      <t>
      </t>
    </section>    

    <section anchor="IANA" title="IANA Considerations">
      <t>
      </t>
    </section>

    <section anchor="Acknowledgements"
	     title="Acknowledgements">
      <t>
	  This work has been supported by the A2NETS project (Autonomic Services in M2M Networks) which is funded by the ITEA 2 program. 
      </t>
    </section>
    

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>

    <references title="Normative References">
      <?rfc
	include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119"
      ?>
      <?rfc
	include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6550"
      ?>      
      <?rfc
	include="http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-roll-trickle-mcast"
	 ?>      
    </references>

    <!-- <references title="Informative References"> -->
    <!--   <?rfc -->
    <!-- 	include="http://xml.resource.org/public/rfc/bibxml3/reference.I-D.baccelli-multi-hop-wireless-communication" -->
    <!--   ?> -->
    <!-- </references> -->


    <section anchor='changelog'
	     title='ChangeLog'>
      <t>
	The changes are listed in reverse chronological order, most
	recent changes appearing at the top of the list.
      </t>

      <t>
	From draft-roux-roll-mpl-eval-00.txt to
	draft-authors-ipv6-over-80211p-00.txt:
	<list style='symbols'>
	  <t>
	    first version.
	  </t>
	</list>	
      </t>      

    </section>

  </back>

</rfc>
