<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std"
     docName="draft-chen-ospf-abnormal-state-info-08"
     ipr="trust200902">
  <front><?Pub Caret?>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->


    <title abbrev="OSPF Abnormal State"> 
     OSPF Abnormal State Information
    </title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->
     <author initials="H" surname="Chen" fullname="Huaimo Chen">
      <organization>Futurewei</organization>
      <address>
        <postal>
          <street></street>
          <city>Boston, MA</city>
          <region></region>
          <code></code>
          <country>USA</country>
        </postal>
        <email>Huaimo.chen@futurewei.com</email>
      </address>
    </author>


    <date year="2022" />

    <!-- 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>General</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>template</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 document describes a couple of options for an OSPF router 
to advertise its abnormal state information in a routing domain.
</t> 
</abstract>


</front>
<middle>
  
  

<section title="Introduction">
    
<t>
There may be some states that are not normal in an OSPF router,
which include the state that a link state advertisement (LSA) stays 
in a retransmission list on the router for more than a given time period
such as more than hello dead interval, and may include
the state that a database description (DD) packet does not
get acknowledged for a given period of time.
</t>

<t>
If a link state advertisement (LSA) with a topology change in a router
can not get through over an OSPF interface for a given time period, 
some of the routers in the routing domain may have different view 
of the real network topology, thus routing loops may occur and some 
traffic may get dropped.
</t>

<t>
It is useful for an OSPF router in a routing domain to 
advertise its abnormal state information to other routers,
or notify some systems such as an event management or 
monitoring system for its abnormal state.
</t>

<t>
This document describes a couple of options for an OSPF router 
to advertise its abnormal state information in a routing domain. 
</t>

</section>

  
<section title="Terminology">
<t>
This document uses terminologies defined in RFC 4970, RFC 2328, 
and RFC 2740.
</t>
</section>


<section title="Conventions Used in This Document">
<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 RFC 2119.
</t>
</section>  
                                

<section title="OSPF Router State Information LSA">
<t>
OSPF routers MAY advertise their state information in
   a area-scoped or AS-scoped router state information LSA 
with a router state informatioin TLV.
</t>



<section title="OSPFv2 Router State Information (RSI) Opaque LSA">

<t>
OSPFv2 routers will advertise an area-scoped or AS-scoped 
Router State Information Opaque-LSA [RFC 2370], which  
has an Opaque type of 5 and Opaque ID of 0.
</t>

<t>
The RSI LSA will be originated initially by an OSPF router 
when an OSPF instance is created and re-originated
in every refresh interval (LSRefreshTime) with the current 
state information of the router.
When the current state information changes, the RSI LSA will also
be originated.
</t>

<t>
           <figure anchor="RSI-opaque-lsa" 
           title="OSPFv2 Router State Information Opaque LSA">
  <artwork align="center"> <![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            LS age             |     Options   |    10/11      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       5       |                    0                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Advertising Router                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     LS sequence number                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         LS checksum           |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+-                            TLVs                             -+
|                             ...                               |]]>
  </artwork>
</figure>
</t>

<t>
 The format of the TLVs within the body of a RSI LSA is the same as
   the format used by the Traffic Engineering Extensions to OSPF [RFC 3630].
   The LSA payload consists of one or more nested Type/Length/Value
   (TLV) triplets.  The format of each TLV is:
</t>

<t>
           <figure anchor="tlv-format" 
           title="TLV Format">
  <artwork align="center"> <![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             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Value...                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]>
  </artwork>
</figure>
</t>

<t>
   The Length field defines the length of the value portion in octets
   (thus a TLV with no value portion would have a length of 0).  The TLV
   is padded to 4-octet alignment; padding is not included in the length
   field (so a 3-octet value would have a length of 3, but the total
   size of the TLV would be 8 octets).  Nested TLVs are also 32-bit
   aligned.  For example, a 1-byte value would have the length field set
   to 1, and 3 octets of padding would be added to the end of the value
   portion of the TLV.  Unrecognized types are ignored.
</t>

</section>

<section title="OSPFv3 Router State Information (RSI) Opaque LSA">
<t>
TBD.
</t>

<!--
<t>
The OSPFv3 Router Information LSA has a function code of 12 ??? while the
   S1/S2 bits are dependent on the desired flooding scope for the LSA.
   The U bit will be set indicating that the OSPFv3 RSI LSA should be
   flooded even if it is not understood.  The Link State ID (LSID) value
   for this LSA is 0.  This is unambiguous since an OSPFv3 router will
   only advertise a single RSI LSA per flooding scope.
</t>
<t>
           <figure anchor="opfv3-rilsa" 
           title="OSPFv3 Router Information LSA">
  <artwork align="center"> <![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            LS age             |1|S12|          12             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       0  (Link State ID)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Advertising Router                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       LS sequence number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        LS checksum           |             Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+-                            TLVs                             -+
|                             ...                               |]]>
  </artwork>
</figure>
</t>
<t>
   The format of the TLVs within the body of a RSI LSA is as defined in
   Section above.
</t>

<t>
   When a new Router State Information LSA TLV is defined, the specification
   MUST explicitly state whether the TLV is applicable to OSPFv2 only,
   OSPFv3 only, or both OSPFv2 and OSPFv3.
</t>
-->

</section>



<section title="OSPF Router State Information (RSI) TLV">
<t>
   A router advertising a RSI LSA MAY
   include the Router State Information TLV.  If included, it
   MUST be the first TLV in the LSA.  Additionally, the TLV MUST
   accurately reflect the OSPF router's state information in the scope
   advertised. 
</t>

<t>
The format of the Router State Information TLV is as follows:

           <figure anchor="state-info-tlv" 
           title="Router State Information TLV">
  <artwork align="center"> <![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 (1)            |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             State Information sub-TLVs                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]>
  </artwork>
</figure>
</t>

     <t>
     <list style="hanging" hangIndent="6">

       <t hangText="Type:">A 2-octet field set to 1.</t>
       <t hangText="Length:">A 2-octet field that indicates the length of the value
               portion in octets and will be the total number of
               octets that state information sub-TLVs use.</t>
       <t hangText="Value:">A variable length sequence of router state 
               information sub-TLVs.</t>
      </list>
</t>

<t>
The format of the Router State Information LSA retranmission time 
sub-TLV is as follows:

           <figure anchor="retran-time-sub-tlv" 
           title="Retranmission Time Sub-TLV">
  <artwork align="center"> <![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 (1)           |           Length (2)          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Max LSA retransmission time  |            Padding            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]>
  </artwork>
</figure>
</t>

     <t>
     <list style="hanging" hangIndent="6">

       <t hangText="Type:">A 2-octet field set to 1.</t>
       <t hangText="Length:">A 2-octet field that indicates the length of the value
               portion in octets and will be 2.</t>
       <t hangText="Value:">A 2-octet field set to the current maximum time 
               (in seconds) that an LSA stays in a retransmission 
               list in a router.</t>
      </list>
</t>

<t>
The format of the sub-TLV for the maximum time that a Database 
Description packet is not acknowledged is illustrated below.

           <figure anchor="max-dd-time-sub-tlv" 
           title="Maximum DD Time Sub-TLV">
  <artwork align="center"> <![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 (2)            |          Length (2)           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Max time DD not acked     |            Padding            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]>
  </artwork>
</figure>
</t>

     <t>
     <list style="hanging" hangIndent="6">

       <t hangText="Type:">A 2-octet field set to 2.</t>
       <t hangText="Length:">A 2-octet field that indicates the length of the value
               portion in octets and will be 2.</t>
       <t hangText="Value:">A 2-octet field set to the current maximum time 
               (in seconds) for which a DD packet is not acknowledged 
               in a router. </t>
      </list>
</t>
</section>
</section>


<section title="Attach RSI TLV to Router Inforamtion LSA">
<t>
Instead of using a Router State Information LSA to advertise the
abnormal state information for a router, 
we may use the existing Router Information
LSA defined in RFC 4970 to advertise the state information
through adding the Router State Information (RSI) TLV into 
the Router Inforamtion LSA. 
</t>

<t>
When a Router State Information (RSI) TLV is put into a Router 
Information LSA, the type of the TLV may be different from the one
mentioned in the section above.
</t>
</section>


<section title="Notify Other Systems">
<t>
An OSPF router may also notify other systems such as 
an event management system about its abnormal state
when the abnormal state occurs in the router. 
</t>
</section>



<section title="Security  Considerations">
<t>
The mechanism described in this document does not raise any new 
security issues for the OSPF protocols.
</t>
</section>




<section anchor="IANA" title="IANA Considerations">
<t>

tb
</t>
</section>

<section title="Acknowledgement">
<t>
  The author would like to thank people
  for their valuable comments on this draft.
</t> 
</section>


</middle>
  <!--  *****BACK MATTER ***** -->
<back>



    <!-- References split into informative and normative -->

    <!-- Thre 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.2328" ?> 

   <?rfc include="reference.RFC.2370" ?> 
  
   <?rfc include="reference.RFC.2740" ?> 

   <?rfc include="reference.RFC.3630" ?> 

   <?rfc include="reference.RFC.4970" ?> 

</references>

<references title="Informative References">
       <?rfc include="reference.RFC.5250"?>

</references>
</back>


</rfc>
<?Pub *0000024293?>
