Re: updated draft-baker-ipv6-isis-dst-src-routing-07

David Lamparter <[email protected]>
Newsgroups gmane.ietf.isis
Message-ID <20170718161913.GP773745@eidolon>
On Tue, Jul 18, 2017 at 11:35:42AM +0200, David Lamparter wrote:
> And, finally, #3, I (still, gah) have some pending edits addressing some
> feedback Tony raised;  correlated with previous question, I'm not sure
> whether I should just repost it as individual draft ASAP?  (and/or
> how/whether this interacts with the adoption call.

I finally understood to be less angsty about it and just push things;
the updated version will be up in a minute.  I've included the relevant
diff below for easier reference.

I believe this addresses all feedback provided by both Tony and Chris --
it's significantly more verbose in describing mixed-network behaviour;
other than addressing possibly ambiguous pieces there is no change to
operation.

Cheers,


-David


diff (without procedural changes, e.g. date & xrefs):

@@ -268,15 +268,91 @@
           not support D/S routing will then -undetectably- lead to incorrect
           routing decisions, possibly including loops.</t>
 
-        <t>As this compatibility mechanism is not considered optional, M-ISIS
-          MUST therefore be implemented for supporting the protocol outlined in
-          this document.  Even installations that previously used only MTID 0
-          (i.e. no M-ISIS) would need to start using MTID TBD-MT0.</t>
+        <t>Therefore, all routers participating in D/S routing MUST implement
+          M-ISIS and participate in the appropriate D/S topology per the table
+          above.  Conversely, routers not supporting D/S routing (or not
+          configured to participate) MUST NOT participate in these topologies.
+          Even installations that previously used only MTID 0 (i.e. no M-ISIS)
+          would need to start using M-ISIS on all D/S routers.  This results
+          in correct operation in the face of partial deployment of D/S
+          routing.</t>
+
+        <t>Note it is implied by the separate topology that there is a separate
+          SPF calculation for that topology - using only the participants of
+          that topology - and D/S routes use paths according to the result from
+          that calculation.  This is an aspect of Multi-topology operation
+          itself, not this document.</t>
+
+        <t>Routers MUST NOT advertise non-D/S routing information using a
+          D/S-Routing MTID.  This includes both reachability information
+          with a source prefix TLV with value ::/0, as well as without a
+          source prefix sub-TLV.  On receipt, routers MUST ignore any
+          reachability information in a D/S-Routing MTID that does not have
+          non-default source prefix information.</t>
+
+        <t>To limit complexity, each IPv6 Reachability TLV in a D/S-Routing
+          MTID MUST have exactly one Source Prefix sub-TLV.  Routers MUST NOT
+          advertise TLVs with more than one Source Prefix sub-TLV, and MUST
+          ignore any received TLV with more than one Source Prefix sub-TLV.</t>
 
         <t>Systems that use topology IDs different than the values reserved by
           IANA should apply the considerations from this section
           analogously.</t>
       </section>
+
+      <section title="Migration and partial deployments">
+        <t>The Multi-topology mechanism described in the previous section
+          introduces a distinct, independently operating topology that covers
+          D/S routers.  This easily allows partial and incremental deployments.
+        </t>
+
+        <t>Such deployments then contain one or more D/S "subdomains" of
+          neighboring routers that have D/S routing capability.  Since shortest
+          paths for D/S routes are calculated using a separate topology,
+          traffic routed on D/S routes will be forwarded inside such a
+          subdomain until it reaches the router originating the
+          reachability.</t>
+
+        <t>Routers unaware or not participating in D/S routing will in such a
+          case forward traffic according to only non-D/S routes.  This can
+          produce 2 distinct outcomes:
+          <list style="numbers">
+            <t>Traffic traverses a D/S router, where a more specific D/S route
+              matches (and SPF in the D/S topology has found a valid path).
+              It is then kept inside the D/S subdomain, reaching
+              an originator of the D/S route.</t>
+            <t>Traffic reaches a system originating a non-D/S route or is
+              considered unroutable even without regard to D/S routes.</t>
+          </list>
+        </t>
+
+        <t>Since the latter case provides no guarantee that there is no D/S
+          route in the routing domain that could have matched, operators must
+          pay careful attention to where non-D/S reachabilities are originated
+          when more specific D/S routes are covered by them.</t>
+
+        <t>A very simple configuration that guarantees correct operation is to
+          ensure covering destination-only reachabilities for D/S routes are
+          originated by D/S routers themselves, and only by them.  This results
+          in traffic entering the D/S subdomain and D/S routes applying.</t>
+
+        <t>Lastly, in partial deployments, disconnected D/S subdomains may
+          exist.  Routers in such a subdomain cannot calculate a path for
+          reachabilities in a subdomain they're not in.  In this case a router
+          MAY discard packets matching a D/S reachability for which it was
+          unable to calculate a valid path.  Alternatively, it MAY behave
+          as if the D/S reachability didn't exist to begin with, i.e. routing
+          the packet using the next less specific route (which could be D/S or
+          non-D/S).  It MUST NOT keep stale SPF calculation results that have
+          become invalid as result of the topology partition.</t>
+
+        <t>This can be remediated by the operator adding connectivity between
+          the subdomains, for example using some tunneling interface.  The new
+          link is then used to form an IS-IS adjacency fusing the previously
+          split subdomains.  The link will then be used to forward D/S traffic,
+          possibly incurring some tunnel encapsulation overhead.  To the IS-IS
+          implementation, this link is no different from other links.</t>
+      </section>
     </section>
 
     <section anchor="new-tlvs"
@@ -312,7 +389,11 @@ IPv6 management    5       TBD-MT5
 
             <t hangText="Prefix:">(source prefix length+7)/8 octets of
             prefix</t>
-          </list></t>
+        </list></t>
+        <t>This Sub-TLV MUST occur exactly once in all reachability originated
+          in any of the D/S topologies listed in <xref target="mtids"/>.  A
+          reachability in these topologies with the Sub-TLV either missing or
+          present more than once MUST be ignored in its entirety.</t>
       </section>
     </section>
 
@@ -400,9 +482,10 @@ IPv6 management    5       TBD-MT5
             routers and reach the last hop as intended, or (b) cross a D/S
             router at some point.</t>
           <t>For case (b), the D/S router may (b1) or may not (b2) have a more
-            specific D/S route.  In case (b2), packets will be routed based on
-            the same decisions that a non-D/S system would apply, so they will
-            reach their last hop without any differences.</t>
+            specific D/S route with a valid path.  In case (b2), packets will
+            be routed based on the same decisions that a non-D/S system would
+            apply, so they will reach their last hop without any
+            differences.</t>
           <t>For case (b1), a break in forwarding behaviour happens for packets
             as they hit the first D/S-capable router, possibly after traversing
             some non-D/S systems.  That router will apply D/S routing - which,
@@ -412,20 +495,37 @@ IPv6 management    5       TBD-MT5
             as intended.</t>
           <t>Packets starting out on a D/S-capable router fall into cases (b1)
             or (b2) as if a non-D/S router routed them first.</t>
-          <t>If, for case (b1), the system knows of the existence of a more
-            specific D/S route, but cannot calculate a valid path, it may
-            either apply non-D/S routing (i.e. not install any route) or
-            discard the packet (i.e. install a discard route).  The next hop
-            will either be a non-D/S system, or a D/S system with the same
-            link-state information (and thus again unable to calculate a valid
-            path -- or, more specifically, won't calculate a path that includes
-            the previous router).</t>
+          <t>For both cases (b1) and (b2), a situation where a D/S router
+            is aware (by flooding) of a more specific D/S route, but can't
+            calculate a valid path (because the MT topology is not contiguous),
+            this is for correctness concerns identical to the D/S route not
+            existing to begin with.  Note below on the correctness of this.</t>
       </list></t>
       <t>The compatibility mechanics thus rest on 2 pillars:
         <list>
           <t>D/S routes will match as more specific if applicable</t>
           <t>Packets will transit into D/S routing but not out of it</t>
       </list></t>
+      <t>Note that the latter assumption holds true even if D/S routers fall
+        back to non-D/S paths if they cannot calculate a shortest path towards
+        the advertising system (either because SPF reaches the maximum path
+        metric, or because there are multiple discontiguous D/S subdomains).
+        This is because if a router A receives a packet routed on a D/S path,
+        this implies the previous router B was able to successfully calculate
+        SPF, via A, and that A has a path towards the originating system with a
+        lower path metric than B.  Conversely, if router A is unable to find
+        a valid path, it is safe to assume router B was unable to do so either,
+        and B forwarded the packet on a path calculated on non-D/S
+        information.</t>
+      <t>Lastly, in terms of application use cases, it is also worth pointing
+        out that loops will always result if (for example on a boundary to
+        an upstream) the prefix routed incoming to the IS-IS domain is not
+        fully covered by routes.  Just as in non-D/S routing, this may cause
+        a less specific (default) route to apply and loop packets back onto
+        the same upstream.  With D/S routing, this can now also occur if the
+        incoming prefix is not covered for all sources.  The solution remains
+        the same:  making sure the entire prefix is covered (for all sources),
+        usually with a discard route.  This is not an IS-IS consideration.</t>
     </section>
 
     <section anchor="log" title="Change Log">
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.