<?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 RFC1195 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1195.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5120 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5120.xml">
<!ENTITY RFC5301 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5301.xml">
<!ENTITY RFC5304 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5304.xml">
<!ENTITY RFC5305 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5305.xml">
<!ENTITY RFC5307 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5307.xml">
<!ENTITY RFC5308 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5308.xml">
<!ENTITY RFC5310 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5310.xml">
<!ENTITY RFC5340 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5340.xml">
<!ENTITY RFC6119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6119.xml">
<!ENTITY RFC7120 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7120.xml">
<!ENTITY RFC7938 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7938.xml">
<!ENTITY RFC7981 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7981.xml">
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8402 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC8491 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8491.xml">
<!ENTITY RFC8667 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8667.xml">
<!ENTITY RFC9352 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9352.xml">
<!ENTITY Flooding SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lsr-dynamic-flooding.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="exp" docName="draft-ietf-lsr-isis-area-proxy-12" ipr="trust200902">
<!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    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="Area Proxy">
     Area Proxy for IS-IS
   </title>

   <!-- add 'role="editor"' below for the editors if appropriate -->

   <!-- Another author who claims to be an editor -->

   <author fullname="Tony Li" initials="T."
           surname="Li">
     <organization>Juniper Networks</organization>

     <address>
       <postal>
         <street>1133 Innovation Way</street>

         <!-- Reorder these if your country does things differently -->

         <city>Sunnyvale</city>

         <region>California</region>

         <code>94089</code>

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

       <phone></phone>

       <email>tony.li@tony.li</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>
   <author fullname="Sarah Chen" initials="S."
           surname="Chen">
     <organization>Arista Networks</organization>

     <address>
       <postal>
         <street>5453 Great America Parkway</street>

         <!-- Reorder these if your country does things differently -->

         <city>Santa Clara</city>

         <region>California</region>

         <code>95054</code>

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

       <phone></phone>

       <email>sarahchen@arista.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>
   <author fullname="Vivek Ilangovan" initials="V."
           surname="Ilangovan">
     <organization>Arista Networks</organization>

     <address>
       <postal>
         <street>5453 Great America Parkway</street>

         <!-- Reorder these if your country does things differently -->

         <city>Santa Clara</city>

         <region>California</region>

         <code>95054</code>

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

       <phone></phone>

       <email>ilangovan@arista.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>
   <author initials="G." surname="Mishra" fullname="Gyan S. Mishra">
     <organization>
       Verizon Inc.
     </organization>
     <address>
       <postal>
         <street>
           13101 Columbia Pike
         </street>
         <city>Silver Spring</city>
         <region>MD</region>
         <code>20904</code>
         <country>
           United States of America
         </country>
       </postal>
       <phone>
         301 502-1347
       </phone>
       <email>
         gyan.s.mishra@verizon.com
       </email>
     </address>
   </author>

   <date year="2024" />

   <!-- 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>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>
     datacenter IGP routing topology level abstraction IS-IS proxy
   </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>
       Link state routing protocols have hierarchical abstraction
       already built into them. However, when lower levels are used
       for transit, they must expose their internal topologies to each
       other, leading to scale issues.
     </t>
     <t>
       To avoid this, this document discusses extensions to the IS-IS routing
       protocol that allow level 1 areas to provide transit, yet
       only inject an abstraction of the level 1 topology into level
       2.  Each level 1 area is represented as a single level 2 node,
       thereby enabling greater scale.
     </t>
   </abstract>
 </front>

 <middle>
   <section title="Introduction">
     <t>
       The IS-IS routing protocol <xref target="ISO10589">IS-IS</xref>
       supports a two-level hierarchy of abstraction. The
       fundamental unit of abstraction is the 'area', which is a
       (hopefully) connected set of systems running IS-IS at the same
       level. Level 1, the lowest level, is abstracted by routers that
       participate in both Level 1 and Level 2, and they inject area
       information into Level 2.  Level 2 systems seeking to access
       Level 1, use this abstraction to compute the shortest path to
       the Level 1 area. The full topology database of Level 1 is not
       injected into Level 2, only a summary of the address space
       contained within the area, so the scalability of the Level 2
       Link State Database (LSDB) is protected.
     </t>
     <t>
       This works well if the Level 1 area is tangential to the Level
       2 area. This also works well if there are several routers in
       both Level 1 and Level 2 and they are adjacent to one another,
       so Level 2 traffic will never need to transit Level 1 only
       routers.  Level 1 will not contain any Level 2 topology, and
       Level 2 will only contain area abstractions for Level 1.
     </t>
     <t>
       Unfortunately, this scheme does not work so well if the Level 1
       only area needs to provide transit for Level 2 traffic. For
       Level 2 shortest path first (SPF) computations to work
       correctly, the transit topology must also appear in the Level 2
       LSDB.  This implies that all routers that could provide
       transit, plus any links that might also provide Level 2 transit
       must also become part of the Level 2 topology. If this is a
       relatively tiny portion of the Level 1 area, this is not
       overly painful.
     </t>
     <t>
       However, with today&apos;s data center topologies, this is
       problematic. A common application is to use a Layer 3
       Leaf-Spine (L3LS) topology, which is a folded 3-stage <xref
       target="Clos">Clos</xref> fabric. It can also be thought of as
       a complete bipartite graph.  In such a topology, the desire is
       to use Level 1 to contain the routing dynamics of the entire
       L3LS topology and then use Level 2 for the remainder of the
       network. Leaves in the L3LS topology are appropriate for
       connection outside of the data center itself, so they would
       provide connectivity for Level 2. If there are multiple
       connections to Level 2 for redundancy, or other areas, these
       too would also be made to the leaves in the topology. This
       creates a difficulty because there are now multiple Level 2
       leaves in the topology, with connectivity between the leaves
       provided by the spines.
     </t>
     <t>
       Following the current rules of IS-IS, all spine routers would
       necessarily be part of the Level 2 topology, plus all links
       between a Level 2 leaf and the spines.  In the limit, where all
       leaves need to support Level 2, it implies that the entire L3LS
       topology becomes part of Level 2. This is seriously problematic
       as it more than doubles the LSDB held in the
       L3LS topology and eliminates any benefits of the hierarchy.
     </t>
     <t>
       This document discusses the handling of IP traffic. Supporting
       MPLS-based traffic is a subject for future work.
     </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 BCP 14
         <xref target="RFC2119"/> <xref target="RFC8174"/> when, and
         only when, they appear in all capitals, as shown here.
       </t>
     </section>
   </section>

   <section title="Area Proxy">
     <t>
       To address this, in this specification we completely abstract
       away the details of the Level 1 area topology within Level 2,
       making the entire area look like a single proxy system directly
       connected to all of the area&apos;s Level 2 neighbors.  By only
       providing an abstraction of the topology, Level 2&apos;s
       requirement for connectivity can be satisfied without the full
       overhead of the area&apos;s internal topology. It then becomes
       the responsibility of the Level 1 area to provide the forwarding
       connectivity that&apos;s advertised.
     </t>
     <t>
       For this discussion, we&apos;ll consider a single Level 1 IS-IS
       area to be the Inside Area, and the remainder of the Level 2
       area to be the Outside Area. All routers within the Inside Area
       speak Level 1 and Level 2 IS-IS on all of the links within the
       topology. We propose to implement Area Proxy by having a Level
       2 Proxy Link State Protocol Data Unit (PDU, LSP) that
       represents the entire Inside Area. We will refer to this as the
       Proxy LSP.  This is the only LSP from the area that will be
       flooded into the overall Level 2 LSDB.
     </t>
     <t>
       There are four classes of routers that we need to be concerned
       with in this discussion:
       <list style="hanging">
         <t hangText="Inside Router">
           A router within the Inside Area that runs Level 1 and Level 2
           IS-IS. A router is recognized as an Inside Router by the
           existence of its LSP in the Level 1 LSDB.
         </t>
         <t hangText="Area Leader">
           The Area Leader is an Inside Router that is
           elected to represent the Level 1 area by injecting the
           Proxy LSP into the Level 2 LSDB. There may be
           multiple candidates for Area Leader, but only one is
           elected at a given time. Any Inside Router can be Area
	   Leader.
         </t>
         <t hangText="Inside Edge Router">
           An Inside Edge Router is an Inside Area Router that has at
           least one Level 2 interface outside of the Inside Area.  An
           interface on an Inside Edge Router that is connected to an
           Outside Edge Router is an Area Proxy Boundary.
         </t>
         <t hangText="Outside Edge Router">
           An Outside Edge Router is a Level 2 router that is outside
           of the Inside Area that has an adjacency with an Inside
           Edge Router.
         </t>
       </list>
     </t>
     <figure align="left" title="An example of router classes">
       <artwork align="left"><![CDATA[

                            Inside Area

               +--------+                 +--------+
               | Inside |-----------------| Inside |
               | Router |                 |  Edge  |
               +--------+    +------------| Router |
                   |        /             +--------+
                   |       /                   |
               +--------+ /       =============|======
               | Area   |/        ||           |
               | Leader |         ||      +---------+
               +--------+         ||      | Outside |
                                  ||      |  Edge   |
                                  ||      | Router  |
                                  ||      +---------+

                                          Outside Area]]></artwork>
       </figure>
     <t>
       All Inside Edge Routers learn the Area Proxy System Identifier
       from the Area Proxy TLV advertised by the Area Leader and use
       that as the system identifier in their Level 2 IS-IS Hello PDUs
       (IIHs) on all Outside interfaces. Outside Edge Routers will
       then advertise an adjacency to the Area Proxy System
       Identifier. This allows all Outside Routers to use the Proxy
       LSP in their SPF computations without seeing the full topology
       of the Inside Area.
     </t>
     <t>
       Area Proxy functionality assumes that all circuits on Inside
       Routers are either Level 1-2 circuits within the Inside Area,
       or Level 2 circuits between Outside Edge Routers and Inside
       Edge Routers.
     </t>
     <t>
       Area Proxy Boundary multi-access circuits (i.e., Ethernets in
       LAN mode) with multiple Inside Edge Routers on them are not
       supported. The Inside Edge Router on any boundary LAN MUST NOT
       flood Inside Router LSPs on this link. Boundary LANs SHOULD NOT
       be enabled for Level 1. An Inside Edge Router may be elected
       the Designated Intermediate System (DIS) for a Boundary LAN. In
       this case, using the Area Proxy System ID as the basis for the
       LAN pseudonode identifier could create a collision, so the
       Insider Edge Router SHOULD compose the pseudonode identifier
       using its native system identifier. This choice of pseudonode
       identifier may confuse neighbors with an extremely strict
       implementation, in which case the Inside Edge Router may be
       configured with priority 0, causing an Outside Router to be
       elected DIS.
     </t>
     <section title="Segment Routing">
       <t>
         If the Inside Area supports Segment Routing <xref
         target="RFC8402"/>, then all Inside Nodes MUST advertise an
         SR Global Block (SRGB). The first value of the SRGB
         advertised by all Inside Nodes MUST start at the same
         value. If the Area Leader detects SRGBs that do not start
         with the same value, it MUST log an error and not advertise
         an SRGB in the Proxy LSP. The range advertised for the area
         will be the minimum of that advertised by all Inside Nodes.
       </t>
       <t>
         To support Segment Routing, the Area Leader will take the
         SRGB information found in the L1 LSDB and convey that
         to L2 through the Proxy LSP. Prefixes with SID assignments
         will be copied to the Proxy LSP.  Adjacency SIDs for Outside
         Edge Nodes will be copied to the Proxy LSP.
       </t>
       <t>
         To further extend Segment Routing, it is helpful to
         have a segment that refers to the entire Inside Area. This
         allows a path to refer to an area and have any node within
         that area accept and forward the packet. In effect, this
         becomes an anycast SID that is accepted by all Inside Edge
         Nodes. The information about this SID is distributed in the
         Area SID Sub-TLV, as part of the Area Leader&apos;s Area
         Proxy TLV (<xref target="AreaSIDsubTLV"/>). The Inside Edge
         Nodes MUST establish forwarding based on this SID. The Area
         Leader SHALL also include the Area SID in the Proxy LSP so
         that the remainder of L2 can use it for path construction.
         (<xref target="AreaSIDBinding"/>).
       </t>
     </section>
   </section>
   <section title="Inside Router Functions">
     <t>
       All Inside Routers run Level 1-2 IS-IS and must be explicitly
       instructed to enable the Area Proxy functionality. To signal
       their readiness to participate in Area Proxy functionality,
       they will advertise the Area Proxy TLV in their L2 LSP.
     </t>
     <section title="The Area Proxy TLV">
       <t>
         The Area Proxy TLV serves multiple functions:
         <list>
           <t>
             The presence of the Area Proxy TLV in a node&apos;s LSP
             indicates that the node is enabled for Area Proxy.
           </t>
           <t>
             An LSP containing the Area Proxy TLV is also an Inside
             Node. All Inside Nodes, including pseudonodes, MUST
             advertise the Area Proxy TLV.
           </t>
           <t>
             It is a container for sub-TLVs with Area Proxy information.  
           </t>
         </list>
       </t>
       <t>
         A node advertises the Area Proxy TLV in fragment 0 of its L2
         LSP.  Nodes MUST NOT advertise the Area Proxy TLV in an L1
         LSP. Nodes MUST ignore the Area Proxy TLV if it is found in an
         L1 LSP.  The Area Proxy TLV is not used in the Proxy LSP. The
         format of the Area Proxy TLV is:
       </t>
       <figure align="left">
         <artwork align="left"><![CDATA[
    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | TLV Type      | TLV Length    |  Sub-TLVs ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
       </figure>
       <t>
         <list>
           <t>
             TLV Type: 20
           </t>
           <t>
             TLV Length: length of the sub-TLVs
           </t>
         </list>
       </t>
     </section>
     <section title="Level 2 SPF Computation">
       <t>
         When Outside Routers perform a Level 2 SPF computation, they
         will use the Proxy LSP for computing a path transiting
         the Inside Area. Because the topology has been abstracted
         away, the cost for transiting the Inside Area will be zero.
       </t>
       <t>
         When Inside Routers perform a Level 2 SPF computation, they
         MUST ignore the Proxy LSP.  Further, because these systems do
         see the Inside Area topology, the link metrics internal to
         the area are visible. This could lead to different and
         possibly inconsistent SPF results, potentially leading to
         forwarding loops.
       </t>
       <t>
         To prevent this, the Inside Routers MUST consider the metrics
         of links outside of the Inside Area (inter-area metrics)
         separately from the metrics of the Inside Area links
         (intra-area metrics). Intra-area metrics MUST be treated as
         less than any inter-area metric.  Thus, if two paths have
         different total inter-area metrics, the path with the lower
         inter-area metric would be preferred, regardless of any
         intra-area metrics involved. However, if two paths have equal
         inter-area metrics, then the intra-area metrics would be used
         to compare the paths.
       </t>
       <t>
         Point-to-point links between two Inside Routers are
         considered to be Inside Area links. LAN links which have a
         pseudonode LSP in the Level 1 LSDB are considered to be
         Inside Area links.
       </t>
     </section>
     <section title="Responsibilities concerning the Proxy LSP">
       <t>
	 The Area Leader will generate a Proxy LSP that will be
	 flooded across the Inside Area.  Inside Routers MUST ignore
	 the contents of the Proxy LSP other than for flooding.  The
	 Proxy LSP uses the Area Proxy System Identifier as its Source
	 ID.
       </t>
     </section>
   </section>
   <section title="Area Leader Functions">
     <t>
       The Area Leader has several responsibilities.  First, it MUST
       inject the Area Proxy System Identifier into the Level 2
       LSDB. Second, the Area Leader MUST generate the Proxy LSP for
       the Inside Area.
     </t>
     <section title="Area Leader Election">
       <t>
         The Area Leader is selected using the election mechanisms and
         TLVs described in <xref
         target="I-D.ietf-lsr-dynamic-flooding">Dynamic Flooding for
         IS-IS</xref>.
       </t>
     </section>
     <section title="Redundancy">
       <t>
         If the Area Leader fails, another candidate may become Area
         Leader and MUST regenerate the Proxy LSP.  The
         failure of the Area Leader is not visible outside of the area
         and appears to simply be an update of the Proxy
         LSP.
       </t>
       <t>
         For consistency, all Area Leader candidates SHOULD be
         configured with the same Proxy System ID, Proxy Hostname, and
         any other information that may be inserted into the Proxy LSP.
       </t>
     </section>
     <section title="Distributing Area Proxy Information">
       <t>
	 The Area Leader is responsible for distributing information
	 about the area to all Inside Nodes. In particular, the Area
	 Leader distributes the Proxy System ID and the Area SID.
	 This is done using two sub-TLVs of the Area Proxy TLV.
       </t>
       <section title="The Area Proxy System ID Sub-TLV">
         <t>
           The Area Proxy System ID Sub-TLV MUST be used by the Area
           Leader to distribute the Area Proxy System ID. This is an
           additional system identifier that is used by Inside Nodes
           as an indication that Area Proxy is active.  The format of
           this sub-TLV is:
         </t>
         <figure align="left">
           <artwork align="left"><![CDATA[
    0                   1                   2
    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    |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    Proxy System Identifier    |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
         </figure>
         <t>
           <list>
             <t>
               Type: 1
             </t>
             <t>
               Length: length of a system ID (6)
             </t>
             <t>
               Proxy System Identifier: the Area Proxy System
               Identifier.
             </t>
           </list>
           The Area Leader MUST advertise the Area Proxy System
           Identifier Sub-TLV when it observes that all Inside Routers
           are advertising the Area Proxy TLV. Their advertisements
           indicate that they are individually ready to perform Area
           Proxy functionality.  The Area Leader then advertises the
           Area Proxy System Identifier TLV to indicate that the
           Inside Area MUST enable Area Proxy functionality.
         </t>
         <t>
           Other candidates for Area Leader MAY also advertise the
           Area Proxy System Identifier when they observe that all
           Inside Routers are advertising the Area Proxy Router
           Capability.  All candidates advertising the Area Proxy
           System Identifier TLV SHOULD be advertising the same system
           identifier. Multiple proxy system identifiers in a single
           area is a misconfiguration and each unique occurrence
           SHOULD be logged. Systems should use the proxy system
	   identifier advertised by the Area Leader.
         </t>
         <t>
           The Area Leader and other candidates for Area Leader MAY
           withdraw the Area Proxy System Identifier when one or more
           Inside Routers are not advertising the Area Proxy Router
           Capability. This will disable Area Proxy functionality.
           However, before withdrawing the Area Proxy System Identifier,
           an implementation SHOULD protect against unnecessary churn from
           transients by delaying the withdrawal. The amount of delay
           is implementation dependent.
         </t>
       </section>
       <section title="The Area SID Sub-TLV" anchor="AreaSIDsubTLV">
         <t>
           The Area SID Sub-TLV allows the Area Leader to advertise a
           prefix and SID that represents the entirety of the Inside
           Area to the Outside Area.  This sub-TLV is learned by all
           of the Inside Edge Nodes who should consume this SID at
           forwarding time.  The Area SID Sub-TLV has the format:
         </t>
         <figure align="left">
           <artwork align="left"><![CDATA[
    0                   1                   2
    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     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  SID/Index/Label (variable)                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Prefix Length |    Prefix (variable)                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
         </figure>
         <t>
           where:
           <list>
             <t>
               Type: 2
             </t>
             <t>
               Length: variable (1 + SID length)
             </t>
             <t>
               Flags: 1 octet.
             </t>
             <t>
               SID/Index/Label: as defined in <xref target="RFC8667"/>
               Section 2.1.1.1
             </t>
	     <t>
	       Prefix Length: 1 octet
	     </t>
	     <t>
	       Prefix: 0-16 octets
	     </t>
           </list>
         </t>
         <t>
           The Flags octet is defined as follows:
         </t>
         <figure align="left">
           <artwork align="left"><![CDATA[
           0 1 2 3 4 5 6 7
           +-+-+-+-+-+-+-+-+
           |F|V|L|         |
           +-+-+-+-+-+-+-+-+]]></artwork>
         </figure>
         <t>
           where:
           <list>
             <t>
               F: Address-Family Flag.  If unset, then this proxy
               SID is used when forwarding IPv4-encapsulated
               traffic. If set, then this proxy SID is used when
               forwarding IPv6-encapsulated traffic.
             </t>
             <t>
               V: Value Flag.  If set, then the proxy SID carries
               a value, as defined in <xref target="RFC8667"/>
               Section 2.1.1.1.
             </t>
             <t>
               L: Local Flag.  If set, then the value/index carried
               by the proxy SID has local significance, as defined in
	       <xref target="RFC8667"/> Section 2.1.1.1.
             </t>
             <t>
               Other bits:  MUST be zero when originated and ignored when
               received.
             </t>
           </list>
         </t>
       </section>
     </section>
     <section title="Proxy LSP Generation">
       <t>
         Each Inside Router generates a Level 2 LSP, and the Level 2
         LSPs for the Inside Edge Routers will include adjacencies to
         Outside Edge Routers.  Unlike normal Level 2 operations,
         these LSPs are not advertised outside of the Inside Area and
         MUST be filtered by all Inside Edge Routers to not be flooded
         to Outside Routers. Only the Proxy LSP is injected into
         the overall Level 2 LSDB.
       </t>
       <t>
         The Area Leader uses the Level 2 LSPs generated by the Inside
         Edge Routers to generate the Proxy LSP.  This LSP is
         originated using the Area Proxy System Identifier.  The Area
         Leader can also insert the following additional TLVs into the
         Proxy LSP for additional information for the Outside
         Area. LSPs generated by unreachable nodes MUST NOT be
         considered.
       </t>
       <section title="The Protocols Supported TLV">
         <t>
           The Area Leader SHOULD insert a Protocols Supported TLV (129)
           <xref target="RFC1195"/> into the Proxy LSP. The
           values included in the TLV SHOULD be the protocols
           supported by the Inside Area.
         </t>
       </section>
       <section title="The Area Address TLV">
         <t>
           The Area Leader SHOULD insert an Area Addresses TLV (1)
           <xref target="ISO10589"/> into the Proxy LSP.
         </t>
       </section>
       <section title="The Dynamic Hostname TLV">
         <t>
           It is RECOMMENDED that the Area Leader insert the Dynamic
           Hostname TLV (137) <xref target="RFC5301"/> into the Proxy
           LSP. The contents of the hostname may be specified by
           configuration. The presence of the hostname helps to
           simplify debugging the network.
         </t>
       </section>
       <section title="The IS Neighbors TLV">
         <t>
           The Area Leader can insert the IS Neighbors TLV (2) <xref
           target="ISO10589"/> into the Proxy LSP for Outside
           Edge Routers. The Area Leader learns of the Outside Edge
           Routers by examining the LSPs generated by the Inside Edge
           Routers copying any IS Neighbors TLVs referring to Outside
           Edge Routers into the Proxy LSP.  Since the Outside Edge
           Routers advertise an adjacency to the Area Proxy System
           Identifier, this will result in a bi-directional adjacency.
         </t>
         <t>
           An entry for a neighbor in both the IS Neighbors TLV and
           the Extended IS Neighbors would be functionally redundant,
           so the Area Leader SHOULD NOT do this. The Area Leader MAY
           omit either the IS Neighbors TLV or the Extended IS
           Neighbors TLV, but it MUST include at least one of them.
         </t>
       </section>
       <section title="The Extended IS Neighbors TLV">
         <t>
           The Area Leader can insert the Extended IS Reachability TLV
           (22) <xref target="RFC5305"/> into the Proxy LSP. The
           Area Leader SHOULD copy each Extended IS Reachability TLV
           advertised by an Inside Edge Router about an Outside Edge
           Router into the Proxy LSP.
         </t>
         <t>
           If the Inside Area supports Segment Routing and Segment
           Routing selects a SID where the L-Flag is unset, then the
           Area Lead SHOULD include an Adjacency Segment Identifier
           sub-TLV (31) <xref target="RFC8667"/> using the selected
           SID.
         </t>
         <t>
           If the inside area supports SRv6, the Area Leader SHOULD
           copy the "SRv6 End.X SID" and "SRv6 LAN End.X SID" sub-TLVs
           of the extended IS reachability TLVs advertised by Inside
           Edge Routers about Outside Edge Routers.
         </t>
         <t>
           If the inside area supports Traffic Engineering (TE), the
           Area Leader SHOULD copy TE-related sub-TLVs
           <xref target="RFC5305"/> Section 3 to each Extended IS
           Reachability TLV in the Proxy LSP.
         </t>
       </section>
       <section title="The MT Intermediate Systems TLV">
         <t>
           If the Inside Area supports Multi-Topology, then the Area
           Leader SHOULD copy each Outside Edge Router advertisement
           that is advertised by an Inside Edge Router in an MT
           Intermediate Systems TLV into the Proxy LSP.
         </t>
       </section>
       <section title="Reachability TLVs">
         <t>
           The Area Leader SHOULD insert additional TLVs describing
           any routing prefixes that should be advertised on behalf of
           the area. These prefixes may be learned from the Level 1
           LSDB, Level 2 LSDB, or redistributed from another routing
           protocol.  This applies to all of the various types of TLVs
           used for prefix advertisement:
           <list>
             <t>
               IP Internal Reachability Information TLV (128) <xref
               target="RFC1195"/>
             </t>
             <t>
               IP External Reachability Information TLV (130) <xref
               target="RFC1195"/>
             </t>
             <t>
               Extended IP Reachability TLV (135) <xref
               target="RFC5305"/>
             </t>
             <t>
               IPv6 Reachability TLV (236) <xref target="RFC5308"/>
             </t>
             <t>
               Multi-Topology Reachable IPv4 Prefixes TLV (235) <xref
               target="RFC5120"/>
             </t>
             <t>
               Multi-Topology Reachable IPv6 Prefixes TLV (237) <xref
               target="RFC5120"/>
             </t>
           </list>
           For TLVs in the Level 1 LSDB, for a given TLV type and
           prefix, the Area Leader SHOULD select the TLV with the
           lowest metric and copy that TLV into the Proxy LSP.
         </t>
         <t>
           When examining the Level 2 LSDB for this function, the Area
           Leader SHOULD only consider TLVs advertised by Inside
           Routers. Further, for prefixes that represent Boundary
           links, the Area Leader SHOULD copy all TLVs that have
           unique sub-TLV contents.
         </t>
         <t>
           If the Inside Area supports Segment Routing and the
           selected TLV includes a Prefix Segment Identifier sub-TLV
           (3) <xref target="RFC8667"/>, then the sub-TLV SHOULD be
           copied as well. The P-Flag SHOULD be set in the copy of the
           sub-TLV to indicate that penultimate hop popping should not
           be performed for this prefix. The E-Flag SHOULD be reset in
           the copy of the sub-TLV to indicate that an explicit NULL
           is not required. The R-Flag SHOULD simply be copied.
         </t>
       </section>
       <section title="The Router Capability TLV">
         <t>
           The Area Leader MAY insert the Router Capability TLV (242)
           <xref target="RFC7981"/> into the Proxy LSP. If
           Segment Routing is supported by the inside area, as
           indicated by the presence of an SRGB being advertised by
           all Inside Nodes, then the Area Leader SHOULD advertise an
           SR-Capabilities sub-TLV (2) <xref target="RFC8667"/> with
           an SRGB. The first value of the SRGB is the same as
           the first value advertised by all Inside Nodes. The range
           advertised for the area will be the minimum of all ranges
           advertised by Inside Nodes. The Area Leader SHOULD use its
           Router ID in the Router Capability TLV.
         </t>
         <t>
           If SRv6 Capability sub-TLV <xref target="RFC7981"/> is
           advertised by all Inside Routers, the Area Leader should
           insert an SRv6 Capability sub-TLV in the Router Capability
           TLV. Each flag in the SRv6 Capability sub-TLV should be set
           if the flag is set by all Inside Routers.
         </t>
         <t>
           If the Node Maximum SID Depth (MSD) sub-TLV <xref
           target="RFC8491"/> is advertised by all Inside Routers, the
           Area Leader should advertise the intersection of the
           advertised MSD types and the smallest supported MSD values
           for each type.
         </t>
       </section>
       <section title="The Multi-Topology TLV">
         <t>
           If the Inside Area supports multi-topology, then the Area
           Leader SHOULD insert the Multi-Topology TLV (229) <xref
           target="RFC5120"/>, including the topologies supported by
           the Inside Nodes.
         </t>
         <t>
           If any Inside Node is advertising the 'O' (Overload) bit
           for a given topology, then the Area Leader MUST advertise
           the 'O' bit for that topology. If any Inside Node is
           advertising the 'A' (Attach) bit for a given topology, then
           the Area Leader MUST advertise the 'A' bit for that
           topology.
         </t>
       </section>
       <section title="The SID/Label Binding and The Multi-Topology SID/Label Binding SID TLV">
         <t>
           If an Inside Node advertises the SID/Label Binding or
           Multi-Topology SID/Label Binding SID TLV <xref
           target="RFC8667"/>, then the Area Leader MAY copy the TLV
           to the Proxy LSP.
         </t>
       </section>
       <section title="The SRv6 Locator TLV">
         <t>
           If the inside area supports SRv6, the Area Leader SHOULD
           copy all SRv6 locator TLVs <xref target="RFC9352"/>
           advertised by Inside Routers to the Proxy LSP.
         </t>
       </section>
       <section title="Traffic Engineering Information">
         <t>
           If the inside area supports TE, the Area Leader SHOULD
           advertise a TE Router ID TLV (134) <xref target="RFC5305"/>
           in the Proxy LSP. It SHOULD copy the Shared Risk
           Link Group (SRLS) TLVs (138) <xref target="RFC5307"/>
           advertised by Inside Edge Routers about links to Outside
           Edge Routers.
         </t>
         <t>
           If the inside area supports IPv6 TE, the Area Leader SHOULD
           advertise an IPv6 TE Router ID TLV (140)
           <xref target="RFC6119"/> in the Proxy LSP. It SHOULD also
           copy the IPv6 SRLG TLVs (139)  <xref target="RFC6119"/>
           advertised by Inside Edge Routers about links to Outside
           Edge Routers.
         </t>
       </section>
       <section title="The Area SID" anchor="AreaSIDBinding">
	 <t>
	   When SR is enabled, it may be useful to advertise an Area
	   SID which will direct traffic to any of the Inside
	   Edge Routers. The information for the Area SID is
	   distributed to all Inside Edge Routers using the Area SID
	   sub-TLV (<xref target="AreaSIDsubTLV"/>) by the Area Leader.
	 </t>
	 <t>
           The Area Leader SHOULD advertise the Area SID information
           in the Proxy LSP as a Node SID as defined in <xref
           target="RFC8667"/> Section 2.1. The advertisement in the
           Proxy LSP informs the Outside Area that packets directed to
           the SID will be forwarded to one of the Inside Edge Nodes
           and the Area SID will be consumed.
         </t>
	 <t>
	   Other uses of the Area SID and area SID prefix are outside
	   the scope of this document. Documents which define other
	   use cases for the Area SID MUST specify whether the SID
	   value should be the same or different from that used in
	   support of Area Proxy.
	 </t>
       </section>
     </section>
   </section>
   <section title="Inside Edge Router Functions">
     <t>
       The Inside Edge Router has two additional and important
       functions. First, it MUST generate IIHs that appear to have
       come from the Area Proxy System Identifier. Second, it MUST
       filter the L2 LSPs, Partial Sequence Number PDUs (PSNPs), and
       Complete Sequence Number PDUs (CSNPs) that are being advertised
       to Outside Routers.
     </t>
     <section title="Generating L2 IIHs to Outside Routers">
       <t>
         The Inside Edge Router has one or more Level 2 interfaces to
         the Outside Routers.  These may be identified by explicit
         configuration or by the fact that they are not also Level 1
         circuits. On these Level 2 interfaces, the Inside Edge Router
         MUST NOT send an IIH until it has learned the Area Proxy
         System ID from the Area Leader. Then, once it has learned the
         Area Proxy System ID, it MUST generate its IIHs on the
         circuit using the Proxy System ID as the source of the IIH.
       </t>
       <t>
         Using the Proxy System ID causes the Outside Router to
         advertise an adjacency to the Proxy System ID, not to the
         Inside Edge Router, which supports the proxy function. The
         normal system ID of the Inside Edge Router MUST NOT be used
         as it will cause unnecessary adjacencies to form.
       </t>
     </section>
     <section title="Filtering LSP information">
       <t>
         For the area proxy abstraction to be effective the L2 LSPs
         generated by the Inside Routers MUST be restricted to the
         Inside Area. The Inside Routers know which system IDs are
         members of the Inside Area based on the advertisement of the
         Area Proxy TLV. To prevent unwanted LSP information from
         escaping the Inside Area, the Inside Edge Router MUST perform
         filtering of LSP flooding, CSNPs, and PSNPs. Specifically:
         <list>
           <t>
             A Level 2 LSP with a source system identifier that is
             found in the Level 1 LSDB MUST NOT be flooded to an
             Outside Router.
           </t>
           <t>
             A Level 2 LSP that contains the Area Proxy TLV MUST NOT
             be flooded to an Outside Router.
           </t>    
           <t>
             A Level 2 CSNP sent to an Outside Router MUST NOT contain
             any information about an LSP with a system identifier
             found in the Level 1 LSDB. If an Inside Edge Router
             filters a CSNP and there is no remaining content, then
             the CSNP MUST NOT be sent. The source address of the CSNP
             MUST be the Area Proxy System ID.
           </t>
           <t>
             A Level 2 PSNP sent to an Outside Router MUST NOT contain
             any information about an LSP with a system identifier
             found in the Level 1 LSDB. If an Inside Edge Router
             filters a PSNP and there is no remaining content, then
             the PSNP MUST NOT be sent. The source address of the PSNP
             MUST be the Area Proxy System ID.
           </t>
         </list>
       </t>
     </section>
   </section>

   <section anchor="Acknowledgements" title="Acknowledgments">
     <t>
       The authors would like to thank Bruno Decraene and Gunter Van
       De Velde for their many helpful comments. The authors would
       also like to thank a small group that wishes to remain
       anonymous for their valuable contributions.
     </t>

   </section>

   <section anchor="IANA" title="IANA Considerations">
     <t>
       This memo requests that IANA allocate and assign code point 20
       from the IS-IS TLV Codepoints registry for the Area Proxy TLV.
       The registry fields should be: IIH:n, LSP:y, SNP:n, Purge:n.
     </t>
     <t>
       In association with this, this memo requests that IANA create a
       registry for code points for the sub-TLVs of the Area Proxy
       TLV.
       <list>
         <t>
           Name of the registry: Sub-TLVs for TLV 20 (Area Proxy TLV)
         </t>
         <t>
           Required information for registrations: Temporary
           registrations may be made under the Early IANA Allocation
           of Standards Track Code Points policy. <xref
           target="RFC7120"/> Permanent registrations require the
           publication of an RFC describing the usage of the code
           point.
         </t>
         <t>
           Applicable registration policy: RFC Required and Expert Review.
         </t>
         <t>
           Size, format, and syntax of registry entries: Value
           (0-255), Name, and Reference
         </t>
         <t>
           Initial assignments and reservations: IANA is requested to
           assign the following code points:
         </t>
       </list>
     </t>
     <texttable>
       <ttcol align='center'>Value</ttcol>
       <ttcol align='center'>Name</ttcol>
       <ttcol align='center'>Reference</ttcol>
       <c>1</c>
       <c>Area Proxy System Identifier</c>
       <c>This document</c>
       <c>2</c>
       <c>Area SID</c>
       <c>This document</c>
     </texttable>
   </section>

   <section anchor="Security" title="Security Considerations">
     <t>
       This document introduces no new security issues. Security of routing within
       a domain is already addressed as part of the routing protocols
       themselves. This document proposes no changes to those security
       architectures. Security for IS-IS is provided by
       <xref target="RFC5304"/> and <xref target="RFC5310"/>.
     </t>
   </section>
 </middle>

 <!--  *****BACK MATTER ***** -->

 <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">

     &Flooding;

     <reference anchor="ISO10589">
       <front>
         <title>
           Intermediate System to Intermediate System
           Intra-Domain Routing Exchange Protocol for use in Conjunction
           with the Protocol for Providing the Connectionless-mode Network
           Service (ISO 8473)
         </title>
         <author>
           <organization abbrev="ISO">
             International Organization for Standardization</organization>
         </author>
         <date year="2002" month="10"/>
       </front>
       <seriesInfo name="ISO/IEC" value="10589:2002"/>
     </reference>

     <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
     &RFC1195;
     &RFC2119;
     &RFC5120;
     &RFC5301;
     &RFC5304;
     &RFC5305;
     &RFC5307;
     &RFC5308;
     &RFC5310;
     &RFC6119;
     &RFC7981;
     &RFC8174;
     &RFC8402;
     &RFC8667;
     &RFC8491;
     &RFC9352;

   </references>
   <references title="Informative References">

     <reference anchor="Clos" target="http://dx.doi.org/10.1002/j.1538-7305.1953.tb01433.x">
       <front>
         <title>A Study of Non-Blocking Switching Networks</title>

         <author fullname="Charles Clos" initials="C." surname="Clos">
         </author>
         <date month="March" year="1953"/>
       </front>
       <seriesInfo name="The Bell System Technical Journal" value="Vol. 32(2), DOI 10.1002/j.1538-7305.1953.tb01433.x"/>
     </reference>

     &RFC7120;

   </references>
</back>
</rfc>
