Re: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

"Les Ginsberg (ginsberg)" <ginsberg@cisco.com> Wed, 02 August 2017 18:06 UTC

Return-Path: <ginsberg@cisco.com>
X-Original-To: spring@ietfa.amsl.com
Delivered-To: spring@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EDA31126C22 for <spring@ietfa.amsl.com>; Wed, 2 Aug 2017 11:06:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level:
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1SBLeJru8uEG for <spring@ietfa.amsl.com>; Wed, 2 Aug 2017 11:06:27 -0700 (PDT)
Received: from rcdn-iport-5.cisco.com (rcdn-iport-5.cisco.com [173.37.86.76]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8AB701201F2 for <spring@ietf.org>; Wed, 2 Aug 2017 11:06:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=141552; q=dns/txt; s=iport; t=1501697187; x=1502906787; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=cyMbRsp6bBJU92K32vWpxVC2UV9SVr9f+2oqdG9jdX4=; b=DoeRDcbTAE4jOXELJnZW2susgUDjOB9V5QRun+DH/FG2427gedZLIvM9 y/KfpjIceYMU8rTPsQsq31Mn7cvMPq+9mInoIlL4Y6FikAEBybOzyYibp l4AXubEoy/3/P8b05rzF0vg2w9BtKyob0gPaDOiKPx8sLb0Qg74i9MipL g=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0C3AAD/E4JZ/5xdJa1dGQEBAQEBAQEBAQEBBwEBAQEBgm8+LWSBFAeOB5ADgW6WEA6CAQMhAQyDOoEQTwKENT8YAQIBAQEBAQEBayiFGAEBAQECAQEBCg4BAhBBBAwHBAIBCBEBAwEBFgsBBgcnCxQDBggCBAESCBOJMFwIELAri0oBAQEBAQEBAQEBAQEBAQEBAQEBAQEYBYMoggKBTIFiAYIbgQyEMBABEgEmBxgGCgIHhTUFkTmGMYgSAodRgwOJTYIWhVaDeIZplXoBHzhZJgt3FUmEXjkcgWd2AYc5gSOBDwEBAQ
X-IronPort-AV: E=Sophos; i="5.41,312,1498521600"; d="scan'208,217"; a="59882866"
Received: from rcdn-core-5.cisco.com ([173.37.93.156]) by rcdn-iport-5.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Aug 2017 18:06:23 +0000
Received: from XCH-ALN-002.cisco.com (xch-aln-002.cisco.com [173.36.7.12]) by rcdn-core-5.cisco.com (8.14.5/8.14.5) with ESMTP id v72I6MXQ013114 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Wed, 2 Aug 2017 18:06:22 GMT
Received: from xch-aln-001.cisco.com (173.36.7.11) by XCH-ALN-002.cisco.com (173.36.7.12) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Wed, 2 Aug 2017 13:06:21 -0500
Received: from xch-aln-001.cisco.com ([173.36.7.11]) by XCH-ALN-001.cisco.com ([173.36.7.11]) with mapi id 15.00.1210.000; Wed, 2 Aug 2017 13:06:22 -0500
From: "Les Ginsberg (ginsberg)" <ginsberg@cisco.com>
To: "stephane.litkowski@orange.com" <stephane.litkowski@orange.com>, DECRAENE Bruno IMT/OLN <bruno.decraene@orange.com>, Shraddha Hegde <shraddha@juniper.net>, "spring@ietf.org" <spring@ietf.org>
Thread-Topic: [spring] WG Last Call for draft-ietf-spring-conflict-resolution
Thread-Index: AQHS8Nuokzsm0yt5P0y/+D1uKMVbQqJNamsAgAZpFICACngugIAENtLAgAaTbgCAAHi3gIAAbspggAW0+QCAADBRoIABXH4AgAAxSPA=
Date: Wed, 02 Aug 2017 18:06:21 +0000
Message-ID: <d574c1d1bb104a578462bdb5f78b8416@XCH-ALN-001.cisco.com>
References: <9a7e19b3-7251-2b80-22f9-2045ac4370f8@nokia.com> <84c64d65-430d-9734-5936-235ffc1d0a79@nokia.com> <2307cf5c-f6cf-1862-78f4-b540a93ae7f2@nic.dtag.de> <CY1PR05MB2714CD6720D35EE2511AB3E6D5A40@CY1PR05MB2714.namprd05.prod.outlook.com> <a92a1ad9796e4c9d9e0732852a08d414@XCH-ALN-001.cisco.com> <BN3PR05MB270660621544E65EA06B04F6D5BF0@BN3PR05MB2706.namprd05.prod.outlook.com> <7512_1501238577_597B1531_7512_443_1_53C29892C857584299CBF5D05346208A47828C93@OPEXCLILM21.corporate.adroot.infra.ftgroup> <4599cc42d1a54019a2c36ef53acf5be3@XCH-ALN-001.cisco.com> <30110_1501576113_59803BB1_30110_340_1_8ad8b432-cadb-4204-8c98-a784fd04d970@OPEXCLILM6F.corporate.adroot.infra.ftgroup> <cefd014c912644cab19f740c2e2e3846@XCH-ALN-001.cisco.com> <31728_1501661327_5981888F_31728_392_1_57a14f82-f54c-4ea5-9202-35469a86da12@OPEXCLILM21.corporate.adroot.infra.ftgroup>
In-Reply-To: <31728_1501661327_5981888F_31728_392_1_57a14f82-f54c-4ea5-9202-35469a86da12@OPEXCLILM21.corporate.adroot.infra.ftgroup>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.24.27.157]
Content-Type: multipart/alternative; boundary="_000_d574c1d1bb104a578462bdb5f78b8416XCHALN001ciscocom_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/spring/0COg4Lz2oHMs8Lj6C-SudEaU3TQ>
Subject: Re: [spring] WG Last Call for draft-ietf-spring-conflict-resolution
X-BeenThere: spring@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Stacked Tunnels for Source Routing \(STATUS\)." <spring.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spring>, <mailto:spring-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spring/>
List-Post: <mailto:spring@ietf.org>
List-Help: <mailto:spring-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spring>, <mailto:spring-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Aug 2017 18:06:32 -0000

Stephane -

I think it is important to look at conflict resolution in the context of the SR architecture. Much of what you discuss below is inconsistent with the SR architecture and as a result it creates new problems that actually don't need to be solved.
Let me see if I can get us back on the same page.

As previously quoted,  https://www.ietf.org/id/draft-ietf-spring-segment-routing-12.txt Section 2<https://www.ietf.org/id/draft-ietf-spring-segment-routing-12.txt%20Section%202>: (emphasis added)

"SR Global Block (SRGB): local property of an SR node.  In the MPLS
   architecture, SRGB is the set of local labels reserved for global
   segments."

>From the same draft, Section 3 we have other relevant statements:

"An IGP-Prefix segment is an IGP segment attached to an IGP prefix.
   An IGP-Prefix segment is global (unless explicitly advertised
   otherwise) within the SR/IGP domain."

"In the context of an instance and a topology, multiple Prefix-SID's
   MAY be allocated to the same IGP Prefix as long as the algorithm
   value is different in each one."

There are a number of conclusions which follow from these statements.

1)An SRGB is a node property, it is NOT a per protocol property

2)The SID associated with a prefix is a property of the prefix, not the protocol which advertises it.

3)One - and only one - SID is associated with a given prefix/algorithm

4)The SR architecture is NOT defining a per protocol forwarding plane - it is defining an SR forwarding plane

If we try to support per protocol SRGBs and allow per protocol SID assignments, this leads to a number of problems, some of which you have mentioned in your posts.
By far the biggest issue is that if we allow per protocol SID assignments, then we are actually REQUIRED to support non-overlapping per protocol SRGBs, which in turn means that we are REQUIRED to support multiple incoming labels for the same prefix.

This follows because a node has no way to determine which protocol will provide the winning route on its neighbors. It would therefore have to program all of the SIDs which the neighbor might use to forward traffic.
This in turn leads to the requirement for per protocol non-overlapping SRGBs because if we allow the same SID to be used for different prefixes so long as the advertising protocols are different, we then have to have a way of mapping that same SID to two different local labels. The only way to guarantee that is possible is to have per protocol non-overlapping SRGBs.

All of this is in conflict with the SR architecture as per the excerpts I have quoted above - which is why the conflict resolution drafts specifies


·         one conflict resolution database populated by advertisements provided by all protocols/SRMSs.

·         SRGB inconsistency detection on a per node basis

If there is concern that the current language in the draft is not explicit enough, I am happy to work on adding clarifying language.
But it is crucial to understand and agree that the choice to use a protocol independent database and per node SRGB is required by the SR Architecture.

A few more comments inline...


From: stephane.litkowski@orange.com [mailto:stephane.litkowski@orange.com]
Sent: Wednesday, August 02, 2017 1:09 AM
To: Les Ginsberg (ginsberg); DECRAENE Bruno IMT/OLN; Shraddha Hegde; spring@ietf.org
Subject: RE: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

No it's not, it's definitely not enough precise.

Telling that you include all the entries (from all protocols) in the conflict resolution does not mean that cross protocol info may be used when programming the FIB. That's a different story.

And speaking as an operator, from a troubleshooting point of view it becomes a nightmare when you use some information coming from the protocol and some other informations coming from another source of information.

So let's say that I have two concurrent routes for a prefix on a node N:

OSPF 10.0.0.1/32 preference 100 via Te0/1 (N1)
ISIS 10.0.0.1/32 preference 200 via Te0/2 (N2)

N, N1 and N2 advertise SRGB [1000,2000] in OSPF and SRGB [2000,3000] in ISIS.
N has the following SID mappings:
OSPF mappings:
(192,10.0.0.1/32,100,1,0,0)
(128,10.0.0.1/32,200,300,0,0)

ISIS mappings:
(192,10.0.0.1/32,300,1,0,0)
(128,10.0.0.1/32,400,300,0,0)


So to program the LFIB on N, I will take the ISIS route which is the active route in the RIB. I will so consider the ISIS SRGB of N but from a conflict resolution point of view, I will use the OSPF advertisement (192,10.0.0.1/32,100,1,0,0)

So my LFIB entry will be:
Inlabel: 2100, swap 2100 via Te0/2

In addition to that, the draft proposes a lower preference for BGP mappings, which introduces a hierarchy between protocols like a protocol preference.

[Les:] The reason this was introduced was to provide a preference for SIDs associated with intra-area prefix advertisements. It recognizes that, within an IGP area, what is likely to be the case is that all SR capable nodes will have IGP advertisements, but BGP is only enabled on a few nodes (the ABRs). So the conflict resolution database on all nodes will have the IGP SID advertisements - but only a few nodes will have the BGP SID advertisements. By making BGP advertisements least preferred we insure that the nodes running BGP make conflict resolution choices which are consistent with the nodes which have only the IGP advertisements.

Where is the global logic here ? It is really weird to retrieve some SR information from one protocol, and some others from another protocol.

[Les:] The SR information being advertised is scoped by the node - not by the protocol. It is therefore not "weird" to maintain a protocol independent database but logical to do so.
I think this may seem "weird" because you are likely aware that some implementations have chosen to use a per protocol configuration model for SRGB and prefix SIDs. This is an unfortunate choice in my opinion as it introduces the possibility for local configuration inconsistency where none was intended. But, as always, the normative behavior defined by the draft is not meant to mandate how an  implementation supports the normative behavior. But the solution defined in the draft  MUST conform to SR architecture. This in turn may influence implementation strategies i.e. an implementation may move away from per protocol configuration, but that choice is out of scope for the draft itself.

I think we are touching things here that are not clearly defined by the architecture: the multi protocol behavior has never been clearly described, so we probably need to think about it and define something before rushing on the conflict resolution.

I see two main approaches:

a)      We can consider that OSPF-SR extensions and the regular OSPF protocol used for routing as completely separate things (same for IS-IS). So OSPF-SR extensions are considered as a label distribution protocol like LDP is. As LDP, it requires some routing informations to be used (that may come from the OSPF routing protocol or even IS-IS). So SR builds a kind of label information base (LIB) like LDP and then the routing process combines the LIB info with the active route to build the FIB entry. This approach is similar to what you try to achieve except that I suppose here that all the SR informations should come from a single source (so if we pick a binding from OSPF, we consider to use the OSPF SRGB). Thus as we have multiple sources of labels: OSPF-SR, ISIS-SR, BGP-SR, even possibly LDP, we also need to create a preference mechanism between the protocols here as we do for the routing table. In such a scenario, when doing an IGP migration, I need to migrate the label distribution protocol part and also the routing protocol part possibly in multiple steps (by using preferences on each side). We need to define how we can distribute SR informations from one protocol to the other.



In this approach, using the example above, we should program this entry in the LFIB: Inlabel 1100 swap 1100 via Te0/2 (label comes from OSPF-SR, routing comes from the IS-IS active route)


b)      We can consider another approach where the SR informations are tied with the routing protocol. When multiple protocols are running, we still need to take care of the conflict resolution between the protocols, but this may be solved easily by using the existing protocol preference of the RIB as the first criteria. So a mapping will never be used if it does not correspond to an active route from the same protocol.



In this approach, using the example above, we should program this entry in the LFIB: Inlabel 2300 swap 2300 via Te0/2 (label comes from ISIS-SR, routing comes from the IS-IS active route). The OSPF mappings for 10.0.0.1/32 are not considered as there is no OSPF active route.



[Les:] Solution "a" is closer to what the draft defines than "b". But, as detailed above, per protocol SRGB leads to other issues and is inconsistent w the SR architecture.
As far as how to "distribute SR information from one protocol to the other", this is already supported by at least some implementations. When routes are redistributed between protocols the SIDs from the source protocol are passed to the destination protocol.
This of course does not imply support for per protocol SIDs -which - as detailed above - is inconsistent with the SR Architecture.

   Les

The approach b) is more simpler to understand from an operation point of view (single preference to manage, single source of information) while a) has some similarities with what we do when using LDP with the complexity of having multiple label distribution protocols involved. In any case, we need to document clearly the approach taken.


Brgds,



From: Les Ginsberg (ginsberg) [mailto:ginsberg@cisco.com]
Sent: Tuesday, August 01, 2017 18:29
To: LITKOWSKI Stephane OBS/OINIS; DECRAENE Bruno IMT/OLN; Shraddha Hegde; spring@ietf.org<mailto:spring@ietf.org>
Subject: RE: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

Stephane -

The draft states (as this thread has discussed):

Section 3.7

"In cases where multiple routing protocols are in use mapping
      entries advertised by all routing protocols MUST be included."

In what way is this not clear??

   Les

From: stephane.litkowski@orange.com<mailto:stephane.litkowski@orange.com> [mailto:stephane.litkowski@orange.com]
Sent: Tuesday, August 01, 2017 1:28 AM
To: Les Ginsberg (ginsberg); DECRAENE Bruno IMT/OLN; Shraddha Hegde; spring@ietf.org<mailto:spring@ietf.org>
Subject: RE: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

Hi Les,

There is something unclear to me here.
Let's say we have the following entries:
OSPF mappings:
(192,10.0.0.1/32,100,1,0,0)
(128,10.0.0.1/32,200,300,0,0)

ISIS mappings:
(192,10.0.0.1/32,300,1,0,0)
(128,10.0.0.1/32,400,300,0,0)


There is a prefix conflict here because we have 4 SIDs for 10.0.0.1/32. The current proposal should pick (192,10.0.0.1/32,100,1,0,0) learned from OSPF because of smallest start SID.
Now let's say that the active route in the RIB is an IS-IS route because of local protocol preference, the route is : IS-IS 10.0.0.1/32 nexthop 42.42.42.42 via Te0/1
So do you program the following FIB entries (consider SRGB start at 16000 for every nodes) :
10.0.0.1/32 via Te0/1 push 16100
Inlabel 16100 via Te0/1 swap 16100

This means that you defacto allows cross protocols information use (e.g. ISIS route using an OSPF mapping). The text is not crystal clear on that point.

Or the other possibility is to not use the SID information because it does not comes from the right protocol. So you only program the FIB but not the LFIB:
10.0.0.1/32 via Te0/1.

Could you clarify ?


Thanks,


From: spring [mailto:spring-bounces@ietf.org] On Behalf Of Les Ginsberg (ginsberg)
Sent: Saturday, July 29, 2017 00:25
To: DECRAENE Bruno IMT/OLN; Shraddha Hegde; spring@ietf.org<mailto:spring@ietf.org>
Subject: Re: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

Bruno -

Please reread "Section 3.7.  Guaranteeing Database Consistency.".
The draft is explicit that "entries advertised by all routing protocols MUST be included".

Also please read my recent response to  Shraddha as regards the pitfalls of using protocol specific databases for conflict resolution.

    Les


From: bruno.decraene@orange.com<mailto:bruno.decraene@orange.com> [mailto:bruno.decraene@orange.com]
Sent: Friday, July 28, 2017 3:43 AM
To: Shraddha Hegde; Les Ginsberg (ginsberg); spring@ietf.org<mailto:spring@ietf.org>
Subject: RE: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

Always as an individual contributor, thanks to Shraddha comments, a few point below


1)      Conflict resolution per LSDB or across LSDB
I've haven't re-read all text, but I'm not certain that the current text specifies whether the conflict resolution must be run on a per LSDB basis, or across all LSDB. I think we'll agree that we all implementation be consistent on this point, hence this need to be specified.



2)      Conflict resolution per LSDB or across LSDB ?
I believe Les means across LSDB but Shraddha raised interesting questions regarding this, using area/level or IGP transitioning use cases.

a)      Thesis: On the "per LSDB" side:
Running conflict resolution on a per LSDB ensure that this conflict resolution runs on the same data, which is required to get the same result. Otherwise, as per Shraddha's points, (L1L2 routers, different OSPF & IS-IS topologies) we have inconsistencies.


b)      Antithesis: On the "across LSDB" side:
We need consistency across the network, hence across LSDBs.


c)       Synthesis
We seem to have a tradeoff issue as we can't have both. However, it seems to me that the consistency issue with different LSDB is not specific to SR conflict resolution. We can have it with regular IP routing/forwarding. Hence this may favor enforcing consistency within LSDB which we can still enforce.


Some (two) details inlined [Bruno]

From: spring [mailto:spring-bounces@ietf.org] On Behalf Of Shraddha Hegde
Sent: Friday, July 28, 2017 5:31 AM
To: Les Ginsberg (ginsberg); spring@ietf.org<mailto:spring@ietf.org>
Subject: Re: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

Thanks for the response.

   It is important  to keep the network functioning correctly in case of transitioning from
   one protocol to the other.

   Let us assume a case of OSPF SR network transitioning to ISIS SR network.
   Most typical transitioning technique is ships in the night where both protocols will be
   enabled in the network with OSPF having better preference and the issue in ISIS routing do
   not affect the traffic. Once the ISIS deployment is complete, the traffic will be switched
   to ISIS by changing preference.

   In case of OSPF-SR transitioning to ISIS SR, because of the conflict resolution
   rules that the conflicts are protocol independent, it is possible that config mistakes in ISIS
   will bring down the routes in OSPF. The ISIS topology and OSPF topology is not expected to be congruent
   during transition,
   so the conflicts seen on each node combining the two views will not be similar.
   This has potential to cause routing loops/ traffic drops in the network.

   I suggest to add the protocol-preference as one of the parameters in the preference algorithm
   with this being on the top of the list.
   The resultant conflict resolution will be consistent on ISIS topology and OSPF topology
  and is the best suited model for ships in the night transitions.

Pls see inline for other responses.

Rgds
Shraddha


From: Les Ginsberg (ginsberg) [mailto:ginsberg@cisco.com]
Sent: Tuesday, July 25, 2017 1:57 AM
To: Shraddha Hegde <shraddha@juniper.net<mailto:shraddha@juniper.net>>; spring@ietf.org<mailto:spring@ietf.org>
Subject: RE: [spring] WG Last Call for draft-ietf-spring-conflict-resolution


Shraddha -



Thanx for the comments - responses inline.



> -----Original Message-----

> From: spring [mailto:spring-bounces@ietf.org] On Behalf Of Shraddha Hegde

> Sent: Thursday, July 20, 2017 11:44 PM

> To: spring@ietf.org<mailto:spring@ietf.org>

> Subject: Re: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

>

> SPRING WG,

>

> Conflict resolution is an important problem to solve and it is important to

> Standardize this draft.

>

> I generally support the draft but have a few major comments which I hope

> the authors will work on.

>

>

>  1.Conflict resolution and forwarding

>

>             Section 3.4 has the statement

>             "Active Entries in the database may be used in forwarding."

>

>              This is a very loose statement which does not enforce

> implementations to program the forwarding plane

>             with the active database entries.

>             This does not ensure traffic drops are minimized.

>

[Les:] Conflict resolution is only determining which entries are eligible to be used in forwarding. This does not mean that all "active" entries will be used . The most obvious example (but not the only possible one) of this is an SRMS entry that is associated with a prefix which is not actually reachable. So the language in the draft is intentional and is correct.

<Shraddha> The language in the draft is ambiguous and it does not help achieve consistent forwarding behavior across implementations.

                      Prefixes that are not reachable may not be used in forwarding which is acceptable but the draft does not mandate that the reachable prefixes which are active

                    MUST be programmed. Normative language is necessary in the draft w.r.t using active entries in forwarding.





>             The Forwarding plane programming aspects are completely missing in

> the document.

>             A separate section is needed which describes the different aspects

> of programming the forwarding plane.



[Les:] This is NOT in scope for this draft. If you want a description of how SR MPLS forwarding works please see draft-ietf-spring-segment-routing-mpls.



<Shraddha> The point I am bringing up here is not how SR MPLS forwarding works. It is w.r.t to programming the forwarding plane when there is a conflict.



The abstract section has below statement



"In cases where the

   information advertised by a given protocol instance is either

   internally inconsistent or conflicts with advertisements from another

   protocol instance a means of achieving consistent forwarding behavior

   in the network is required."



If the draft is not going to address the forwarding plane detail w.r.t conflicting entries it is definitely not meeting the

The objective described above.



Take an example of a conflict

(192, 192.0.2.1/32, 200, 1, 0, 0)

   (192, 192.0.2.222/32, 200, 1, 0, 0)

   SID 200 has been assigned to 192.0.2.1/32 by the

   first advertisement.

   The second advertisement assigns SID 200 to 192.0.2.222/32.



In this case after applying the preference rules

(192, 192.0.2.1/32, 200, 1, 0, 0)

 Becomes active entry.



As per the text in the draft," it may be used in forwarding" so some implementations

May choose to program forwarding plane and some may not which does not give a consistent forwarding behavior

Across implementations.









>

> 2.  Protocol independent resolution and impact on network migrations

>              In case of network migration from one protocol to other for ex: OSPF-

> SR to ISIS-SR,

>              it is useful to associate protocol preferences on a local node to the SID

> advertisement

>             and feed into the conflict resolution. This would make sure the

> conflicts will always

>             have a winner which is an advertisement from protocol with

> preferred admin-distance.

>

>             There is need for introducing another preference value specific to

> protocol preference

>             and make it the top rule in the preference rule hierarchy.

>

[Les:] "admin distance" is a locally defined preference which is not advertised. It is therefore not possible to include it as a parameter in an algorithm which requires a consistent answer on all nodes throughout the network.


<Shraddha>  In migration cases, topologies across two different protocols are not congruent causing inconsistent behavior.

                       Using admin-distance as an input parameter keeps the conflict resolution with-in the protocol and guarantees

                      Consistent behavior across all the nodes corresponding to that protocol.



                     The drafts tries to address this scenario partially between IGP and BGP by suggesting preference values. But that does not solve the

Problem between two different IGPs.





>             This would also solve the issue of MT-ID numbers being different in

> different protocols

>             as the SIDs would be compared within a protocol advertisement.



[Les:] I do not understand what relationship you see between "protocol preference" and "MT-ID".

MT-ID values are scoped by  the protocol which uses them. For example, OSPFv2 supports a 7 bit MT-ID while IS-IS supports a 12 bit MT-ID. It is therefore possible for non-matching MTIDs to be used by different protocols when advertising routes for the same physical topology. This is why the draft's use of "topology" is not as MTID but rather as a locally scoped identifier. >From Section 3:



" Note: Topology is a locally scoped identifier assigned by each

   router.  Although it may have an association with Multitopology

   Identifiers (MTID) advertised by routing protocols it is NOT

   equivalent to these identifiers.  MTIDs are scoped by a given routing

   protocol.  MTID ranges are protocol specific and there may be

   standardized protocol specific MTID assignments for topologies of a

   specific type (e.g., an AFI specific topology).  As mapping entries

   can be sourced from multiple protocols it is not possible to use a

   network scoped identifier for a topology when storing mapping entries

   in the local database."



Topology is then used to detect different scopes for a mapping entry - which may result in a SID conflict if the same SID is used in different topologies, but it cannot be used as a tiebreaker since its value is local and any preference (e.g., higher value wins)  is not guaranteed to result in consistent answers on all nodes in the network. Which is why we have Section 3.3 Rule #8:



   "8.  If topology IDs are NOT identical both entries MUST be ignored"

<Shraddha> Lets keep this discussion on-hold until we decide on the protocol preference and migration issues.



>

> 3. In case of hierarchical IGP networks with multiple ISIS Levels or OSPF areas,

> It's possible that the

>      conflicts are not visible in entire domain but are visible only on the border

> router as the border routers

>      have the database of both domains.

>     The conflict resolution preference Rules should be enhanced to include the

> Level information in the preference rule.

>     A new parameter called sub-domain should be defined.

>

>                             One could propose using existing SRMS preference values

> and assigning prefixes with preference values

>             based on levels they are advertised in. This introduces more complex

> configuration requirements on the

>             network. The objective of this draft is to achieve consistent

> behaviours in case of misconfigurations and

>             introducing more configurations as a solution does not help.

>

>

>                             Based on the Advertisement originated in ISIS Level or OSPF

> area below values are defined.

>

>                             Level 1 , non-zero OSPF area =1

>                             Level 2, OSPF Area 0 = 2

>                             Non IGPs set subdomain = 0

>

>                                                             Preference algorithm is changed as

>

>     1. Higher protocol preference wins



[Les:] I have explained above why protocol preference cannot be used.



>    2. smaller sub-domain wins

>     3. Higher srms preference value wins

>     4. Smaller range wins

>     5.IPv6 entry wins over IPv4 entry

>     6.Longer prefix length wins

>     7.Smaller starting address (considered as an unsigned integer

>        value) wins

>     8.Smaller algorithm wins

>     9. Smaller topology Id wins >>>>>>>>>>..Moved above SID comparison.

> since the all these rules are applied

>                                                     within protocol it's safe to compare topology IDs

[Les:] No - it isn't - as explained above.

>     10. Smaller starting SID wins

>

[Les:] SIDs are assigned either by the node(s) originating the prefix reachability advertisement or by SRMS advertisements. The latter are level/area agnostic

[Bruno] I'm not sure to undertand what is meant by "level/area agnostic". In IS-IS, SRMS advertisements seems to be able to be scoped on a per area/level basis using the S-flag

https://tools.ietf.org/html/draft-ietf-isis-segment-routing-extensions-13#section-2.4



- and even you are agreeing that we should not change that.

There is then no reason for the SID to be altered as it is advertised into different areas.  Which leads us to the conclusion that SIDs are not level/area specific.



If your concern is that border routers who may have more entries in their SID database than intra-area routers may come to a different conclusion as regards conflicts - I agree with you - but I do not believe your proposal resolves the problem.

Consider the following simple topology:



A1-----A2------B2-----B1



All nodes run IS-IS.

A1 is a Level-1 router in Area A. It advertises: 1.1.1.1/32 SID 100

A2 is a Level-1-2 router in Area A



B1 is a Level-1 router in Area B. It advertises: 2.2.2.2/32 SID 100

B2 is a Level-1-2 router in Area B



If Level 1 routes are leaked into Level 2 but NOT down into Level 1, we have the following SID databases on the four routers:



A1


1.1.1.1/32 100


A2


1.1.1.1/32 100

2.2.2.2/32 100


B1


2.2.2.2/32 100


B2


1.1.1.1/32 100

2.2.2.2/32 100






Here are the active entries on each node comparing the two algorithms



Node


Draft Algorithm


Shraddha Algorithm


A1


1.1.1.1/32 100


1.1.1.1/32 100


A2


1.1.1.1/32 100


1.1.1.1/32 100


B1


2.2.2.2/32 100


2.2.2.2/32 100


B2


1.1.1.1/32 100


2.2.2.2/32 100




There is a tradeoff here between being able to forward some inter-area traffic entering the network via the L2 sub-domain but impacting some intra-area traffic  vs being able to forward all intra-area traffic but no inter-area traffic.

[Bruno] For MPLS transit, the ABR knows whether the traffic leaves the area or not. If it does, it could take into account both SIDs: incoming label from the SID of the incoming area, outgoing label from the SID of the outgoing area. Not that different from LDP which select the label on a per neighbor basis...even though LDP does not do routing i.e. does not natively have this information.

Not clear which strategy is "better" - but it is clear that neither strategy eliminates all issues. Given that the same SID database will NOT exist on all routers in multi-area deployments some risk exists and cannot be totally eliminated.



I do agree that we should try to minimize the use of conflicting SIDs for inter-area traffic. What is lacking in the draft is a statement that conflicting SIDs should not be leaked out of an area. I will work on a statement in the draft to make that point clear.



<Shraddha> Not leaking the conflicting SIDs makes sense. But Even if the conflicting SIDs are not leaked across boundaries, there is still a possibility that inter-area/intra-area traffic gets misforwarded at the area boundary. This issue can cause potential security risks as the traffic can get delivered to unintended node.The best option is to ignore both conflicting entries when they belong to different area/level



     1. Higher protocol preference wins

    2. If the entries belong to different sub-domains ignore both entries

     3. Higher srms preference value wins

     4. Smaller range wins

     5.IPv6 entry wins over IPv4 entry

     6.Longer prefix length wins

     7.Smaller starting address (considered as an unsigned integer

        value) wins

     8.Smaller algorithm wins

     9. Smaller topology Id

    10. Smaller starting SID wins







Thanx for bringing this issue up.



    Les



>

>

> Rgds

> Shraddha

>

> -----Original Message-----

> From: Martin Horneffer [mailto:maho@nic.dtag.de]

> Sent: Friday, July 14, 2017 8:22 PM

> To: spring@ietf.org<mailto:spring@ietf.org>

> Subject: Re: [spring] WG Last Call for draft-ietf-spring-conflict-resolution

>

> Strong support from me, too.

>

>  From an operator's point of view this is really needed.

>

> Best regards, Martin

>

>

> Am 10.07.17 um 14:58 schrieb Martin Vigoureux:

> >

> > WG,

> >

> > We are half-way through the WG Last Call and I am very surprised to

> > only see a single answer to it.

> >

> > I am not sure I'll move this forward with only silence as support.

> >

> > -m

> >

> > Le 29/06/2017 à 15:28, Martin Vigoureux a écrit :

> >> Hello Working Group,

> >>

> >> This email starts a Working Group Last Call on

> >> draft-ietf-spring-conflict-resolution-04 [1] which is considered

> >> mature and ready for a final working group review.

> >>

> >> ¤ Please read this document if you haven't read the most recent

> >> version yet, and send your comments to the list, no later than *21st

> >> of July*.

> >> Note that this is *not only* a call for comments on the document; it

> >> is also a call for support (or not) to publish this document as a

> >> Proposed Standard RFC.

> >>

> >> ¤ *Coincidentally*, we are also polling for knowledge of any IPR that

> >> applies to draft-ietf-spring-conflict-resolution, to ensure that IPR

> >> has been disclosed in compliance with IETF IPR rules (see RFCs 3979,

> >> 4879,

> >> 3669 and 5378 for more details).

> >>

> >> If you are listed as an Author or Contributor of

> >> draft-ietf-spring-conflict-resolution-04 please respond to this email

> >> and indicate whether or not you are aware of any relevant IPR.

> >>

> >> Note that, as of today, no IPR has been disclosed against this

> >> document or its earlier versions.

> >>

> >> Thank you,

> >> Martin

> >>

> >> [1]

> >> https://datatracker.ietf.org/doc/draft-ietf-spring-conflict-resolutio

> >> n/

> >>

> >> _______________________________________________

> >> spring mailing list

> >> spring@ietf.org<mailto:spring@ietf.org>

> >> https://www.ietf.org/mailman/listinfo/spring

> >>

> >

> > _______________________________________________

> > spring mailing list

> > spring@ietf.org<mailto:spring@ietf.org>

> > https://www.ietf.org/mailman/listinfo/spring

> >

>

>

> _______________________________________________

> spring mailing list

> spring@ietf.org<mailto:spring@ietf.org>

> https://www.ietf.org/mailman/listinfo/spring

_________________________________________________________________________________________________________________________



Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc

pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler

a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,

Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.



This message and its attachments may contain confidential or privileged information that may be protected by law;

they should not be distributed, used or copied without authorisation.

If you have received this email in error, please notify the sender and delete this message and its attachments.

As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.

Thank you.

_________________________________________________________________________________________________________________________



Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc

pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler

a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,

Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.



This message and its attachments may contain confidential or privileged information that may be protected by law;

they should not be distributed, used or copied without authorisation.

If you have received this email in error, please notify the sender and delete this message and its attachments.

As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.

Thank you.

_________________________________________________________________________________________________________________________



Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc

pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler

a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,

Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.



This message and its attachments may contain confidential or privileged information that may be protected by law;

they should not be distributed, used or copied without authorisation.

If you have received this email in error, please notify the sender and delete this message and its attachments.

As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.

Thank you.