<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced.
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM
	"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM
	"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM
	"http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">

]>
<?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.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std"
docName="draft-satish-roll-aodv-rpl-00" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
 http://umeeting.huawei.com/Portal/business.action?BMECID=1474233&BMETimestamp=1426658395147
	        ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN"
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

<front>
    <!-- The abbreviated title is used in the page header - it is only
         necessary if the full title is longer than 39 characters -->

    <title abbrev="draft-satish-ROLL-AODV-RPL">
    Asymmetric AODV-P2P-RPL in Low-Power and Lossy Networks (LLNs)</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Satish Anamalamudi" initials="S." surname="Anamalamudi">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>No. 156 Beiqing Rd. Haidian District</street>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <region/>
          <code>100095</code>
          <country>China</country>
        </postal>
        <phone/>
        <email>satish.anamalamudi@huawei.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Mingui Zhang" initials="M." surname="Zhang">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>No. 156 Beiqing Rd. Haidian District</street>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <region/>
          <code>100095</code>
          <country>China</country>
        </postal>
        <phone/>
        <email>zhangmingui@huawei.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>


    <author fullname="Charles E. Perkins" initials="C.E." surname="Perkins">
      <organization>Futurewei</organization>
      <address>
        <postal>
          <street>2330 Central Expressway</street>
          <!-- Reorder these if your country does things differently -->
          <city>Santa Clara</city>
          <region/>
          <code>95050</code>
          <country>Unites States</country>
        </postal>
        <phone/>
        <email>charliep@computer.org</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
      <author fullname="S.V.R Anand" initials="" surname="S.V.R.Anand">
      <organization>Indian Institute of Science</organization>
      <address>
        <postal>
          <street></street>
          <!-- Reorder these if your country does things differently -->
          <city>Bangalore</city>
          <region/>
          <code>560012</code>
          <country>India</country>
        </postal>
        <phone/>
        <email>anand@ece.iisc.ernet.in</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
      <author fullname="Dongxin Liu" initials="D" surname="Liu">
      <organization>China Telcom Co., Ltd</organization>
      <address>
        <postal>
          <street>109 West Zhongshan Ave, Tianhe District</street>
          <!-- Reorder these if your country does things differently -->
          <city>Guangzhou</city>
          <region/>
          <code>510630</code>
          <country>China</country>
        </postal>
        <phone/>
        <email>liudx@gsta.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
    <date year="2016"/>

    <!-- If the month and year are both specified and are the current ones,
         xml2rfc will fill in the current day for you. If only the current
         year is specified, xml2rfc will fill in the current day and month for
         you. If the year is not the current one, it is necessary to specify
         at least a month (xml2rfc assumes day="1" if not specified for the
	 purpose of calculating the expiry date).  With drafts it is normally
	 sufficient to specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>Internet</area>

    <workgroup>ROLL</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>P2P-RPL, AODV</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>	Route discovery for symmetric and asymmetric Point-to-Point (P2P)
        traffic flows is desired in Low power and Lossy Networks (LLNs).
        For that purpose, this document specifies a reactive P2P route discovery
        mechanism for hop-by-hop routing (storing mode) based on Ad Hoc
        On-demand Distance Vector Routing (AODV) based RPL protocol. Two
        separate Instances are used to construct directional paths in case some
	of the links between source and target node are asymmetric.
    </t>
    </abstract>
</front>

<middle>
  <section title="Introduction">
   <t>
	RPL<xref target="RFC6550"/>, the IPv6 distance vector routing protocol
	for Low-power and Lossy Networks (LLNs), is designed to support
	multiple traffic flows through a root-based Destination-Oriented
	Directed Acyclic Graph (DODAG).  For traffic flows between routers
	within the DODAG (i.e., Point-to-Point (P2P)), this means that data
	packets either have to traverse the
	root in non-storing mode (source routing), or traverse a common
	ancestor in storing mode (hop-by-hop routing).  Such P2P traffic
	is thereby likely to flow along sub-optimal routes and
	may suffer severe traffic congestion near the DAG root
	<xref target="RFC6997"/>, <xref target="RFC6998"/>.
   </t>

   <t>
	To discover optimal paths for P2P traffic flows in RPL, P2P-RPL
	<xref target="RFC6997"/> specifies a temporary DODAG where the
	source acts as temporary root.  The source initiates "P2P Route
	Discovery mode (P2P-RDO)" with an address vector for both non-storing
	mode (H=0) and storing mode (H=1).  Subsequently, each intermediate
	router adds its IP address and multicasts the P2P-RDO message,
	until the message reaches the target node (TargNode).  TargNode sends
	the "Discovery Reply" option.  P2P-RPL is efficient for source routing,
	but much less efficient for hop-by-hop routing due to the extra address
	vector overhead. In fact, when the P2P-RDO message is being
	multicast from the source hop-by-hop, receiving nodes are able to
	determine a next hop towards the source in symmetric links.
	When TargNode subsequently replies to the source along the
	established forward route, receiving nodes can determine the
	next hop towards TargNode.  In other words, it is efficient
	to use only routing tables for P2P-RDO message instead of "Address
	vector" for hop-by-hop routes (H=1) in symmetric links.
    </t>

    <t>
	RPL and P2P-RPL both specify the use of a single DODAG in networks of
	symmetric links.  But, application-specific routing requirements that
	are defined in IETF ROLL Working Group <xref target="RFC5548"/>,
	<xref target="RFC5673"/>, <xref target="RFC5826"/> and
	<xref target="RFC5867"/> may need routing metrics and constraints
	related to asymmetric bidirectional links.  For this purpose,
	<xref target="I-D.thubert-roll-asymlink"/> describes bidirectional
	asymmetric links for RPL <xref target="RFC6550"/> with Paired DODAGs,
	for which the DAG root (DODAGID) is common for two Instances.  This
	can satisfy application-specific routing requirements for bidirectional
	asymmetric links in base RPL <xref target="RFC6550"/>.
	P2P-RPL for Paired DODAGs, on the other hand, requires two DAG roots:
	one for the source and another for the target node due to
	temporary DODAG formation. For networks composed of bidirectional
	asymmetric links (see <xref target="channel"/>), AODV-RPL specifies
	P2P route discovery, utilizing RPL with a new MoP.  AODV-RPL makes use
	of two multicast messages to discover possibly asymmetric routes.
	AODV-RPL eliminates the need for address vector control overhead,
	significantly reducing the control packet size which is important for
	Constrained LLN networks.  Both discovered routes meet the application
	specific metrics and constraints that are defined in the
        Objective Function for each Instance <xref target="RFC6552"/>.
    </t>
  </section>	<!-- End of section "Introduction" -->

  <section anchor="acronyms_terms" title="Terminology">

  <t> 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 <xref target="RFC2119"/>.

     Additionally, this document uses the following terms:</t>

      <t><list style="hanging">

        <t hangText="AODV"><vspace />
        	Ad Hoc On-demand Distance Vector
        				Routing<xref target="RFC3561"/>.</t>
        <t hangText="AODV-Instance"><vspace />
        	Either the RREQ-Instance or RREP-Instance</t>
	<t hangText="Bi-directional Asymmetric Link"><vspace />
		A link that can be used in both directions but with different
		link characteristics (see
		<xref target="I-D.thubert-roll-asymlink"/>). </t>
	<t hangText="DODAG RREQ-Instance (or simply RREQ-Instance)"><vspace />
		AODV Instance built using the RREQ option; used for control
		transmission from OrigNode to TargNode, thus enabling data
		transmission from TargNode to OrigNode.</t>
	<t hangText="DODAG RREP-Instance (or simply RREP-Instance)"><vspace />
		AODV Instance built using the RREP option; used for control
		transmission from TargNode to OrigNode thus enabling data
		transmission from OrigNode to TargNode.</t>
        <t hangText="downstream"><vspace />
        	Routing along the direction from OrigNode to TargNode.</t>
	<t hangText="hop-by-hop routing"><vspace />
		Routing when each node stores routing information
		about the next hop.</t>
        <t hangText="OrigNode"><vspace />
        	The IPv6 router (Originating Node) initiating the AODV-RPL
        	route discovery to obtain a route to TargNode.</t>
	<t hangText="Paired DODAGs"><vspace />
		Two DODAGs for a single application.</t>
	<t hangText="P2P"><vspace />
		Point-to-Point -- in other words, not constrained to
		traverse the global DODAG root.</t>
	<t hangText="RREP message"><vspace />
		An AODV-RPL MoP DIO message containing the RREP option</t>
	<t hangText="RREQ message"><vspace />
		An AODV-RPL MoP DIO message containing the RREQ option</t>
	<t hangText="source routing"><vspace />
		The mechanism by which the source supplies the complete route
		towards the target node along with each data packet
	 	<xref target="RFC6997"/>.</t>
	<t hangText="TargNode"><vspace />
		The IPv6 router (Target Node) for which OrigNode requires a
		route and initiates Route Discovery within the LLN network.</t>
        <t hangText="upstream"><vspace />
        	Routing along the direction from TargNode to OrigNode.</t>
	</list></t>
  </section>	<!-- End of section "Terminology" -->

<section title="Overview of AODV-RPL">
    <t>	With AODV-RPL, routes from OrigNode to TargNode within the LLN
	network established are "on-demand".  In other words, the route
	discovery mechanism in AODV-RPL is invoked reactively when OrigNode
	has data for delivery to the TargNode but existing routes do not
	satisfy the application's requirements.  The routes discovered by
	AODV-RPL are point-to-point; in other words the routes are not
	constrained to traverse a global DAG.  Unlike base RPL
	<xref target="RFC6550"/> and P2P-RPL <xref target="RFC6997"/>,
	AODV-RPL can enable asymmetric communication paths in networks with
	bidirectional asymmetric links. For this purpose, AODV-RPL enables
	discovery of two routes: namely, one from OrigNode to TargNode, and
	another from TargNode to OrigNode.  When possible, AODV-RPL also
	enables symmetric routing along Paired
	DODAGs (see <xref target="channel"/>).
    </t>
</section>	<!-- End of section "Overview of AODV-RPL" -->

<section anchor="channel" title="AODV-RPL Mode of Operation (MoP)">
  <t>
	In AODV-RPL, route discovery is initiated by forming a temporary DAG
	rooted at the OrigNode. Paired DODAGs (Instances) are constructed
	according to a new AODV-RPL Mode of Operation (MoP)
	<!-- CEP: would it be possible to do this without a new MoP? -->
	during route formation between the OrigNode and TargNode.
	The RREQ-Instance is formed by route control messages from OrigNode to
	TargNode whereas the RREP-Instance is formed by route control
	messages from TargNode to OrigNode (as shown in
	<xref target="figPaired-a"/>).  Intermediate routers
	join the Paired DODAGs based on the rank as calculated from the DIO
	message. Henceforth in this document, the RREQ-Instance
	message means the AODV-RPL DIO message from OrigNode to TargNode,
	containing the RREQ option.  Similarly, the RREP-Instance
	means the AODV-RPL DIO message from TargNode to OrigNode,
	containing the RREP option.  Subsequently, the RREQ-Instance is used
	for data transmission from TargNode to OrigNode and RREP-Instance is
	used for Data transmission from OrigNode to TargNode.
    </t>

    <t>
	The AODV-RPL Mode of Operation defines a new bit, the Symmetric bit
	('S'), which is added to the base DIO message as illustrated in
	<!-- CEP: rename to be the 'Symmetric' bit ??  -->
	<xref target="figDIO"/>.  OrigNode sets the the 'S' bit to 1 in the
	RREQ-Instance message when initiating route discovery.
	<figure anchor="figDIO"
		title="DIO modification to support asymmetric route discovery">
	<artwork><![CDATA[
    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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | RPLInstanceID |Version Number |             Rank              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |G|0| MOP | Prf |     DTSN      |S|    Flags    |   Reserved    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                                                               +
    |                                                               |
    +                            DODAGID                            +
    |                                                               |
    +                                                               +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Option(s)...                                    ]]></artwork>
	</figure></t>

  <t>
	A device originating a AODV-RPL message supplies the following
	information in the DIO header of the message: </t>

	<t><list style="hanging">

	<t hangText="'S' bit"><vspace/></t>
		<t> Symmetric bit in the DIO base object
		</t>

        <t hangText="MOP"><vspace /></t>
		<t> MOP operation in the DIO object MUST be set to "5(TBD1)"
		    for AODV-RPL DIO messages
		</t>

	<t hangText="RPLInstanceID"><vspace /></t>
		<t> RPLInstanceID in the DIO object MUST be the InstanceID of
		    AODV-Instance.
		</t>

	<t hangText="DODAGID"><vspace /></t>
		<t> DODAGID in the DIO object MUST be the IPv6 address of the
		    device that initiates the AODV-Instance.
		</t>
	<!-- CEP: Isn't compression allowed? -->

	<t hangText="Rank"><vspace /></t>
		<t> Rank in the DIO object MUST be the the rank of
		    the AODV-Instance
		</t>

	<t hangText="Metric Container Options"><vspace /></t>
		<t> AODV-Instance messages MAY carry one or more Metric
		    Container options to indicate the relevant routing metrics
		</t>
	</list>

	The 'S' bit is set to mean that the route is symmetric. If the
	RREQ-Instance arrives over an interface that is known to be symmetric,
	and the 'S' bit is set to 1, then it remains set at 1,
	as illustrated in <xref target="figPaired-a"/>.

  <figure anchor="figPaired-a" title="AODV-RPL with Symmetric Paired Instances">
  <artwork><![CDATA[ In this figure:
        S := OrigNode;  R := Intermediate nodes;  D := TargNode

             R---------R---------R---------R
             |<--S=1-->|<--S=1-->|<--S=1-->|
             |         |         |         |
         <--S=1-->     |         |     <--S=1-->
             |         |         |         |
             |         |         |         |
   S---------R---------R---------R---------R---------R---------D
    <--S=1-->|         |         |         |<--S=1-->|<--S=1-->|
             |         |         |         |         |         |
             |         |         |         |         |         |
             R---------R---------R---------R---------R---------R

     >---- RREQ-Instance (Control: S-->D;  Data: D-->S) ------->
     <---- RREP-Instance (Control: D-->S;  Data: S-->D) -------< ]]></artwork>
  </figure>

	If the RREQ-Instance arrives over an interface that is not known to be
	symmetric, or is known to be asymmetric, the 'S' bit is set to be 0.
	Moreover, if the 'S' bit arrives already set to be '0', it is set to
	be '0' on retransmission (<xref target="figPaired-b"/>).  Based
	on the 'S' bit received in RREQ-Instance, the TargNode decides
	whether or not the route is symmetric before transmitting the
	RREP-Instance message upstream towards the OrigNode.

  <figure anchor="figPaired-b"
  	title="AODV-RPL with Asymmetric Paired Instances">
  <artwork><![CDATA[
            R---------R--------R--------R
            | --S=1-->|--S=1-->|--S=0-->|
            |         |        |        |
         --S=1-->     |        |     --S=0-->
            |         |        |        |
    --S=1-->|         |        |        |
   S--------R---------R--------R--------R--------R---------D
    <--S=0--|         |        |        |--S=0-->| --S=0-->|
            |         |        |        |        |         |
        <--S=0--      |        |        |        |     <--S=0-- 
            |         |        |        |        |         |
            | <--S=0--|<--S=0--|<--S=0--|<--S=0--|<--S=0-- |
            R---------R--------R--------R--------R---------R

     >---- RREQ-Instance (Control: S-->D;  Data: D-->S) ------->
     <---- RREP-Instance (Control: D-->S;  Data: S-->D) -------< ]]></artwork>
  </figure>
  </t>
</section>	<!-- End of section "AODV-RPL Mode of Operation" -->

<section anchor="RREQmsg" title="RREQ Message">

    <t>
  <figure anchor="figRREQ" title="DIO RREQ option format for AODV-RPL MoP">
  <artwork><![CDATA[
    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      |      Orig SeqNo       |      Dest SeqNo       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                     TargNode IPv6 Address                     |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
  </figure>
    OrigNode supplies the following information in
    the RREQ option of the RREQ-Instance message: </t>

    <t><list style="hanging">

    <t hangText="Type"><vspace /></t>
	<t>The type of the RREQ option (see <xref target="Option"/>)</t>
    <t hangText="Orig SeqNo"><vspace /></t>
	<t> Sequence Number of OrigNode.</t>
    <t hangText="Dest SeqNo"><vspace /></t>
	<t> If nonzero, the last known Sequence Number for TargNode
	    for which a route is desired.</t>
    <t hangText="TargNode IPv6 Address"><vspace /></t>
	<t> IPv6 address of the TargNode that receives
	    RREQ-Instance message. This address MUST be in the
	    RREQ option (see <xref target="figRREQ"/>) of AODV-RPL.</t>
	<!-- CEP: Compression should be allowed here also. -->
    </list>
	In order to establish the upstream route from TargNode to OrigNode,
	OrigNode multicasts the RREQ-Instance message (see
	<xref target="figRREQ"/>) to its one-hop neighbours.  Each intermediate
	node R_i computes the rank for RREQ-Instance and creates a routing
	table entry for the upstream route towards the source if the routing
	metrics/constraints are satisfied.  For this purpose R_i must use the
	asymmetric link metric measured in the upstream direction, from R_i to
	its upstream neighbor that multicasted the RREP-Instance message.
    </t>

    <t>
	If the path towards TargNode is not known, the intermediate node
	multicasts the RREQ-Instance message with updated rank to its
	next-hop neighbors until the message reaches to TargNode
	(<xref target="figPaired-a"/>).  Based on the 'S' bit in the received
	RREQ message, the TargNode will decide whether to unicast or
	multicast the RREP message back to OrigNode.
    </t>

    <t>
	As described in <xref target="GRREP"/>, in certain circumstances
	R_i MAY unicast a Gratuitous
	RREP towards OrigNode, thereby helping to minimize
	multicast overhead during the Route Discovery process.
    </t>
</section>	<!-- End of section "RREQ Message" -->

<section anchor="RREPmsg" title="RREP Message">
    <t> The TargNode supplies the following information in the RREP message:

  <figure anchor="figRREP" title="DIO RREP option format for AODV-RPL MoP">
  <artwork><![CDATA[
   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      |      Dest SeqNo       |Prefix Sz|G| Reserved  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
  </figure>
  <list style="hanging">

    <t hangText="Type"><vspace /></t>
		<t>The type of the RREP option (see <xref target="Option"/>)</t>
    <t hangText="Dest SeqNo"><vspace /></t>
	<t> The Sequence Number for the TargNode for which a route is
	    established.</t>
    <t hangText="Prefix Sz"><vspace /></t>
	<t> The size of the prefix which the route to the TargNode is
	    available.  This allows routing to other nodes on the same
	    subnet as the TargNode.</t>
    <t hangText="'G' bit"><vspace /></t>
		<t>(see <xref target="GRREP"/>)</t>
	</list>

	The OrigNode IP address is available as the DODAGID in the DIO base
	message (see <xref target="figDIO"/>).  When TargNode receives a
	RREQ message with the 'S' bit set to 1 (as illustrated in
	<xref target="figPaired-a"/>), it unicasts the RREP message with the
	'S' bit set to 1. In this case, route control messages
	and application data between OrigNode and TargNode for both
        RREQ-Instance and RREP-Instance are transmitted along symmetric links.
    </t>

    <t>	When (as illustrated in <xref target="figPaired-b"/>) the TargNode
	receives RREQ message with the 'S' bit set to 0, it also multicasts
        the RREP message with the 'S' bit set to 0. Intermediate
        nodes create a routing table entry for the path towards the TargNode
        while processing the RREP message to OrigNode.  Once OrigNode receives
	the RREP message, it starts transmitting application data to TargNode
	along the path as discovered through RREP messages. Similarly,
	application data from TargNode to OrigNode is transmitted through
	the path that is discovered from RREQ message.
    </t>

</section>	<!-- End of section "RREP Message" -->

<section anchor="GRREP" title="Gratuitous RREP">
    <t>
	Under some circumstances, an Intermediate Node that receives a RREQ
	message MAY transmit a "Gratuitous" RREP message back to OrigNode
	instead of continuing to multicast the RREQ message towards TargNode.
	For these circumstances, the 'G' bit of the RREP option is provided
	to distinguish the Gratuitous RREP sent by the Intermediate node
	from the RREP sent by TargNode.
    </t>
    <t>	
	When an Intermediate node R receives a RREQ message and has recent
	information about the cost of an upstream route from TargNode to R,
	then R MAY unicast the Gratuitous RREP (GRREP) message to OrigNode.
	R determines whether its information is sufficiently recent by
	comparing the value it has stored for the Sequence Number
	of TargNode against the DestSeqno in the incoming RREQ message.
	R also must have information about the metric information of the
	upstream route from TargNode.
	The GRREP message MUST have PrefixSz == 0 and the 'G' bit set to 1.
	R SHOULD also unicast the RREQ message to TargNode, to make sure that
	TargNode will have a route to OrigNode.
    </t>
</section>	<!-- End of section "Gratuitous RREP" -->

<section anchor="Resource1" title="Operation of Trickle Timer">

    <t> The trickle timer operation to control RREQ-Instance/RREP-Instance
	multicast is similar to that in P2P-RPL <xref target="RFC6997"/>.
    </t>
</section>	<!-- End of section "Operation of Trickle Timer" -->

<section anchor="IANA1" title="IANA Considerations">
  <section anchor="AODV-MoP" title="New Mode of Operation: AODV-RPL">
    <t>	IANA is required to assign a new Mode of Operation, named "AODV-RPL"
	for Point-to-Point(P2P) hop-by-hop routing under the RPL registry.
	The value of TBD1 is assigned from the "Mode of Operation" space
	<xref target="RFC6550"/>.
    <figure anchor="figMoP" title="Mode of Operation"><artwork><![CDATA[
         +-------------+---------------+---------------+
         |    Value    |  Description  |   Reference   |
         +-------------+---------------+---------------+
         |   TBD1 (5)  |   AODV-RPL    | This document |
         +-------------+---------------+---------------+
    ]]></artwork></figure></t>
  </section>	<!-- End of section "New Mode of Operation: AODV-RPL" -->

  <section anchor="Option" title="AODV-RPL Options: RREQ and RREP">
  <t>
	Two entries are required for new AODV-RPL options
	"RREQ-Instance" and "RREQ-Instance", with
	values of TBD2 (0x0a) and TBD3 (0x0b) from the "RPL Control Message
	Options" space <xref target="RFC6550"/>.
        <figure anchor="figCtlMsg" title="AODV-RPL Options">
        <artwork><![CDATA[
          +-------------+---------------------+---------------+
          |     Value   |       Meaning       |   Reference   |
          +-------------+---------------------+---------------+
          |  TBD2(0x0a) |     RREQ Option     | This document |
          +-------------+---------------------+---------------+
          |  TBD3(0x0b) |     RREP Option     | This document |
          +-------------+---------------------+---------------+
        ]]></artwork> </figure></t>
  </section>	<!-- End of section "AODV-RPL Options: RREQ and RREP" -->
</section>	<!-- End of section "IANA Considerations" -->

<section anchor="Security" title="Security Considerations">
  <t>	This document does not introduce additional security issues compared
	to base RPL. For general RPL security considerations,
	see <xref target="RFC6550"/>.</t>
     	<!-- Need to consider security implications of G-RREP -->
</section>	<!-- End of section "Security Considerations" -->
</middle>

<back>		<!--  *****BACK MATTER ***** -->
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation
         libraries:
         1. define an ENTITY at the top, and use "ampersand character" RFC2629;
            here (as shown)
         2. simply use a PI "less than character"?rfc
            include="reference.RFC.2119.xml"?> here
            (for I-Ds:
             include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included
     files in the same directory as the including file. You can also define
     the XML_LIBRARY environment variable with a value containing a set of
     directories to search.  These can be either in the local filing system
     or remote ones accessed by http (http://domain/dir/... ).-->

<references title="Normative References">
	<?rfc include='reference.RFC.2119'?>
	<?rfc include='reference.RFC.3561'?>
	<?rfc include='reference.RFC.5548'?>
	<?rfc include='reference.RFC.5673'?>
	<?rfc include='reference.RFC.5826'?>
	<?rfc include='reference.RFC.5867'?>
	<?rfc include='reference.RFC.6550'?>
	<?rfc include='reference.RFC.6552'?>
	<?rfc include='reference.RFC.6997'?>
	<?rfc include='reference.RFC.6998'?>
</references>

<references title="Informative References">
	<?rfc include="reference.I-D.thubert-roll-asymlink" ?>
</references>

</back>
</rfc>

<!--
     Discussion about Gratuitous RREP.

	There are two routes being discovered, not just one.  So we have to
	decide which route is served by the G-RREP.

	Since the route OrigNode - - -> TargNode is established only
	after the control messages have already reached the TargNode,
	it won't help very much to have any control message optimization
	for the RREP-Instance.  So, the G-RREP should only be used for the
	RREQ-Instance.

	When an intermediate node receives the RREQ message it might indeed
	have a route to the TargNode.  But, the RREQ message is being used
	to establish a route from TargNode - -> OrigNode.
	For the Intermediate Node to send Gratuitous RREP to the OrigNode would
	only make sense if the Intermediate Node knows that the TargNode
	has a route to the Intermediate Node, along with the metric for that
	route.  Since the RREQ message is not being used to establish a
	route from OrigNode - - -> TargNode it does not help if the
	Intermediate Node has a route to the TargNode.
	We should discuss if we want to make the the assumption:
		if A has a route to B, the A knows that B has a route to A.
	Even so, this does not enable G-RREP unless the Intermediate Node A can
	determine the metric for the route from the TargNode Node B to A.
	If A can indeed know the backwards metric, then we have to say how.
  -->

<!--
	More discussion about Gratuitous RREP...

	When the intermediate node R gets a multicast RREQ, then:
	- if R has a route TO the TargNode, then it MAY offer the route
	  to OrigNode.  In this case, R _SHOULD_ also inform TargNode about
	  the route to OrigNode because TargNode may not have a route to
	  OrigNode.
	- if R has a route TO the OrigNode, should it MAY offer the route
	  to TargNode?  BUT: R *always* has a route to OrigNode...?
	  (a) forget about this case.  (b) specify something about whether
	  R has an *improved* route.
	
  -->

<!--
     Things to do:
     - Organize into sections for:
     	- Modified DIO message
	- RREQ option
	- RREP option
	- - - -
     - Explain that the IP address has to be an IPv6 address.
     - Explain 12-bit sequence numbers
     - Organize G-RREP into symmetric and asymmetric cases.
     - Make sure it's O.K. to have a single AODV MoP
     - Make sure it's O.K. to have two "subtypes" of the AODV-instance
     - Address compression between the DODAGID and OrigNode or Dest IP address?
     - Should we have two sections for the DIO message (seems wasteful!)
       -> once for DIO transmitted by OrigNode
       -> once for DIO transmitted by TargNode
     -->

