<?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">
]>
<?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. -->
<?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="3"?>
<!-- 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-ietf-isis-auto-conf-05" ipr="trust200902">
  <front>
    <title abbrev="draft-ietf-isis-auto-conf">ISIS Auto-Configuration</title>

    <author fullname="Bing Liu" initials="B." role="editor" surname="Liu">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Q10, Huawei Campus, No.156 Beiqing Road</street>

          <city>Hai-Dian District, Beijing, 100095</city>

          <country>P.R. China</country>
        </postal>

        <email>leo.liubing@huawei.com</email>
      </address>
    </author>

    <author fullname="Les Ginsberg" initials="L." surname="Ginsberg">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>821 Alder Drive</street>

          <city>Milpitas</city>

          <region/>

          <code>CA 95035</code>

          <country>USA</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>ginsberg@cisco.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Bruno Decraene" initials="B." surname="Decraene">
      <organization>Orange</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <country>France</country>
        </postal>

        <email>bruno.decraene@orange.com</email>
      </address>
    </author>

    <author fullname="Ian Farrer" initials="I." surname="Farrer">
      <organization>Deutsche Telekom AG</organization>

      <address>
        <postal>
          <street/>

          <city>Bonn</city>

          <country>Germany</country>
        </postal>

        <email>ian.farrer@telekom.de</email>
      </address>
    </author>

    <author fullname="Mikael Abrahamsson" initials="M." surname="Abrahamsson">
      <organization>T-Systems</organization>

      <address>
        <postal>
          <street/>

          <city>Stockholm</city>

          <country>Sweden</country>
        </postal>

        <email>mikael.abrahamsson@t-systems.se</email>
      </address>
    </author>

    <date day="9" month="May" year="2017"/>

    <area>Routing Area</area>

    <workgroup>isis</workgroup>

    <keyword>isis auto-configuration</keyword>

    <abstract>
      <t>This document specifies IS-IS auto-configuration mechanisms. The key
      components are IS-IS System ID self-generation, duplication detection
      and duplication resolution. These mechanisms provide limited IS-IS
      functions, and so are suitable for networks where plug-and-play
      configuration is expected.</t>
    </abstract>

    <note title="Requirements Language">
      <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"/> when they appear in ALL CAPS. When these words are
      not in ALL CAPS (such as "should" or "Should"), they have their usual
      English meanings, and are not to be interpreted as <xref
      target="RFC2119"/> key words.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>This document specifies mechanisms for IS-IS <xref target="RFC1195"/>
      <xref target="ISO_IEC10589"/><xref target="RFC5308"> </xref> to be
      auto-configuring. Such mechanisms could reduce the management burden for
      configuring a network, especially where plug-and-play device
      configuration is required.</t>

      <t>IS-IS auto-configuration is comprised of the following
      functions:<list style="numbers">
          <t hangText="-">IS-IS default configuration.</t>

          <t hangText="-">IS-IS System ID self-generation.</t>

          <t hangText="-">System ID duplication detection and resolution.</t>

          <t hangText="-">ISIS TLV utilization (Authentication TLV, metrics in
          reachability advertisements, and Dynamic Host Name TLV).</t>
        </list></t>

      <t>This document also defines mechanisms to prevent the unintentional
      interoperation of auto-configured routers with non-autoconfigured
      routers. See <xref target="TLV"/>.</t>
    </section>

    <section title="Scope">
      <t>The auto-configuration mechanisms support both IPv4 and IPv6
      deployments.</t>

      <t>These auto-configuration mechanisms aim to cover simple deployment
      cases. The following important features are not supported:<list
          style="hanging">
          <t hangText="o">Multiple IS-IS instances.</t>

          <t hangText="o">Multi-area and level-2 routing.</t>

          <t hangText="o">Interworking with other routing protocols.</t>
        </list></t>

      <t>IS-IS auto-configuration is primarily intended for use in small (i.e.
      10s of devices) and unmanaged deployments. It allows IS-IS to be used
      without the need for any configuration by the user. It is not
      recommended for larger deployments.</t>
    </section>

    <section title="Protocol Specification  ">
      <t/>

      <section title="IS-IS Default Configuration">
        <t><list style="hanging">
            <t hangText="o">IS-IS interfaces MUST be auto-configured to an
            interface type corresponding to their layer-2 capability. For
            example, Ethernet interfaces will be auto-configured as broadcast
            networks and Point-to-Point Protocol (PPP) interfaces will be
            auto-configured as Point-to-Point interfaces.</t>

            <t hangText="o">IS-IS auto-configuration instances MUST be
            configured as level-1, so that the interfaces operate as level-1
            only.</t>

            <t hangText="o">originatingLSPBufferSize is set to 512.</t>

            <t hangText="o">MaxAreaAddresses is set to 3</t>

            <t hangText="o">Extended IS Reachability and IP Reachability TLVs
            <xref target="RFC5305"/> MUST be used i.e. a router operating in
            auto configuration mode MUST NOT use any of the following
            TLVs:<list style="symbols">
                <t>IS Neighbors (2)</t>

                <t>IP Internal Reachability (128)</t>

                <t>IP External Reachability (130)</t>
              </list></t>

            <t>TLVs listed above MUST be ignored on receipt.</t>
          </list></t>
      </section>

      <section anchor="NETGen" title="IS-IS NET Generation">
        <t>In IS-IS, a router (known as an Intermediate System) is identified
        by a Network Entity Title (NET) which is a type of Network Service
        Access Point (NSAP). The NET is the address of an instance of the
        IS-IS protocol running on an Intermediate System (IS).</t>

        <t>The auto-configuration mechanism generates the IS-IS NET as the
        following:</t>

        <t><list style="hanging">
            <t hangText="o">Area address<list style="empty">
                <t>In IS-IS auto-configuration, this field MUST be 13 octets
                long and set to all 0.</t>
              </list></t>

            <t hangText="o">System ID<list style="empty">
                <t>This field follows the area address field, and is 6 octets
                in length. There are two basic requirements for the System ID
                generation:<list style="hanging">
                    <t hangText="-">As specified by the IS-IS protocol, this
                    field must be unique among all routers in the same
                    area.</t>

                    <t hangText="-">After its initial generation, the System
                    ID SHOULD remain stable. Changes such as interface
                    enable/disable, interface connect/disconnect, device
                    reboot, firmware update, or configuration changes SHOULD
                    NOT cause the system ID to change. System ID change as
                    part of the System ID collision resolution process MUST be
                    supported. Implementations SHOULD allow the System ID to
                    be cleared by a user initiated system reset.</t>
                  </list></t>

                <t>More specific considerations for System ID generation are
                described in <xref target="Unique"/>.</t>
              </list></t>
          </list></t>
      </section>

      <section anchor="TLV" title="Router-Fingerprint TLV">
        <t>The Router-Fingerprint TLV is similar to the
        Router-Hardware-Fingerprint TLV defined in <xref target="RFC7503"/>.
        However, the TLV defined here includes a flags field to support
        indicating that the router is in Start-up mode and is operating in
        auto-configuration mode.</t>

        <t><figure title="">
            <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     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Flags Field  |                                               |
   +-+-+-+-+-+-+-+-+        Router Fingerprint (Variable)          .
   .                                                               .
   .                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type: to be assigned by IANA.
   Length: the length of the value field. Must be >= 33.
   Flags field (1 octet)

    0 1 2 3 4 5 6 7
   +-+-+-+-+-+-+-+-+
   |S|A| Reserved  |
   +-+-+-+-+-+-+-+-+

   S flag: when set, indicates the router is in "start-up" mode.
   A flag: when set, indicates that the router is operating in 
     auto-configuration mode. The purpose of the flag is so that 
     two routers can identify if they are both using auto-configuration.
     If the A flag setting does not match in hellos then no adjacency
     should be formed.
   Reserved: these bits MUST be set to zero and MUST be ignored by
     the receiver.
   
   Router Fingerprint: 32 or more octets.

]]></artwork>
          </figure></t>

        <t>More specific considerations for Router-Fingerprint are described
        in <xref target="Unique"/>.</t>

        <t>Router Fingerprint TLV MUST be included in Intermediate System to
        Intermediate System Hellos (IIHs) originated by a router operating in
        auto-configuration mode. An auto-configuration mode router MUST ignore
        IIHs that don't contain the Router Fingerprint TLV.</t>

        <t>Router Fingerprint TLV MUST be included in Link State PDU (LSP) #0
        originated by a router operating in auto-configuration mode. If an LSP
        #0 which does NOT contain a Router Fingerprint TLV is received by a
        Router operating in auto-configuration mode the LSP is flooded as
        normal, but the entire LSP set originated by the sending router MUST
        be ignored when running the Decision process.</t>

        <t>The router fingerprint TLV MUST NOT be included in an LSP with a
        non-zero number and when received MUST be ignored.</t>
      </section>

      <section title="Protocol Operation">
        <t>This section describes the operation of a router supporting
        auto-configuration mode.</t>

        <section title="Start-Up mode">
          <t>When a router starts operation in auto-configuration mode, both
          the S and A bits MUST be set in the Router Fingerprint TLV included
          in both hellos and LSP #0. During this mode only LSP #0 is generated
          and IS or IP/IPv6 reachability TLVs MUST NOT be included in LSP #0.
          A router remains in Start-up mode for a minimum period of time
          (recommended to be 1 minute). This time should be sufficient to
          bring up adjacencies to all expected neighbors. A router leaves
          Start-up mode once the minimum time has elapsed and full LSP
          database synchronization is achieved with all neighbors in the UP
          state.</t>

          <t>When a router exits startup-mode it clears the S bit in Router
          Fingerprint TLVs it sends in hellos and LSP#0. The router MAY now
          advertise IS neighbor and IP/IPv6 prefix reachability in its LSPs
          and MAY generate LSPs with a non-zero number.</t>

          <t>The purpose of Start-up Mode is to minimize the occurrence of
          System ID changes for a router once it has become fully operational.
          Any System ID change during Start-up mode will have minimal impact
          on a running network because while in Start-up mode the router is
          not yet being used for forwarding traffic.</t>
        </section>

        <section title="Adjacency Formation">
          <t>Routers operating in auto-configuration mode MUST NOT form
          adjacencies with routers which are NOT operating in
          auto-configuration mode. The presence of the Router Fingerprint TLV
          with the A bit set indicates the router is operating in
          auto-configuration mode.</t>

          <t>NOTE: The use of the special area address of all 0's makes it
          unlikely that a router which is not operating in auto-configuration
          mode will be in the same area as a router operating in
          auto-configuration mode. However, the check for the Router
          Fingerprint TLV with A bit set provides additional protection.</t>
        </section>

        <section title="IS-IS System ID Duplication Detection">
          <t>The System ID of each node MUST be unique. As described in <xref
          target="Unique"/>, the System ID is generated based on entropies
          (e.g. MAC address) which are generally expected to be unique.
          However, since there may be limitations to the available entropies,
          there is still the possibility of System ID duplication. This
          section defines how IS-IS detects and resolves System ID
          duplication. Duplicate System ID may occur between neighbors or
          between routers in the same area which are not neighbors.</t>

          <t>Duplicate System ID with a neighbor is detected when the System
          ID received in an IIH is identical to the local System ID and the
          Router-Fingerprint in the received Router-Fingerprint TLV does NOT
          match the locally generated Router-Fingerprint.</t>

          <t>Duplicate System ID with a non-neighbor is detected when an LSP
          #0 is received, the System ID of the originator is identical to the
          local System ID, and the Router-Fingerprint in the
          Router-Fingerprint TLV does NOT match the locally generated
          Router-Fingerprint.</t>
        </section>

        <section anchor="duplt"
                 title="Duplicate System ID Resolution Procedures">
          <t>When duplicate System ID is detected one of the systems MUST
          assign itself a different System ID and perform a protocol restart.
          The resolution procedure attempts to minimize disruption to a
          running network by choosing a router which is in Start-up mode to be
          restarted whenever possible.</t>

          <t>The contents of the Router-Fingerprint TLVs for the two routers
          with duplicate System IDs are compared.</t>

          <t>If one TLV has the S bit set (router is in Start-up mode) and one
          TLV has the S bit clear (router is NOT in Start-up mode) the router
          in Start-up mode MUST generate a new System ID and restart the
          protocol.</t>

          <t>If both TLVs have the S bit set (both routers are in Start-up
          mode) or both TLVs have the S bit clear (neither router is in
          Start-up mode) then the router with numerically smaller
          Router-Fingerprint MUST generate a new System ID and restart the
          protocol.</t>

          <t>Fingerprint comparison is performed octet by octet starting from
          the first received octet until a difference is detected. If the
          fingerprints have different lengths and all octets up to the
          shortest length are identical then the fingerprint with smaller
          length is considered smaller.</t>

          <t>If the fingerprints are identical in both content and length (and
          state of the S bit is identical) and the duplication is detected in
          hellos then the both routers MUST generate a new System ID and
          restart the protocol.</t>

          <t>If fingerprints are identical in both content and length and the
          duplication is detected in LSP #0 then the procedures defined in
          <xref target="DDuplct"/> MUST be followed.</t>
        </section>

        <section anchor="Unique"
                 title="System ID and Router-Fingerprint Generation Considerations">
          <t>As specified in this document, there are two distinguishing items
          that need to be self-generated: the System ID and
          Router-Fingerprint. In a network device, normally there are some
          resources which can provide an extremely high probability of
          uniqueness (some examples listed below). These resources can be used
          as seeds to derive identifiers.</t>

          <t><list style="symbols">
              <t>MAC address(es)</t>

              <t>Configured IP address(es)</t>

              <t>Hardware IDs (e.g. CPU ID)</t>

              <t>Device serial number(s)</t>

              <t>System clock at a certain specific time</t>

              <t>Arbitrary received packet(s) on an interface(s)</t>
            </list></t>

          <t>This document recommends the use of an IEEE 802 48-bit MAC
          address associated with the router as the initial System ID. This
          document does not specify a specific method to re-generate the
          System ID when duplication happens.</t>

          <t>This document also does not specify a specific method to generate
          the Router-Fingerprint.</t>

          <t>There is an important concern that the seeds listed above (except
          MAC address) might not be available in some small devices such as
          home routers. This is because of hardware/software limitations and
          the lack of sufficient communication packets at the initial stage in
          home routers when doing ISIS auto-configuration. In this case, this
          document suggests using the MAC address as System ID and generating
          a pseudo-random number based on another seed (such as the memory
          address of a certain variable in the program) as the
          Router-Fingerprint. The pseudo-random number might not have a very
          high probability of uniqueness in this solution, but should be
          sufficient in home networks scenarios.</t>

          <t>The considerations surrounding System ID stability described in
          section <xref target="NETGen"/> also need to be applied.</t>
        </section>

        <section anchor="DDuplct"
                 title="Duplication of both System ID and Router-Fingerprint">
          <t>As described above, the resources for generating System
          ID/Fingerprint might be very constrained during the initial stages.
          Hence, the duplication of both System ID and Router-Fingerprint
          needs to be considered. In such a case it is possible that a router
          will receive an LSP with System ID and Router-Fingerprint identical
          to the local values but the LSP is NOT identical to the locally
          generated copy i.e. sequence number is newer or sequence number is
          the same but the LSP has a valid checksum which does not match. The
          term DD-LSP is used to describe such an LSP.</t>

          <t>In a benign case, this will occur if a router restarts and it
          receives copies of its own LSPs from its previous incarnation. This
          benign case needs to be distinguished from the pathological case
          where there are two different routers with the same System ID and
          the same Router-Fingerprint.</t>

          <t>In the benign case, the restarting router will generate a new
          version of its own LSP with higher sequence number and flood the new
          LSP version. This will cause other routers in the network to update
          their LSPDB and synchronization will be achieved.</t>

          <t>In the pathological case the generation of a new version of an
          LSP by one of the "twins" will cause the other twin to generate the
          same LSP with a higher sequence number - and oscillation will
          continue without achieving LSPDB synchronization.</t>

          <t>Note that comparison of S bit in the Router-Fingerprint TLV
          cannot be performed as in the benign case it is expected that the S
          bit will be clear. Also note that the conditions for detecting
          duplicate System ID will NOT be satisfied because both the System ID
          and the Router-Fingerprint will be identical.</t>

          <t>The following procedure is defined:</t>

          <t><figure>
              <artwork><![CDATA[    DD-state is a boolean which indicates if a 
      DD-LSP #0 has been received
    DD-count is the count of the number of occurences
      of reception of a DD-LSP
    DD-timer is a timer associated with reception of 
     DD-LSPs. Recommended value is 60 seconds.
    DD-max is the maximum number of DD-LSPs allowed 
     to be received in DD-timer interval. 
     Recommended value is 3.

When a DD-LSP is received:

  If DD-state is FALSE:
    DD-state is set to TRUE
    DD-timer is started
    DD-count is initialized to 1.

  If DD-state is TRUE:
    DD-count is incremented
    If DD-count is >= DD-max:
       Local system MUST generate a new System ID 
        and Router-Fingerprint and restart the protocol
       DD-state is (re)initialized to FALSE and
        DD-timer cancelled.

  If DD-timer expires:
    DD-state is set to FALSE.
]]></artwork>
            </figure></t>

          <t>Note that to minimze the likelihood of duplication of both System
          ID and Router-fingerprint reoccuring, routers SHOULD have more
          entropies available. One simple way to achieve this is to add the
          LSP sequence number of the next LSP it will send to the
          Router-Fingerprint.</t>
        </section>
      </section>

      <section title="Additional IS-IS TLVs Usage Guidelines">
        <t>This section describes the behavior of selected TLVs when used by a
        router supporting IS-IS auto-configuration.</t>

        <section anchor="AuthTLV" title="Authentication TLV">
          <t>It is RECOMMENDED that IS-IS routers supporting this
          specification offer an option to explicitly configure a single
          password for HMAC-MD5 authentication as specified in<xref
          target="RFC5304"> </xref>.</t>
        </section>

        <section title="Metric Used in Reachability TLVs">
          <t>It is RECOMMENDED that IS-IS auto-configuration routers use a
          high metric value (e.g. 100000) as default in order to allow
          manually configured adjacencies to be preferred over
          auto-configured.</t>
        </section>

        <section title="Dynamic Host Name TLV">
          <t>IS-IS auto-configuration routers MAY advertise their Dynamic Host
          Name TLV (TLV 137, <xref target="RFC5301"/>). The host name could be
          provisioned by an IT system, or just use the name of vendor, device
          type or serial number, etc.</t>

          <t>To guarantee the uniqueness of the host name, the System ID
          SHOULD be appended as a suffix in the names.</t>
        </section>
      </section>
    </section>

    <section title="Security Considerations">
      <t>In the absence of cryptographic authentication it is possible for an
      attacker to inject a PDU falsely indicating there is a duplicate
      system-id. This may trigger automatic restart of the protocol using the
      duplicate-id resolution procedures defined in this document.</t>

      <t>Note that the use of authentication is incompatible with
      auto-configuration as it requires some manual configuration.</t>

      <t>For wired deployment, the wired connection itself could be considered
      as an implicit authentication in that unwanted routers are usually not
      able to connect (i.e. there is some kind of physical security in place
      preventing the connection of rogue devices); for wireless deployment,
      the authentication could be achieved at the lower wireless link
      layer.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document requires the definition of a new IS-IS TLV to be
      reflected in the "IS-IS TLV Codepoints" registry:</t>

      <t><figure>
          <artwork><![CDATA[Type  Description                       IIH LSP SNP Purge
----  ------------                      --- --- --- -----
TBA   Router-Fingerprint                 Y   Y   N    Y

]]></artwork>
        </figure></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>This document was heavily inspired by [RFC7503].</t>

      <t>Martin Winter, Christian Franke and David Lamparter gave essential
      feedback to improve the technical design based on their implementation
      experience.</t>

      <t>Many useful comments were made by Acee Lindem, Karsten Thomann,
      Hannes Gredler, Peter Lothberg, Uma Chundury, Qin Wu, Sheng Jiang and
      Nan Wu, etc.</t>

      <t>This document was produced using the xml2rfc tool <xref
      target="RFC7991"/>. (initially prepared using 2-Word-v2.0.template.dot.
      )</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.1195'?>

      <?rfc include='reference.RFC.5301'?>

      <?rfc include='reference.RFC.5304'?>

      <?rfc include='reference.RFC.5305'?>

      <?rfc include='reference.RFC.5308'?>

      <reference anchor="ISO_IEC10589">
        <front>
          <title>Intermediate system to Intermediate system intra-domain
          routeing information exchange protocol for use in conjunction with
          the protocol for providing the connectionless-mode Network Service
          (ISO 8473), ISO/IEC 10589:2002, Second Edition.</title>

          <author fullname="ISO &quot;International Organization for Standardization&quot;"/>

          <date month="Nov" year="2002"/>
        </front>
      </reference>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.7503'?>

      <?rfc include='reference.RFC.7991'?>
    </references>
  </back>
</rfc>
