<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
  ]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<rfc category="std" ipr="trust200902" docName="draft-ietf-manet-dlep-pause-extension-00" >

<front>
<title abbrev="DLEP Pause Extension">DLEP Control Plane Based Pause
Extension</title> 
   <author initials='B.' surname="Cheng" fullname='Bow-Nan Cheng'>
    <organization>Lincoln Laboratory</organization>
    <address>
      <postal>
        <street>Massachusetts Institute of Technology</street>
        <street>244 Wood Street</street>
        <city>Lexington</city>
        <region>MA</region>
        <code>02420-9108</code>
      </postal>
       <email>bcheng@ll.mit.edu</email>
    </address>
    </author>
   <author initials='D.' surname="Wiggins" fullname='David Wiggins'>
    <organization>Lincoln Laboratory</organization>
    <address>
      <postal>
        <street>Massachusetts Institute of Technology</street>
        <street>244 Wood Street</street>
        <city>Lexington</city>
        <region>MA</region>
        <code>02420-9108</code>
      </postal>
       <email>David.Wiggins@ll.mit.edu</email>
    </address>
    </author>
   <author initials='L.' surname="Berger" fullname='Lou Berger' role='editor'>
    <organization>LabN Consulting, L.L.C.</organization>
    <address>
       <email>lberger@labn.net</email>
    </address>
    </author>

  <date/>
  <abstract>
<t>
  This document defines an extension to the DLEP protocol that enables
  a simple control plane based flow control mechanism.
</t>
</abstract>
</front>

<middle>
<section anchor="sec-1" title="Introduction">
<t>
  The Dynamic Link Event Protocol (DLEP) is defined in <xref
  target="I-D.ietf-manet-dlep"/>. It provides the exchange of link
  related control information between DLEP peers.  DLEP peers are 
  comprised of a modem and a router. DLEP defines a base set of
  mechanisms as well as support for possible extensions.  This
  document defines one such extension.
</t>
<t>
  The base DLEP specification does not include any flow control
  capability.  There are various flow control possible, e.g., see <xref
  target="I-D.ietf-manet-credit-window"/>.  The extension defined in
  this document supports flow control based on explicit messages sent
  via DLEP by a modem to indicate when a router should hold off sending
  traffic, and when it should resume.  The extension also optionally
  supports DSCP (differentiated services codepoint) aware, see <xref
  target="RFC2475"/>, flow control.  The extension defined in this
  document is referred to as "Control Plane Pause".
</t>
<t>
  This document defines a new DLEP Extension Type Value in <xref
  target="sec-ext-type"/> which is used to indicate the use of the
  extension, and three new DLEP Data Items in <xref
  target="sec-data-items"/>.
</t>
<section anchor="sec-1.1" title="Key Words">
<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 BCP
   14, RFC 2119 <xref target="RFC2119"/>.
</t>
</section>
</section>
<section anchor="sec-ext-type" title="Extension Usage and Identification">
<t>
   The use of the Control Plane Pause Extension SHOULD be configurable.
   To indicate that the Control Plane Pause Extension is to be used, an
   implementation MUST include the Control Plane Pause Extension Type
   Value in the Extensions Supported Data Item. The Extensions Supported
   Data Item is sent and processed according to <xref
   target="I-D.ietf-manet-dlep"/>.
</t>
<t>
  The Control Plane Pause Extension Type Value is TBA1, see <xref
  target="sec-iana"/>.
</t>
</section>
<section anchor="sec-data-items" title="Extension Data Items">
<t>
   Three data items are defined by this extension. The Queue Parameters
   Data Item is used by a modem to provide information on the DSCPs it
   uses in forwarding. The Pause Data Item is used by a modem to
   indicate when a router should cease sending packets and the Restart
   Data Item is used by a modem to indicate when a router can resume
   sending packets.
</t>
<section anchor="sec-di-qp" title="Queue Parameters">
<t>
  The Queue Parameters Data Item is used by a modem to indicate DSCP
  values that may be independently paused.  This data item MUST be
  included in a Session Initialization Response Message that also
  contains the Control Plane Pause Extension Type Value in the
  Extensions Supported Data Item.  Updates to these parameters MAY be
  sent by a modem by including the data item in Session Update
  Messages.
</t>
<t>
  The Queue Parameters Data Item identifies DSCPs based on groups of
  logical queues. The number of logical queues is variable as is the
  number of DSCPs associated with each queue. A queue size (in bytes)
  is provided for informational purposes.  An implementation that does
  not support DSCPs would indicate 1 queue with 0 DSCPs, and the number
  of bytes that may be in its associated link transmit queue.
</t>
<t>
  The format of the Queue Parameters Data Item is:
</t>
<t>
<figure>
<artwork>
     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Data Item Type                | Length                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Num Queues  | Scale |              Reserved                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Num DSCPs Q0(0)|             Queue Size Q0                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Num DSCPs Q1  |             Queue Size Q1                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Num DSCPs Q2  |             Queue Size Q2                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    :                                ...                            :
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Num DSCPs Qn  |             Queue Size Qn                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  DS Field Q1  |  DS Field Q1  |  DS Field Q1  |  DS Field Q2  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    :                                ...            |  DS Field Qn  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>
</t>
<t>
  <list style="hanging">
    <t hangText="Data Item Type:">TBA2</t>
    <t hangText="Length:">Variable
      <vspace blankLines="1"/>
      Per <xref target="I-D.ietf-manet-dlep"/> Length
      is the number of octets in the data item, excluding the Type and
      Length fields.
    </t>
    <t hangText="Num Queues:">
      <vspace blankLines="1"/>
      An 8-bit unsigned integer indicating the number of queues
      represented in the data item.  This field MUST contain a value of
      at least one (1). Note that this number is one
      larger than the largest queue index value included in the data
      item.
    </t>
    <t hangText="Scale:">
      <vspace blankLines="1"/>
      An 4-bit unsigned integer indicating the scale used in the Queue
      Size fields. The valid values are:
      <figure>
        <artwork>
      Value  Scale
      ------------
          0   B - Bytes     (Octets)
          1  KB - Kilobytes (B/1024)
          2  MB - Megabytes (KB/1024)
          3  GB - Gigabytes (MB/1024)
        </artwork>
      </figure>
    </t>
    <t hangText="Reserved:">
      <vspace blankLines="1"/>
      MUST be set to zero by the sender (a modem) and ignored by the
      receiver (a router).
    </t>
    <t hangText="Num DSCPs Qn:">
      <vspace blankLines="1"/>
      An 8-bit unsigned integer indicating the number of DSCPs
      associated with the indexed queue.  Other than the special case
      covered in the next paragraph, this field MUST contain a value of
      at least one (1).  Queue indexes start at zero (0) and the maximum
      queue index "Qn" is one less than the value carried in the Num
      Queues field. Queue indexes are implicit in the position in the
      data item.

      <vspace blankLines="1"/>
      Queue index zero "Q0" is a special case. It is used for any
      traffic that does not carry a DSCP value represented in the data
      item.  Therefore the value of the Queue index zero field, "Num
      DSCPs Q0", field MUST be zero (0).
    </t>
    <t hangText="Queue Size Qn:">
      <vspace blankLines="1"/>
      A 24-bit unsigned integer representing the size, in the octet
      scale indicated by the Scale field, of the queue supporting
      traffic with the DSCPs associated with the queue index.
    </t>
    <t hangText="DS Field Qn:">
      <vspace blankLines="1"/>
      The data item contains a sequence of 8 bit DS Fields.  The
      position in the sequence identifies the associated queue
      index. The number of DS Fields present should equal the sum of all
      Num DSCPs field values.  
      <vspace blankLines="1"/>
      The DS Field structure is the same as <xref target="RFC2474"/>.
      <figure>
        <artwork>
        0   1   2   3   4   5   6   7
      +---+---+---+---+---+---+---+---+
      |         DSCP          |  CU   |
      +---+---+---+---+---+---+---+---+

        DSCP: differentiated services codepoint
        CU:   currently unused, MUST be zero
        </artwork>
      </figure>
    </t>
  </list>
</t>
</section>
<section anchor="sec-di-pause" title="Pause">
<t>
  The Pause Data Item is used by a modem to indicate to its peer that
  traffic is to be suppressed.  An example of when a modem might send
  this data item is when an internal queue length exceeds a particular
  threshold.
</t>
<t>
  A modem may indicate that traffic is to be suppressed on a device wide
  or destination specific basis. An example of when a modem might use
  device wide indications is when output queues are shared across all
  destinations, and destination specific might be used when per
  destination queuing is used.  To indicate that suppression applies to
  all destinations, a modem MAY send the Pause Data Item in a Session
  Update Message.  To indicate that suppression applies to a particular
  destination a modem MAY send the Pause Data Item in a Destination
  Update Message.
</t>
<t>
  Each Pause Data Item identifies the traffic to be suppressed by the
  Queue Index defined by <xref target="sec-di-qp"/>, which in turn
  indicates a set of traffic identified by DSCPs.  The special value of
  255 is used to indicate that all traffic is to be suppressed.
</t>
<t>
  While there is no restriction on the number of Messages containing
  Pause Data Item that may be sent by a modem, a modem SHOULD include
  multiple queue indexes in the same message when possible.
</t>
<t>
  A router which receives the Pause Data Item MUST cease sending
  the identified traffic to the modem. This may of course translate into
  the router's queues exceeding their own thresholds.
</t>
<t>
  The format of the Pause Data Item is:
</t>
<t>
<figure>
<artwork>
     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Data Item Type                | Length                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Queue Index  |               ...                             :
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    :                                ...            |  Queue Index  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>
</t>
<t>
[LB note: a list of Queue Indexes is now supported as is special value
255.]
</t>
<t>
  <list style="hanging">
    <t hangText="Data Item Type:">TBA3</t>
    <t hangText="Length:">Variable
      <vspace blankLines="1"/>
      Per <xref target="I-D.ietf-manet-dlep"/> Length
      is the number of octets in the data item, excluding the Type and
      Length fields. It will equal the number of Queue Index fields
      carried in the data item.
    </t>
    <t hangText="Queue Index:">
      <vspace blankLines="1"/>
      One or more 8-bit fields used to indicate a queue index defined by
      a Queue Parameters Data Item.  The special value of 255 indicates
      all traffic is to be suppressed to the modem, when the data item
      is carried in a Session Update Message, or a destination, when the
      data item is carried in Destination Update Message.
    </t>
  </list>
</t>

</section>
<section anchor="sec-di-restart" title="Restart">
<t>
  The Restart Data Item is used by a modem to indicate to its peer that
  transmission of previously suppressed traffic may be resumed.  An
  example of when a modem might send this data item is when an internal
  queue length drops below a particular threshold.
</t>
<t>
  The sending of this data item parallels the Pause Data Item, see the
  previous section, and follows the same rules. This includes that to
  indicate that transmission can resume to all destinations, a modem MAY
  send the Restart Data Item in a Session Update Message.  It also
  includes that to indicate that transmission can resume to a particular
  destination a modem MAY send the Pause Restart Item in a Destination
  Update Message.  Finally, the same rules apply to queue indexes. 
</t>
<t>
  A router which receives the Restart Data Item SHOULD resume
  transmission of the identified traffic to the modem.
</t>
<t>
  The format of the Restart Data Item matches the Pause Data Item and is:
</t>
<t>
<figure>
<artwork>
     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Data Item Type                | Length                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Queue Index  |               ...                             :
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    :                                ...            |  Queue Index  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>
</t>
<t>
  <list style="hanging">
    <t hangText="Data Item Type:">TBA4</t>
    <t hangText="Length:">See <xref target="sec-di-pause"/>.</t>
    <t hangText="Queue Index:">See <xref target="sec-di-pause"/>.</t>
  </list>
</t>
</section>
</section>

<section anchor="sec-sec" title="Security Considerations">
<t>
   The extension introduces a new mechanism for flow control between a
   router and modem using the DLEP protocol.  The 
   extension does not inherently introduce any additional threats
   above those documented in <xref target="I-D.ietf-manet-dlep"/>.
   The approach taken to Security in that document applies equally
   when running the extension defined in this document.
</t>
</section>
<section anchor="sec-iana" title="IANA Considerations">
<t>
  This document requests the assignment of 4 values by IANA.  All
  assignments are to registries defined by <xref
  target="I-D.ietf-manet-dlep"/>.
</t>
<section anchor="sec-iana-ext" title="Extension Type Value">
<t>
  This document requests 1 new assignment to the DLEP Extensions 
  Registry named "Extension Tyoe Values" in the range with the
  "Specification   Required" policy. The requested value is as
  follows: 
</t>
<texttable anchor="table_et" title="Requested Extension Type Value">
  <preamble></preamble>
  <ttcol>Code</ttcol> <ttcol>Description</ttcol>
    <c>TBA1</c> <c>Control Plane Pause</c> 
    <postamble></postamble>
    </texttable>
</section>
<section anchor="sec-iana-di" title="Data Item Values">
<t>
  This document requests 3 new assignments to the DLEP Data Item
  Registry named "Data Item Values" in the range with the "Specification
  Required" policy. The requested values are as follows:
</t>
<texttable anchor="table_di" title="Requested Data Item Values">
  <preamble></preamble>
  <ttcol>Type Code</ttcol> <ttcol>Description</ttcol>
    <c>TBA2</c> <c>Queue Parameters</c> 
    <c>TBA3</c> <c>Pause</c> 
    <c>TBA4</c> <c>Restart</c> 
    <postamble></postamble>
    </texttable>
</section>
</section>
</middle>

<?rfc needLines="20"?>
<back>
<references title="Normative References">

<?rfc include="reference.RFC.2119"?>
<?rfc include="reference.I-D.draft-ietf-manet-dlep-24.xml"?>

</references>

<references title="Informative References">

<?rfc include="reference.I-D.draft-ietf-manet-credit-window-04.xml"?>
<?rfc include="reference.RFC.2474"?>
<?rfc include="reference.RFC.2475"?>

</references>
<?rfc needLines="100"?>
<!--
<section title="Acknowledgments">
   <t>
   </t>
   <vspace blankLines="100"/></t>
</section> 
-->
</back>
</rfc>

<!-- Local Variables: -->
<!-- fill-column:72 -->
<!-- End: -->
