<?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 RFC3654 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3654.xml">
<!ENTITY RFC3746 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3746.xml">
<!ENTITY RFC5657 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5657.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">
<!ENTITY RFC5812 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5812.xml">
<!ENTITY RFC5810 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5810.xml">
<!ENTITY RFC5811 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5811.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" ?>
<!-- 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="info" docName="draft-djjhs-forces-lfbstate-00" ipr="trust200902">

  <front>

    <title abbrev="ForCES LFB Instance State">ForCES LFB Instance State</title>

     <author fullname="Damascane M. Joachimpillai" initials="D.J." surname="Joachimpillai">
		<organization>Verizon</organization>
		<address>
			<postal>
				<street>60 Sylvan Rd</street>
				<city>Waltham</city>
				<region>Mass.</region>
				<code>02451</code>
				<country>USA</country>
			</postal>
			<email>damascene.joachimpillai@verizon.com</email>
		</address>
	</author>

	<author fullname="Jamal Hadi Salim" surname="Hadi Salim">
		<organization>Mojatatu Networks</organization>
		<address>
			<postal>
				<street>Moodie Dr.</street>
				<city>Ottawa</city>
				<region>Ontario</region>
				<country>Canada</country>
			</postal>
			<email>hadi@mojatatu.com</email>
		</address>
	</author>
   
    <date year="2012" />

    <area>Routing</area>

    <workgroup>Internet Engineering Task Force</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>ForCES</keyword>
    <keyword>Model</keyword>
    <keyword>Extension</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>
      The ForCES LFB Topology currently defines that once an instance of an 
      LFB class is created it becomes immediately active in the datatapath. 
      This document makes a slight extension to add state to an instantiated 
      LFB class allowing the CE to decide when an LFB instance becomes operational
      on the datapath.
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Terminology and Conventions">
      <t/>

      <section title="Requirements Language">
        <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"></xref>.</t>
      </section>
  <section title="Definitions">
	<t> This document follows the terminology defined by the ForCES
   Model in <xref target="RFC5812"></xref>.
   The required definitions are repeated below for clarity.</t>
  
      <t><list style="hanging">
      
<t>
FE Model - The FE model is designed to model the logical processing
functions of an FE. The FE model proposed in this document
includes three components; the LFB modeling of individual Logical
Functional Block (LFB model), the logical interconnection between
LFBs (LFB topology), and the FE-level attributes, including FE
capabilities. The FE model provides the basis to define the
information elements exchanged between the CE and the FE in the
ForCES protocol [RFC5810].
</t>
<t>
LFB (Logical Functional Block) Class (or type) - A template that
represents a fine-grained, logically separable aspect of FE
processing. Most LFBs relate to packet processing in the data
path. LFB classes are the basic building blocks of the FE model.
</t>
<t>
LFB Instance - As a packet flows through an FE along a data path, it
flows through one or multiple LFB instances, where each LFB is an
instance of a specific LFB class. Multiple instances of the same
LFB class can be present in an FE's data path. Note that we often
refer to LFBs without distinguishing between an LFB class and LFB
instance when we believe the implied reference is obvious for the
given context.
</t>
<t>
LFB Model - The LFB model describes the content and structures in an
LFB, plus the associated data definition. XML is used to provide
a formal definition of the necessary structures for the modeling.
Four types of information are defined in the LFB model. The core
part of the LFB model is the LFB class definitions; the other
three types of information define constructs associated with and
used by the class definition. These are reusable data types,
supported frame (packet) formats, and metadata.
</t>
<t>
LFB Metadata - Metadata is used to communicate per-packet state from
one LFB to another, but is not sent across the network. The FE
model defines how such metadata is identified, produced, and
consumed by the LFBs, but not how the per-packet state is
implemented within actual hardware. Metadata is sent between the
FE and the CE on redirect packets.
</t>
<t>ForCES Component - A ForCES Component is a well-defined, uniquely
identifiable and addressable ForCES model building block. A
component has a 32-bit ID, name, type, and an optional synopsis
description. These are often referred to simply as components.
</t>
<t>
LFB Component - An LFB component is a ForCES component that defines
the Operational parameters of the LFBs that must be visible to the
CEs.
</t>
<t>
LFB Topology - LFB topology is a representation of the logical
interconnection and the placement of LFB instances along the data
path within one FE. Sometimes this representation is called
intra-FE topology, to be distinguished from inter-FE topology.
LFB topology is outside of the LFB model, but is part of the FE
model.
</t>
<t>
FE Topology - FE topology is a representation of how multiple FEs
within a single network element (NE) are interconnected.
Sometimes this is called inter-FE topology, to be distinguished
from intra-FE topology (i.e., LFB topology). An individual FE
might not have the global knowledge of the full FE topology, but
the local view of its connectivity with other FEs is considered to
be part of the FE model.
</t>

</list> </t>
    </section>

    </section>

<section title="Introduction">
    <t> 
    In the ForCES architecture, a packet service can be modelled by composing
    a graph of one or more LFB instances. The reader is refered to the details 
    in <xref target="RFC5812"> the ForCES Model</xref>. The CE instantiates
    a class on the FE making it available for component update (eg table updates)
    as well as datapath processing.
    </t>
   <t>
   If an FE is capable of dealing with modifiable LFB topology, then
   the CE may create a packet service when describing LFB instance
   graph connections by updating the FEOBject LFBTopology component. 
   </t>
</section>

  <section title="Problem Scope">

   <t>
   Sometimes it is prudent, after an LFB class is instantiated, to first
   populate an LFB instance with its configuration before activating it. There are
   various challenges we face which motivate this document:
   <list style="symbols">
	   <t>
	   There are cases where an LFB instance may require some minimalist
	   configuration before it can pass data. Any data received before the
	   full configuration is updated may cause race conditions or corruptions.
	   </t>
	   <t>
	   The LFB instance may require to receive configuration without 
	   being active in the datapath until a future determined time the
	   CE deems. Such is the case when an LFB instance
	   on an LFB is acting as backup of another instance running in another
	   FE.
	   </t>
   </list>
   </t>
   <t>
   In both cases described above, we require ability for the CE to instantiate,
   populate the LFB instance with control data then later activate the 
   populated LFB instance. We also need the ability to offline an LFB
   instance by having the CE deactivate it.
   </t>
   <t>
   It should be noted that the FE Object LFB already allows the FE to 
   be activated or offlined from the datapath. The CE may set the
   component FEState to be either administratively disabled
   or operationally disabled as well as operationally enabled. The 
   new requirement in this document is to refine the granularity
   to be at the LFB instance level.
   </t>
</section>

<section title="Proposal Overview">
<t>
We propose a backward and forward compatible solution by extending the 
FEObject LFB.
</t>
<t>
    We propose 3 changes:
    <list style="numbers">
    <t>
	    Introduce a new FEObject Datatypedef which extends the
	    LFBSelectorType. The newLFBSelectorType will have, in addition
	    to the LFB class and instance identification, state definition in
	    the form of a reference to FEStateValues.
    </t>
    <t>
	    Introduce a new component which is a table of newLFBSelectorType.
	    This table will parallel the LFBSelectors(ID 2) but will additionally 
	    carry the LFB instance state. Old CE implementations can continue to 
	    update the LFBSelectors table and ignore the newLFBSelectors table.
	    Such old CE implementations will not be able to use this new feature
	    even if the FE was capable.
	    New CE implementations can update newLFBSelectors table while ignoring
	    the LFBSelectors table. To meet our stated goals, the default state 
	    in the newLFBSelectors state will be OperDisable. The CE will have 
	    to take the extra step of activating by setting it the state to 
	    OperDisable.
    </t>
    <t>
	   Introduce a capability advertised by the FE to announce its ability
	   to handle the newLFBSelectors table. XXX: do we require a change to
	   the FEO version?
    </t>
    </list>
</t>

    <section title="Changed XML">
    <t>TBA</t>
    </section>
</section>
  <section anchor="Acknowledgements" title="Acknowledgements">
	  <t>
		  TBA
	  </t>
  </section>

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" title="IANA Considerations">
      <t>This memo includes no request to IANA.</t>

    </section>

    <section anchor="Security" title="Security Considerations">
      <t>TBA</t>
    </section>
  </middle>


  <back>
    <!-- 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="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
      &RFC5810;
      &RFC5812;

    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

    &RFC2119;
    </references>

    <!-- Change Log

v00 2009-02-17  EH   Initial version
  -->
  </back>
</rfc>
