<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-lsr-prz-interop-flood-reduction-architecture-00" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3">
  <!-- ***** FRONT MATTER ***** -->

    <front>
    <title>Flooding Reduction Algorithm Interoperability Considerations</title>
    <author initials="T." surname="Przygienda" fullname="Tony Przygienda">
      <organization>Juniper Networks</organization>
      <address>
        <email>prz@juniper.net</email>
      </address>
    </author>
    <author initials="S." surname="Hegde" fullname="Shraddha Hegde">
      <organization>Juniper Networks</organization>
      <address>
        <email>shraddha@juniper.net</email>
      </address>
    </author>
    <date/>
    <abstract>
      <t>In case multiple distributed (including a possible centralized one) flood reduction algorithms
                are deployed at the same
                time in an IGP domain the correctness of the overall solution preconditions certain
                co-operative behavior of involved algorithms. Under such conditions the correctness of the
                overall solution can be derived from resulting graph theoretical concepts easily. This document
                presents the necessary requirements on the deployed algorithms
                and the resulting framework. The situation of multiple
                algorithms in the network in steady state is per se not necessarily
                operationally desirable but must be, if minimal
                network disruption during such procedure is required,
                solved for possible migration scenarios caused by e.g. discovered defects or algorithm improvements.

      </t>
    </abstract>
  </front>
  <middle>
    <section title="Flooding Prunner Framework">
      <section title="Definitions and Axioms">
        <t>Following section will outline a framework of definitions and axioms to allow mixing
                    different flood reduction algorithms, called `prunners` from here on, within an IGP domain
                    in an interoperable manner. </t>
        <t>As first important observation upfront, it will become clear later in this section that full, non-optimized
                    flooding presents a special case of a
                    prunner itself being an operation including all adjacencies and hence we name it the "zero-prunner"
                    or "zero" for short.
        </t>
        <section title="Maximum of One Flooding Prunner on a Node">
          <t>This framework
                        allows maximum of a single active prunner on each node (which was implied by the previous
                        paragraph silently) while it allows changing
                        a specific prunner at any time on any subset of nodes in the network while limiting the impact
                        to the node and the convergence of nodes in its component.</t>
        </section>
        <section title="Component">
          <t>
                        A component is defined as subset of nodes
                        running a prunner algorithm
                        denoted as A where each of the nodes is connected to all others by a path
                        traversing adjacencies with A on both sides. Another way to think about this is that by removing
                        all adjacencies with different prunners on both sides of the adjacency creates several
                        non-connected
                        components (partitions), each running a
                        different prunner. Observe that there may be in the network very well multiple components which
                        are not connected but run the same prunner. We denote a component for prunner A as A| and if
                        two disjoint components running A are present in the network as A|' and A|''.
          </t>
          <t>
                        Observe that zero-prunner also builds components denoted as Z| and its primes.
          </t>
        </section>
        <section title="Flooding Connected Dominating Sets">
          <t>
                        A flooding prunner may choose within its component a subset of links to flood on so that the component
                        remains connected. In other words, there must be a path over such links connecting each node
                        in the component of the prunner. We call this a flooding connected dominating set (more precisely,
                        an edge dominating set which is not necessarily minimal of which e.g. a simple spanning
                        tree is an easily visualized special case) or CDS for short, and denote it for a component A| as A|*.
                        Observe that A|* is not unique to a component and hence can be different for
                        different information flooded, e.g. LSPs originated by different systems. In simple words again,
                        the algorithm must choose a set of links that guarantee at minimum that flooding reaches all the
                        nodes in the component.
          </t>
        </section>
        <section title="Flooding Prunner" anchor="rules">
          <t>
                        Any flood reduction algorithm expecting to interoperate with other algorithms MUST follow the
                        following rules, otherwise the algorithm is basically
                        a ship in the night and cannot be expected to accommodate other algorithms in the network
                        at the same time.
          </t>
          <ol spacing="normal">
                        <li>
                            Each node of a flooding prunner, except zero-prunner, MUST advertise in its flooded
                            node information the
                            prunner currently operating <em>or</em> being capable to operate on the node and it MUST
                            understand such information as advertised by other nodes in the network, i.e. not
                            assume implicitly  that a node is a zero prunner or supporting/running the same algorithm.
                            With that, any prunner
                            can safely assume that any node that does
                            not advertise any additional flood reduction
                            signalling  MUST be a zero-prunner.
                        </li>
            <li>
                            A flooding prunner is an algorithm A building a CDS denoted as A|* over its component
                            that MUST additionally include in flooding CDS all links to adjacent components
                            running non zero-prunner algorithm different from A. A node running algorithm A different
                            from zero-prunner SHOULD include in
                            its flooding CDS all links to zero-prunners but MAY use the known behavior of zero-prunner for
                            further optimizations (though the optimization MUST NOT assume that there is
                            just a single Z| in the network). This is sufficient (but strictly
                            speaking, more than necessary) to
                            guarantee that the overall set of flooding CDS within each component creates
                            an overall flooding CDS over the whole network or in other words, the resulting set of links
                            that still flood connects all nodes in the network.

                        </li>
          </ol>
          <t>
                        This document does not consider further approaches
                        that guarantee a prunner property on e.g. a clique but assumes that such "ship in the night
                        components" can be considered zero prunners due to their implicit guarantee of
                        correct flooding to nodes
                        being part of their component and floods on the edges to all other components.
          </t>
        </section>
      </section>
      <section title="Desirable Properties of the Flooding Prunner Framework">
        <t>
                    Nodes within a component are free to use any kind of prunner algorithm to calculate optimized
                    flooding. Any mode of computation, distributed or centralized will work fine as long as
                    <xref target="rules"/> is respected.
        </t>
        <t>
                    The framework allows but does not assume any centralized instance or election in a
                    component.
                    Computation and communication within each component is completely independent of other
                    components.
        </t>
        <t>
                    Except advertising which prunner is active on a node no configuration is necessary if the prunner
                    algorithm itself does not need further configuration, i.e. is completely independent on each node.
        </t>
        <t>A node is free to choose a different prunner or zero-prunner at any point in time independent
                    of all other nodes. It may end up in another component or become a zero-prunner and the maximum
                    impact is re-computation within two components that see such node leave or join but more likely,
                    only adjoining nodes have to adjust their prunning decisions.
                    In simple words, the framework allows for a node by node deployment or even migration of prunners
                    without network wide re-computation of optimized flooding.
                    This is obviously critical to stability of large networks
                    that may not even converge within reasonable time anymore if the whole network reverts back to
                    zero-prunning due to network wide impact based on election, misconfiguration of a single
                    node or deployment of a single node that affects the flooding optimization of the complete network.
                    However, a prunner within a single component may have a much wider blast radius depending
                    on algorithm and signallilng used.
        </t>
        <t> Though the network provides extreme flexibility in deployment of prunners operationally
                    the most likely scenario is a node-by-node deployment of a single prunner algorithm in the
                    network in addition to zero-prunner
                    and in case of necessity the node-by-node migration to another new prunner.
        </t>
      </section>
      <section title="Example">
        <figure anchor="example1">
          <name>Network of Mixed Prunners</name>
          <artset>
            <artwork align="center" name="" type="svg" originalSrc="example.svg.post"><svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" width="119.70596mm" height="86.222839mm" viewBox="0 0 119.70596 86.222839" version="1.1" id="svg5">
                <defs id="defs2">
    </defs>
                <g id="layer1" transform="translate(-7.1479243,-5.3220751)">
                  <ellipse id="path111" cx="18.146786" cy="20.171129" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3" cx="37.45034" cy="13.736612" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-2" cx="72.876335" cy="71.864174" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-9" cx="93.553551" cy="58.995136" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-1" cx="53.0667" cy="82.41967" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-6" cx="51.909931" cy="25.448881" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-7" cx="33.690849" cy="34.84761" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <rect id="rect227" width="5.7838364" height="5.4946446" x="76.635834" y="16.194742" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <rect id="rect229" width="6.2176242" height="5.9284325" x="87.046738" y="35.425995" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <rect id="rect231" width="7.0851998" height="6.9406037" x="102.2293" y="19.231256" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285" d="m 42.944985,72.587144 -3.252018,1.294782 -2.747322,-2.168939 0.504695,-3.463721 3.252017,-1.294781 2.747323,2.168939 z" transform="translate(-10.844693,-18.652872)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-5" d="m 17.929893,87.335923 -3.252017,1.294782 -2.747323,-2.168939 0.504695,-3.46372 3.252017,-1.294782 2.747323,2.168939 z" transform="translate(4.1932817,-15.471759)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-3" d="m 44.390942,70.707399 -3.252017,1.294781 -2.747323,-2.168939 0.504695,-3.46372 3.252017,-1.294782 2.747323,2.168939 z" transform="translate(1.5905557,-3.7594905)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-56" d="m 29.786757,56.536996 -3.252017,1.294782 -2.747323,-2.168939 0.504695,-3.463721 3.252017,-1.294781 2.747323,2.168939 z" transform="translate(32.389485,-10.84469)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-56-2" d="m 81.552094,57.693765 -3.252017,1.294781 -2.747323,-2.168938 0.504695,-3.463721 3.252017,-1.294781 2.747323,2.168938 z" transform="translate(35.281403,-10.121709)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path d="M 20.30039,22.204531 31.537245,32.814209" id="path588" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 36.393104,33.453591 12.814573,-6.61069" id="path590" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 39.769025,15.614747 9.822221,7.955999" id="path592" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 21.064723,19.198484 13.46768,-4.489226" id="path594" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 54.918834,24.739977 21.717,-5.11657" id="path596" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 93.09368,56.206555 90.644385,41.354427" id="path598" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 81.029077,21.689387 7.506622,13.736608" id="path600" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 82.41967,19.356334 19.80963,2.837744" id="path602" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 102.31759,26.17186 -9.211485,9.254135" id="path604" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 93.264362,39.301253 17.883908,5.240906" id="path606" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 96.064613,57.332884 111.42527,47.164564" id="path608" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 90.990219,60.590496 75.439666,70.268814" id="path610" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 55.747114,80.991421 70.195921,73.292423" id="path612" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 71.647432,69.274226 60.731074,46.267695" id="path614" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 40.791332,62.488803 31.795812,54.0555" id="path618" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 22.534032,69.04445 40.075995,65.429745" id="path620" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 20.86901,67.01187 27.859812,54.448689" id="path622" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 61.348012,41.176276 15.9334,-19.486889" id="path643" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 30.176551,48.553366 32.986674,37.593895" id="path645" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 44.722489,67.449179 6.941664,12.454158" id="path647" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 19.086661,8.5311575 c -2.777356,0.2959778 -5.450634,1.4991745 -7.513844,3.3818535 -2.063209,1.882678 -3.5054823,4.434921 -4.0538303,7.173648 -0.5191494,2.592895 -0.2153666,5.402848 1.1517586,7.666382 0.6835626,1.131767 1.6245607,2.113038 2.7509837,2.805371 1.126424,0.692333 2.438676,1.090404 3.760842,1.09592 0.192807,8.04e-4 0.385687,-0.0066 0.578384,0 0.963255,0.03287 1.893252,0.418004 2.674963,0.981803 0.781711,0.563799 1.425061,1.300034 1.986025,2.083781 1.121928,1.567496 1.950333,3.358303 3.291786,4.742596 1.204271,1.242731 2.777953,2.097119 4.443195,2.56788 1.665243,0.47076 3.421066,0.569423 5.146092,0.431819 3.450051,-0.275209 6.747947,-1.470385 10.075758,-2.421315 2.569279,-0.734178 5.190453,-1.331211 7.648177,-2.379926 2.457724,-1.048715 4.784563,-2.604394 6.233029,-4.849869 0.938763,-1.455311 1.474485,-3.15766 1.609678,-4.884197 0.135193,-1.726536 -0.12433,-3.4755 -0.687203,-5.113297 C 57.056711,18.538012 54.751787,15.76494 52.054527,13.592015 47.501759,9.9242848 41.802173,7.8372245 36.004381,7.0851995 30.348427,6.3515722 24.536082,6.8483535 19.086661,8.5311575 Z" id="path769" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 50.150304,47.082793 c 0.780267,2.309939 2.696883,4.12583 4.910439,5.147987 2.213557,1.022157 4.703508,1.316395 7.140842,1.252836 2.284886,-0.05958 4.600329,-0.434984 6.64221,-1.462101 2.041882,-1.027118 3.79215,-2.764161 4.496094,-4.938722 0.462043,-1.427303 0.45694,-2.991746 0.05096,-4.435995 -0.405984,-1.444249 -1.20422,-2.76754 -2.243496,-3.849475 -2.078551,-2.163869 -5.050646,-3.312369 -8.032788,-3.643332 -1.739159,-0.193015 -3.514174,-0.127866 -5.215896,0.27965 -1.701722,0.407516 -3.329056,1.162994 -4.684438,2.269731 -1.355382,1.106738 -2.431537,2.570339 -3.002217,4.2245 -0.570681,1.654162 -0.621692,3.497109 -0.06171,5.154921 z" id="path773" fill="none" stroke="#000000" stroke-width="0.298223px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 69.116845,12.146056 c -0.02272,3.163489 1.115904,6.21802 2.447634,9.087632 1.331731,2.869612 2.880752,5.661642 3.769989,8.697665 0.830911,2.836889 1.062849,5.810859 1.654363,8.707143 0.591514,2.896284 1.610295,5.826276 3.695687,7.921388 1.930271,1.939267 4.686207,2.997469 7.422134,2.959974 2.735927,-0.03749 5.424451,-1.144117 7.471245,-2.959974 1.920343,-1.703674 3.252887,-3.952701 4.657063,-6.101775 1.40417,-2.149073 2.97237,-4.292686 5.17546,-5.610496 1.59498,-0.95406 3.42645,-1.416317 5.21331,-1.9275 1.78687,-0.511183 3.60087,-1.105829 5.053,-2.265781 1.54111,-1.231027 2.57398,-3.056942 2.92557,-4.997775 0.3516,-1.940834 0.0363,-3.98238 -0.80087,-5.768314 -0.83719,-1.785935 -2.183,-3.316767 -3.79415,-4.45459 -1.61116,-1.137824 -3.48161,-1.888705 -5.41575,-2.275425 -2.96396,-0.592626 -6.02428,-0.340551 -9.034286,-0.06459 -3.010002,0.275964 -6.060507,0.572181 -9.040207,0.06459 C 87.426133,12.631689 84.518824,11.246739 81.985879,9.3987335 80.562973,8.3605989 79.237307,7.1685983 77.676233,6.3528576 76.895696,5.9449872 76.057348,5.6345954 75.185317,5.5114798 74.313286,5.3883641 73.40535,5.4580476 72.587146,5.7838365 71.395468,6.2583334 70.456597,7.2569079 69.895421,8.4103049 69.334245,9.5637019 69.126056,10.863419 69.116845,12.146056 Z" id="path777" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 108.88072,38.607107 c -1.82131,0.874009 -3.51909,2.054275 -4.81472,3.604252 -1.29562,1.549977 -2.1712,3.487568 -2.27048,5.505291 -0.07,1.423387 0.24667,2.8582 0.86696,4.141232 0.62029,1.283032 1.53973,2.414637 2.63873,3.321906 2.19799,1.814538 5.06911,2.698116 7.91739,2.803171 3.84404,0.141782 7.82099,-1.166466 10.48369,-3.94258 1.33135,-1.388057 2.31376,-3.119983 2.75579,-4.991826 0.44203,-1.871843 0.33367,-3.879976 -0.37045,-5.669781 -0.61181,-1.555164 -1.66264,-2.926753 -2.96863,-3.969458 -1.306,-1.042705 -2.86182,-1.759551 -4.49058,-2.133688 -3.25753,-0.748274 -6.73434,-0.114568 -9.7477,1.331481 z" id="path781" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 73.165531,60.441089 c -1.902136,0.651396 -3.779946,1.408253 -5.494645,2.45813 -2.247479,1.376088 -4.162198,3.221382 -6.103057,5.004033 -1.940858,1.782651 -3.958721,3.538726 -6.332192,4.683895 -2.288025,1.103943 -4.816819,1.596897 -7.204448,2.464642 -1.193814,0.433872 -2.360235,0.966074 -3.400955,1.694318 -1.04072,0.728245 -1.955054,1.660881 -2.552824,2.781643 -0.676731,1.268806 -0.925157,2.752958 -0.749649,4.180203 0.175508,1.427246 0.767519,2.793969 1.647808,3.931038 1.760579,2.274136 4.618825,3.553632 7.488402,3.745627 3.543015,0.237053 7.041972,-1.058301 10.071885,-2.909995 3.029913,-1.851695 5.680707,-4.249246 8.436391,-6.488745 5.695852,-4.628925 11.981013,-8.662613 18.942066,-10.989287 2.102552,-0.70276 4.259412,-1.247666 6.321092,-2.06257 2.061681,-0.814904 4.054851,-1.926982 5.535772,-3.576669 0.984793,-1.097025 1.723523,-2.420322 2.098253,-3.846109 0.37473,-1.425788 0.38042,-2.952592 -0.0256,-4.369776 -0.40606,-1.417183 -1.228,-2.718814 -2.361055,-3.661933 -1.133057,-0.943119 -2.576136,-1.517924 -4.049438,-1.569604 -1.588811,-0.05573 -3.145544,0.481472 -4.560998,1.205293 -1.415453,0.723821 -2.725801,1.636152 -4.114755,2.409606 -4.217049,2.348309 -9.025553,3.352452 -13.592013,4.91626 z" id="path785" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 23.569134,43.957156 c -1.962889,1.662351 -3.10852,4.087431 -3.962889,6.513621 -0.854369,2.42619 -1.484483,4.949968 -2.688524,7.22299 -1.295192,2.445098 -3.204,4.504231 -4.729364,6.812757 -0.762681,1.154262 -1.433317,2.380271 -1.857308,3.697175 -0.4239908,1.316905 -0.5945372,2.731863 -0.3539313,4.094256 0.2713033,1.536214 1.0652923,2.963121 2.1717493,4.062808 1.106457,1.099687 2.515578,1.877066 4.015181,2.306888 2.999208,0.859643 6.261492,0.327885 9.140237,-0.875052 1.887426,-0.788696 3.644671,-1.852444 5.446417,-2.821015 1.801745,-0.968571 3.678785,-1.853038 5.687466,-2.239842 2.288224,-0.440635 4.647346,-0.217993 6.972444,-0.373055 1.16255,-0.07753 2.326784,-0.251997 3.424441,-0.642741 1.097657,-0.390744 2.130175,-1.006798 2.905939,-1.876121 0.953642,-1.068653 1.478687,-2.486079 1.567302,-3.915625 0.08862,-1.429545 -0.243205,-2.868167 -0.842807,-4.168909 C 49.266284,59.153807 47.070658,57.158332 44.824732,55.380235 41.65231,52.868633 38.244681,50.619653 35.425997,47.71665 34.244055,46.499351 33.167219,45.168539 31.843113,44.107621 31.18106,43.577163 30.457518,43.116424 29.67055,42.799592 28.883583,42.482759 28.030666,42.312664 27.18403,42.3666 c -1.33654,0.08515 -2.592903,0.72504 -3.614896,1.590556 z" id="path789" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <text xml:space="preserve" x="33.401653" y="31.377314" id="text847" font-style="normal" font-weight="normal" font-size="10.5833px" font-family="sans-serif" fill="#000000" fill-opacity="1"  stroke-width="0.264583">
                    <tspan id="tspan845" x="33.401653" y="31.377314" stroke-width="0.264583"/>
                  </text>
                  <text xml:space="preserve" x="31.811098" y="26.027262" id="text909" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan907" x="31.811098" y="26.027262" stroke-width="0.264583">A|'</tspan>
                  </text>
                  <text xml:space="preserve" x="73.45472" y="65.212761" id="text913" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan911" x="73.45472" y="65.212761" stroke-width="0.264583">A|''</tspan>
                  </text>
                  <text xml:space="preserve" x="30.220545" y="75.189873" id="text917" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan915" x="30.220545" y="75.189873" stroke-width="0.264583"/>
                  </text>
                  <text xml:space="preserve" x="28.774584" y="63.333004" id="text921" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan919" x="28.774584" y="63.333004" stroke-width="0.264583">Z|'</tspan>
                  </text>
                  <text xml:space="preserve" x="63.477604" y="47.716644" id="text925" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan923" x="63.477604" y="47.716644" stroke-width="0.264583">Z|''</tspan>
                  </text>
                  <text xml:space="preserve" x="111.77264" y="54.801846" id="text929" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan927" x="111.77264" y="54.801846" stroke-width="0.264583">Z|'''</tspan>
                  </text>
                  <text xml:space="preserve" x="88.637291" y="28.629992" id="text933" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan931" x="88.637291" y="28.629992" stroke-width="0.264583">B|</tspan>
                  </text>
                </g>
              </svg>
            </artwork>
            <artwork align="center" name="" type="ascii-art" originalSrc="example.ascii-art">Included in HTML/PDF only</artwork>
          </artset>
        </figure>
        <t>
                    <xref target="example1"/> visualizes a network with three prunners running, two components
                    with prunner A, one with prunner B and three components running zero-prunner, annotated hence
                    as Z|', Z|'' and Z|'''. CDS within components are not visualized since they do not contribute
                    to further understanding but the links that are included to connect the CDS of the component following
                    <xref target="rules"/> are made fat. Obviously the overall graph is connected despite
                    several algorithms and components the network encompasses on such, most likely not very likely,
                    deployment.
        </t>
        <t>
                    <xref target="example1"/> also visualizes why the overall CDS can be easily more than a
                    spanning tree of the overall network. A node seeing locally its neighbor running another algorithm
                    cannot decide easily based simply on local knowledge whether the link should be included in
                    flooding but could do so based on the overall view of the network of course and by some
                    tie-breaking an algorithm to prune overall coverage to a spanning tree could be devised.
                    Due to possible resulting long flooding paths and one link minimal cuts such an algorithm
                    is not considered here. Of course in the future such an algorithm can be proposed with the
                    nodes advertising whether they run such a 'prunner-of-prunners' while the absence of
                    prunning can be denoted as 'zero-meta-prunner' to extend the symmetry of this solution recursively.
        </t>
      </section>
      <!--
            <section title="Signalling" anchor="tlvs">
                <t>
                    The only signalling necessary is a Sub-TLV of the IS-IS Router Capability TLV-242 that is defined in
                    <xref target="RFC7981"/> with the following format. The Sub-TLV MUST be advertised by a node
                    that is actively running any prunner except zero-prunner and the absence of this Sub-TLV
                    signifies a node being a 'zero-prunner'.
                </t>


                <figure align="left">
                    <artwork align="left" type="ascii-art"><![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    |        Algorithm              |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
                </figure>

                <ul>
                    <li>Type: TBD1</li>

                    <li>Length: 2</li>


                    <li>Algorithm: a numeric identifier in the range 0 .. 2^16-1 that
                        identifies the algorithm used to calculate CDS (flooding
                        topology) of the component from the IGP Flooding Prunner Registry
                        as assigned per <xref target="IGP_IANA"/>.</li>
                </ul>

            </section>

            -->

        </section>
    <!-- 1 -->
        <section title="Security Considerations" toc="default">
      <t>This document outlines framework for modifications to an IGP protocol for operation on high density network
                topologies. Implementations SHOULD implement the according cryptographic authentication, as described in e.g. <xref target="RFC5304"/>, and should enable other security measures in accordance with best common
                practices for the relevant IGP protocol.
      </t>
    </section>
    <!-- end of security considerations -->

        <!--
        <section anchor="IGP_IANA" title="IANA Section">
            <t>IANA is requested to set up a registry called "IGP Flooding Prunner Type" under the existing "Interior Gateway
                Protocol (IGP) Parameters" IANA registry.</t>

            <t>Values in this registry come from the range 0 .. 2^16-1.</t>

            <t>
                The following values are defined:</t>
            <ul>

                <li>
                    0-255: Reserved with values aligned with algorithm numbers in <em>draft-dynamic-flooding</em>.
                </li>
                <li>
                    256: MANET Based Algorithm described in this document.
                </li>
                <li>
                    257 .. 32767: Standardized distributed algorithms assigned in the registry.
                </li>

                <li>32767 ..  65534: Private algorithms. Individual
                    values are to be assigned according to the "Private Use"
                    policy defined in <xref target="RFC8126"/>.</li>

                <li>65535: Reserved</li>
            </ul>
        </section>

        -->

        <!-- 2 -->
        <section title="Contributors" toc="default">
      <t>The following people have contributed to this draft and are mentioned without any particular
                order: Acee Lindem, Raj Chetan.
      </t>
    </section>
    <!-- end of contributors -->

    </middle>
  <back>
    <references title="Normative References">
      <reference anchor="RFC7981" target="https://www.rfc-editor.org/info/rfc7981" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7981.xml">
        <front>
          <title>IS-IS Extensions for Advertising Router Information</title>
          <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
          <author fullname="S. Previdi" initials="S." surname="Previdi"/>
          <author fullname="M. Chen" initials="M." surname="Chen"/>
          <date month="October" year="2016"/>
          <abstract>
            <t>This document defines a new optional Intermediate System to Intermediate System (IS-IS) TLV named CAPABILITY, formed of multiple sub-TLVs, which allows a router to announce its capabilities within an IS-IS level or the entire routing domain. This document obsoletes RFC 4971.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7981"/>
        <seriesInfo name="DOI" value="10.17487/RFC7981"/>
      </reference>
      <!--
            <reference anchor="ISO10589">
                <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)
                    </title>

                    <author>
                        <organization abbrev="ISO">International Organization for Standardization</organization>
                    </author>

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

                <seriesInfo name="ISO/IEC" value="10589:2002, Second Edition"/>
            </reference>
            -->

        </references>
    <!-- end of normative references -->

        <references title="Informative References">
      <reference anchor="RFC5304" target="https://www.rfc-editor.org/info/rfc5304" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5304.xml">
        <front>
          <title>IS-IS Cryptographic Authentication</title>
          <author fullname="T. Li" initials="T." surname="Li"/>
          <author fullname="R. Atkinson" initials="R." surname="Atkinson"/>
          <date month="October" year="2008"/>
          <abstract>
            <t>This document describes the authentication of Intermediate System to Intermediate System (IS-IS) Protocol Data Units (PDUs) using the Hashed Message Authentication Codes - Message Digest 5 (HMAC-MD5) algorithm as found in RFC 2104. IS-IS is specified in International Standards Organization (ISO) 10589, with extensions to support Internet Protocol version 4 (IPv4) described in RFC 1195. The base specification includes an authentication mechanism that allows for multiple authentication algorithms. The base specification only specifies the algorithm for cleartext passwords. This document replaces RFC 3567.</t>
            <t>This document proposes an extension to that specification that allows the use of the HMAC-MD5 authentication algorithm to be used in conjunction with the existing authentication mechanisms. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5304"/>
        <seriesInfo name="DOI" value="10.17487/RFC5304"/>
      </reference>
      <reference anchor="RFC5449" target="https://www.rfc-editor.org/info/rfc5449" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5449.xml">
        <front>
          <title>OSPF Multipoint Relay (MPR) Extension for Ad Hoc Networks</title>
          <author fullname="E. Baccelli" initials="E." surname="Baccelli"/>
          <author fullname="P. Jacquet" initials="P." surname="Jacquet"/>
          <author fullname="D. Nguyen" initials="D." surname="Nguyen"/>
          <author fullname="T. Clausen" initials="T." surname="Clausen"/>
          <date month="February" year="2009"/>
          <abstract>
            <t>This document specifies an OSPFv3 interface type tailored for mobile ad hoc networks. This interface type is derived from the broadcast interface type, and is denoted the "OSPFv3 MANET interface type". This memo defines an Experimental Protocol for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5449"/>
        <seriesInfo name="DOI" value="10.17487/RFC5449"/>
      </reference>
      <reference anchor="RFC5614" target="https://www.rfc-editor.org/info/rfc5614" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5614.xml">
        <front>
          <title>Mobile Ad Hoc Network (MANET) Extension of OSPF Using Connected Dominating Set (CDS) Flooding</title>
          <author fullname="R. Ogier" initials="R." surname="Ogier"/>
          <author fullname="P. Spagnolo" initials="P." surname="Spagnolo"/>
          <date month="August" year="2009"/>
          <abstract>
            <t>This document specifies an extension of OSPFv3 to support mobile ad hoc networks (MANETs). The extension, called OSPF-MDR, is designed as a new OSPF interface type for MANETs. OSPF-MDR is based on the selection of a subset of MANET routers, consisting of MANET Designated Routers (MDRs) and Backup MDRs. The MDRs form a connected dominating set (CDS), and the MDRs and Backup MDRs together form a biconnected CDS for robustness. This CDS is exploited in two ways. First, to reduce flooding overhead, an optimized flooding procedure is used in which only (Backup) MDRs flood new link state advertisements (LSAs) back out the receiving interface; reliable flooding is ensured by retransmitting LSAs along adjacencies. Second, adjacencies are formed only between (Backup) MDRs and a subset of their neighbors, allowing for much better scaling in dense networks. The CDS is constructed using 2-hop neighbor information provided in a Hello protocol extension. The Hello protocol is further optimized by allowing differential Hellos that report only changes in neighbor states. Options are specified for originating router-LSAs that provide full or partial topology information, allowing overhead to be reduced by advertising less topology information. This memo defines an Experimental Protocol for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5614"/>
        <seriesInfo name="DOI" value="10.17487/RFC5614"/>
      </reference>
      <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
        <front>
          <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
          <author fullname="M. Cotton" initials="M." surname="Cotton"/>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <author fullname="T. Narten" initials="T." surname="Narten"/>
          <date month="June" year="2017"/>
          <abstract>
            <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
            <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
            <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="26"/>
        <seriesInfo name="RFC" value="8126"/>
        <seriesInfo name="DOI" value="10.17487/RFC8126"/>
      </reference>
    </references>
    <!-- end of informative references -->

    </back>
</rfc>
