Gunter – It is a misunderstanding to think that conflict resolution of ANY FLAVOR affects the best path selection/installation. This is simply not the case.
We are talking about an MPLS forwarding plane which uses labels which are globally scoped. (The fact that the label is represented as an index into a router specific SRGB is not relevant). If we have a conflict then a given label can be associated with multiple prefixes – here is one example: 1.1.1.1/32 index 100 2.2.2.2/32 index 100 If I choose to use index 100 for 1.1.1.1/32 – but my neighbor chooses to use index 100 for 2.2.2.2/32 – then when I encapsulate a packet addressed to 1.1.1.1 and forward it to my neighbor it will get sent in the direction of 2.2.2.2. This is the problem conflict resolution is trying to address. As regards “ignore overlap only” complexity, I repeat my earlier reply to Bruno: “If you want to argue that these are solvable problems I won’t disagree with you – it is a question of where we want to put our time and effort. A number of folks are commenting that they prefer to focus on fixing the configuration and not invest time in validating that conflict resolution is implemented in an interoperable way. As we (the authors) have stated from the beginning, we believe the emphasis should be on detecting and reporting the conflicts – not spending cycles implementing the most robust means of trying to operate optimally while the misconfiguration exists.” Les From: Van De Velde, Gunter (Nokia - BE) [mailto:[email protected]] Sent: Friday, December 09, 2016 12:11 PM To: Les Ginsberg (ginsberg); [email protected] Subject: Re: [spring] SID Conflict Resolution: A Simpler Proposal The method to “maximize forwarding” as mentioned in the draft seems to be in consistent logic with how the current unicast routing table is build. For unicast routes the route selected for a given IP destination address is a function(prefix-length/admin-distance). This is done for better address space management, and to have predictable routing incase of clashes in the routing table. Hence, to me, it seems only natural to to keep promoting "ignore overlap only" as result as it mimics traditional unicast routing table constructs. The alternative sounds a bit like stepping back to Class A/B/C addresses by just avoiding the problem and significantly impact potential clash scenarios as consequence due to oversimplification. Finally, I do not understand the reasoning behind the sudden worry regarding "ignore overlap only" policy to be obscenely complex. If I understand IETF procedures well, and if “ignore overlap only” is documented properly, just like any standard track RFC should be, then how are incompatible behaviours possible? Should we not try to architect for the BEST realistic future proof solution, and not for the easiest less optimal solution. (Keep in mind that at some point in time people believed that doing routing in the style of Class A/B/C was the future also, and see where we are right now). G/ From: spring [mailto:[email protected]] On Behalf Of Les Ginsberg (ginsberg) Sent: Sunday, December 04, 2016 7:04 PM To: [email protected]<mailto:[email protected]> 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)
_______________________________________________ spring mailing list [email protected] https://www.ietf.org/mailman/listinfo/spring
