Re: [spring] SID Conflict Resolution: A Simpler Proposal

"Les Ginsberg (ginsberg)" <ginsberg@cisco.com> Sun, 01 January 2017 17:15 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 228871293FE for <spring@ietfa.amsl.com>; Sun, 1 Jan 2017 09:15:27 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.621
X-Spam-Level:
X-Spam-Status: No, score=-17.621 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=-3.1, SPF_HELO_PASS=-0.001, SPF_PASS=-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 n54SER34pdIK for <spring@ietfa.amsl.com>; Sun, 1 Jan 2017 09:15:23 -0800 (PST)
Received: from rcdn-iport-6.cisco.com (rcdn-iport-6.cisco.com [173.37.86.77]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B181A1200A0 for <spring@ietf.org>; Sun, 1 Jan 2017 09:15:22 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=55256; q=dns/txt; s=iport; t=1483290922; x=1484500522; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=7V0lzfambckvxy0O8x3xR2JmbEiLRyyX/xLrXuHz9HY=; b=T3XYWc9SJsGiAcCk4041Uz3OnUs8ZRjefI+7hMgQGbepXq3DzaIE6usj nbE+HDlemdGC4bBLsNyYZAPyzhZyEMf3J7KxtJdK7gFQomlEaTjniK8Cc Up4uA17Sfo/PTWh5MKWZ8rbamNvKC5vTO6CadeUmVBFZdrFlo3uifi28m I=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AXAQA9OGlY/4ENJK1dGQEBAQEBAQEBAQEBBwEBAQEBgnE5DQEBAQEBH1+BDAeNUJRDlRuCCC6FdAKBXz8UAQIBAQEBAQEBYiiEaAEBAQQaE1wCAQgRBAEBIQEGBzIUCQgCBAESCBOIVQ6xUYo3AQEBAQEBAQEBAQEBAQEBAQEBAQEBGAWGRYRhhHyFKwWVCYV0AYZTgxKHT4F+hQiDSoYOh36GMIQOAR84SmCEERyBXnIBhzCBDQEBAQ
X-IronPort-AV: E=Sophos;i="5.33,432,1477958400"; d="scan'208,217";a="189152526"
Received: from alln-core-9.cisco.com ([173.36.13.129]) by rcdn-iport-6.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 01 Jan 2017 17:15:19 +0000
Received: from XCH-RCD-002.cisco.com (xch-rcd-002.cisco.com [173.37.102.12]) by alln-core-9.cisco.com (8.14.5/8.14.5) with ESMTP id v01HFJAL027369 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Sun, 1 Jan 2017 17:15:19 GMT
Received: from xch-aln-001.cisco.com (173.36.7.11) by XCH-RCD-002.cisco.com (173.37.102.12) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Sun, 1 Jan 2017 11:15:18 -0600
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; Sun, 1 Jan 2017 11:15:18 -0600
From: "Les Ginsberg (ginsberg)" <ginsberg@cisco.com>
To: "Aissaoui, Mustapha (Nokia - CA)" <mustapha.aissaoui@nokia.com>, "spring@ietf.org" <spring@ietf.org>
Thread-Topic: SID Conflict Resolution: A Simpler Proposal
Thread-Index: AdJOibcaOvA8JiDrT2eiOTpEk40qzwDAodWgAC/MMoAChMj6cAAKwMEwACcyuzAByc3HIA==
Date: Sun, 01 Jan 2017 17:15:18 +0000
Message-ID: <41bfb2542a984dc29ef0b99fecf06de2@XCH-ALN-001.cisco.com>
References: <84fe7b43d5054712abf09b274bc3c471@XCH-ALN-001.cisco.com> <4A79394211F1AF4EB57D998426C9340DD4AFFBBF@US70UWXCHMBA01.zam.alcatel-lucent.com> <cea34d39cf904665b4859b74d28a4237@XCH-ALN-001.cisco.com> <4A79394211F1AF4EB57D998426C9340DD4B100A7@US70UWXCHMBA01.zam.alcatel-lucent.com> <63a79609cc964132a1f67cb75da98cf7@XCH-ALN-001.cisco.com> <4A79394211F1AF4EB57D998426C9340DD4B115EF@US70UWXCHMBA01.zam.alcatel-lucent.com>
In-Reply-To: <4A79394211F1AF4EB57D998426C9340DD4B115EF@US70UWXCHMBA01.zam.alcatel-lucent.com>
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.117.188]
Content-Type: multipart/alternative; boundary="_000_41bfb2542a984dc29ef0b99fecf06de2XCHALN001ciscocom_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/spring/0uwBFUqgh1xJdUExVNhH5uAdfG4>
Subject: Re: [spring] SID Conflict Resolution: A Simpler Proposal
X-BeenThere: spring@ietf.org
X-Mailman-Version: 2.1.17
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: Sun, 01 Jan 2017 17:15:27 -0000

Mustapha -

Some responses inline, but I emphasize again that the most important issue being discussed at the moment is what to do when conflicts are detected. There are two proposals:

1)Do not use the SIDs which are in conflict ("Ignore")
2)Use some conflict resolution algorithm to choose how to use the conflicting SIDs ("Ignore overlap only")

I would encourage you and everyone else to comment on that.

If we choose #2 above then the specific preference rule (currently defined in Section 3.3.4 of the draft) can be reviewed - but not much point in doing so until we decide whether we are going to use a preference rule at all.

From: Aissaoui, Mustapha (Nokia - CA) [mailto:mustapha.aissaoui@nokia.com]
Sent: Friday, December 23, 2016 6:59 AM
To: Les Ginsberg (ginsberg); spring@ietf.org
Subject: RE: SID Conflict Resolution: A Simpler Proposal

Hi Les,
I made some follow-up inline.

Regards,
Mustapha.

From: Les Ginsberg (ginsberg) [mailto:ginsberg@cisco.com]
Sent: Thursday, December 22, 2016 2:37 PM
To: Aissaoui, Mustapha (Nokia - CA) <mustapha.aissaoui@nokia.com>; spring@ietf.org
Subject: RE: SID Conflict Resolution: A Simpler Proposal

Mustapha -

From: spring [mailto:spring-bounces@ietf.org] On Behalf Of Aissaoui, Mustapha (Nokia - CA)
Sent: Thursday, December 22, 2016 8:10 AM
To: Les Ginsberg (ginsberg); spring@ietf.org<mailto:spring@ietf.org>
Subject: Re: [spring] SID Conflict Resolution: A Simpler Proposal

Hi Les,
I read slides 17-21 of the document you referenced below and I have the following comments:


1.     Page 17, "Order Matters - Prefix vs SID Conflict".

When you perform resolution on  a per prefix basis, prefix conflicts are naturally processed first followed by SID conflicts across different prefixes. So the ordering issue described is only specific if you decided to resolve conflicting SID entries outside of the natural prefix resolution by a router.



[Les:] What may seem "natural" to you might not to someone else. I don't care to debate that point. What is being illustrated here is that in order to provide a normative specification that - if followed - guarantees interoperability we have to specify the order in which conflicts are processed otherwise different results may be obtained.

MA> I agree on the intent of specifying a procedure which achieves interoperability. However, it seems to me this draft is ignoring the fact that routers do per-prefix resolution and is trying to perform the SID resolution outside of it.
[Les2:] Section 3.2 of the draft details the types of conflicts which may occur. These include:

  1)Prefix conflicts - different SIDs assigned to the same prefix
2)SID conflicts - multiple prefixes associated with the same SID

The term "pre-prefix resolution" suggests to me that you think all we have to do is find all the SID advertisements associated with a given prefix in order to determine whether we have a conflict or not. But that only finds "prefix conflicts" - it does not find SID conflicts - and both have to be dealt with.
If you mean something else please clarify.


2.     Page 18, "Order Matters: Derived vs non-derived- prefix conflict".

It seems to me this issue is an artifact of the specific algorithm used to resolve conflicts. Because the algorithm uses parameters such as "Range (start w smallest)" then obviously derived SRMS entries will lend a different result than original SRMS entries.

With the pre-prefix resolution, the only information kept from the original SRMS entry is the preference and the advertising or owner router. Anything else is not used. It seems to me a simple algorithm based on preference first then followed by some rule on selecting the advertising router if conflicts exist within the same preference would work.



[Les:] You have implemented things in a certain way. Someone else might choose to implement in a different way. A normative specification does not (and should not) constrain an implementation. What is being illustrated here is that if the implementation does not retain the underived entry (in whatever internal form it chooses) different results will be obtained because the preference algorithm depends on comparing the underived ranges.



MA> I do not believe this is about implementation. It is about what routers do and that is resolution per prefix. It does not matter how the prefix SID information is advertised, individually or part of an SRMS entry, at the end it is associated with a prefix.



3.     Finally, there is something which has not been addressed in the slides. There is still a possibility of conflicting entries among SIDs advertised using the prefix SID sub-TLV within a Prefix TLV (IS-IS IP Reach TLV or OSPF Extended Prefix TLV). A simple rule selecting the advertising router should also work fine here.

[Les:] No - source of an advertisement has been quite deliberately excluded from the preference algorithm. With redistribution/route leaking the source of an advertisement may appear to be different on different routers- this would result in different results on different routers.

MA> The following RFC is specifying an optional attribute (the IPv4/IPv6 Source Router ID TLV) to encode the original advertising router of a prefix. This can be used to perform a simple selection algorithm:
https://tools.ietf.org/html/rfc7794#section-2.2

Otherwise, what is your proposal for this point (3)? I could not find it addressed in the current version of the draft.

[Les2:] The proposal is NOT to use the source of an advertisement as an input to conflict resolution.
RFC 7794 only addresses the issue for IS-IS and even then only for SIDs learned via prefix reachability advertisements. Use of source still has consistency issues for SRMS advertisements, OSPF, and cases which involve multiple protocol instances.
This choice has been consciously made and is in part based on our experience with existing implementations.

That said, this issue is only relevant if you believe it is necessary/desirable to use a preference rule to make a choice when a conflict exists.
The proponents of "Ignore" don't want to do this - we want to NOT use SIDs which are in conflict. We believe this is less likely to lead to interoperability problems and is less likely to have undesirable side effects. It also prioritizes detection and reporting of conflicts.

   Les

Regards,
Mustapha.

From: Les Ginsberg (ginsberg) [mailto:ginsberg@cisco.com]
Sent: Friday, December 09, 2016 1:49 PM
To: Aissaoui, Mustapha (Nokia - CA) <mustapha.aissaoui@nokia.com<mailto:mustapha.aissaoui@nokia.com>>; spring@ietf.org<mailto:spring@ietf.org>
Subject: RE: SID Conflict Resolution: A Simpler Proposal

Mustapha -

From: Aissaoui, Mustapha (Nokia - CA) [mailto:mustapha.aissaoui@nokia.com]
Sent: Friday, December 09, 2016 7:44 AM
To: Les Ginsberg (ginsberg); spring@ietf.org<mailto:spring@ietf.org>
Subject: RE: SID Conflict Resolution: A Simpler Proposal

I have a couple of comments on the below proposal.


1.     Regarding the SRMS Preference Sub-TLV in section 3.1 of the draft. In many cases, a configuration on the resolving router can assign a preference to each SRMS in case there is no advertisement of this sub-TLV or to override an advertised value. I propose that this option be allowed. Here is a proposed update to the relevant paragraph:

"
           Advertisement of a preference value is optional.  Nodes which do not
          advertise a preference value are assigned a preference value of 128.
           A resolving router can override the default or the advertised value by local policy.

"

[Les:] In order to get consistent conflict resolution on all nodes in the network, it is necessary that they all have the same database - which includes the preference value. If you allow local policy to modify the preference you no longer have consistent databases on all nodes and we can no longer guarantee consistent conflict resolution. So your proposal is not viable IMO.



2.     I am trying to understand the concept of sorting SRMS entries which have different prefixes and different range sizes.

Since a SID advertised in a prefix SID sub-TLV within a Prefix TLV (IS-IS IP Reach TLV or OSPF Extended Prefix TLV) has higher priority over a SID for the same prefix advertised from a SRMS, then you have to add to the below sorting an entry for each individual prefix which advertised a prefix SID sub-TLV within a prefix TLV.

At this point, the concept of an entry with multiple prefixes is moot and you may as well just sort on a per prefix basis which is the most natural thing to do given that the prefix resolution and then the SID resolution are performed on a per prefix basis. SID conflicts can be resolved on a per prefix basis using the below proposed preference algorithm without having to ignore SID values for unrelated prefixes just because it happens that they were advertised in the same SRMS entry.



[Les:] The simpler proposal does not require sorting on anything other than preference. After that, you can process entries in any order you want and you will get the same answer.

With "Ignore Overlap Only" one of the issues with trying to use the non-conflicting portions of a mapping entry which has a range > 1 is that the order in which you process entries influences the result. Please see slides 17 - 20 from the IETF97 presentation: https://www.ietf.org/proceedings/97/slides/slides-97-spring-1_ietf97_draft-ietf-spring-conflict-resolution-02-00.pptx for some simple examples of this.



   Les



Regards,
Mustapha.

From: spring [mailto:spring-bounces@ietf.org] On Behalf Of Les Ginsberg (ginsberg)
Sent: Sunday, December 04, 2016 7:04 PM
To: spring@ietf.org<mailto:spring@ietf.org>
Subject: [spring] SID Conflict Resolution: A Simpler Proposal


When the problem addressed by draft-ietf-spring-conflict-resolution was first

presented at IETF 94, the authors defined the following priorities:



1)Detect the problem

2)Report the problem

This alerts the network operator to the existence of a conflict so that

the configuration error can be corrected.

3)Define consistent behavior

This avoids mis-forwarding while the conflict exists.

4)Don't overengineer the solution

Given that it is impossible to know which of the conflicting entries

is the correct one, we should apply a simple algorithm to resolve the conflict.

5)Agree on the resolution behavior



The resolution behavior was deliberately the last point because it was

considered the least important.



Input was received over the past year which emphasized the importance of

trying to "maximize forwarding" in the presence of conflicts. Subsequent

revisions of the draft have tried to address this concern. However the authors

have repeatedly stressed that the solution being proposed

("ignore overlap only") was more complex than other offered alternatives and

would be more difficult to guarantee interoperability because subtle

differences in an implementation could produce different results.



At IETF97 significant feedback was received preferring a simpler solution to

the problem. The authors are very sympathetic to this feedback and therefore

are proposing a solution based on what the draft defines as the "Ignore"

policy - where all entries which are in conflict are ignored. We believe this

is far more desirable and aligns with the priorities listed above.



We outline the proposed solution below and would like to receive feedback from

the WG before publishing the next revision of the draft.



   Les (on behalf of the authors)



New Proposal



In the latest revision of the draft "SRMS Preference" was introduced. This

provides a way for a numerical preference to be explicitly associated with an

SRMS advertisement. Using this an operator can indicate which advertisement is

to be preferred when a conflict is present. The authors think this is a useful

addition and we therefore want to include this in the new solution.



The new preference rule used to resolve conflicts is defined as follows:



A given mapping entry is compared against all mapping entries in the database

with a preference greater than or equal to its own. If there is a conflict,

the mapping entry with lower preference is ignored. If two mapping entries are

in conflict and have equal preference then both entries are ignored.



Implementation of this policy is defined as follows:



Step 1: Within a single address-family/algorithm/topology sort entries

based on preference

Step 2: Starting with the lowest preference entries, resolve prefix conflicts

using the above preference rule. The output is an active policy per topology.

Step 3: Take the outputs from Step 2 and again sort them by preference

Step 4: Starting with the lowest preference entries, resolve SID conflicts

using the above preference rule



The output from Step 4 is then the current Active Policy.



Here are a few examples. Each mapping entry is represented by the tuple:

(Preference, Prefix/mask Index range <#>)



Example 1:



1. (150, 1.1.1.1/32 100 range 100)

2. (149, 1.1.1.10/32 200 range 200)

3. (148, 1.1.1.101/32 500 range 10)



Entry 3 conflicts with entry 2, it is ignored.

Entry 2 conflicts with entry 1, it is ignored.

Active policy:



(150, 1.1.1.1/32 100 range 100)



Example 2:



1. (150, 1.1.1.1/32 100 range 100)

2. (150, 1.1.1.10/32 200 range 200)

3. (150, 1.1.1.101/32 500 range 10)

4. (150, 2.2.2.1/32 1000 range 1)



Entry 1 conflicts with entry 2, both are marked as ignore.

Entry 3 conflicts with entry 2. It is marked as ignore.

Entry 4 has no conflicts with any entries



Active policy:

(150, 2.2.2.1/32 1000 range 1)



Example 3:



1. (150, 1.1.1.1/32 100 range 500)

2. (150, 1.1.1.10/32 200 range 200)

3. (150, 1.1.1.101/32 500 range 10)

4. (150, 2.2.2.1/32 1000 range 1)



Entry 1 conflicts with entries 2, 3, and  4. All entries are marked ignore.



Active policy:

Empty



Example 4:



1. (150, 1.1.1.1/32 100 range 10)

2. (149, 1.1.1.10/32 200 range 300)

3. (149, 1.1.1.101/32 500 range 10)

4. (148, 2.2.2.1/32 1000 range 1)



Entry 4 conflicts with entry 2. It is marked ignore.

Entry 2 conflicts with entry 3. Entries 2 and 3 are marked ignore.



Active policy:

(150, 1.1.1.1/32 100 range 10)