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.
Where is the global logic here ? It is really weird to retrieve some SR information from one protocol, and some others from another protocol.
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.
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:***@cisco.com]
Sent: Tuesday, August 01, 2017 18:29
To: LITKOWSKI Stephane OBS/OINIS; DECRAENE Bruno IMT/OLN; Shraddha Hegde; ***@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: ***@orange.com<mailto:***@orange.com> [mailto:***@orange.com]
Sent: Tuesday, August 01, 2017 1:28 AM
To: Les Ginsberg (ginsberg); DECRAENE Bruno IMT/OLN; Shraddha Hegde; ***@ietf.org<mailto:***@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-***@ietf.org] On Behalf Of Les Ginsberg (ginsberg)
Sent: Saturday, July 29, 2017 00:25
To: DECRAENE Bruno IMT/OLN; Shraddha Hegde; ***@ietf.org<mailto:***@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: ***@orange.com<mailto:***@orange.com> [mailto:***@orange.com]
Sent: Friday, July 28, 2017 3:43 AM
To: Shraddha Hegde; Les Ginsberg (ginsberg); ***@ietf.org<mailto:***@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-***@ietf.org] On Behalf Of Shraddha Hegde
Sent: Friday, July 28, 2017 5:31 AM
To: Les Ginsberg (ginsberg); ***@ietf.org<mailto:***@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:***@cisco.com]
Sent: Tuesday, July 25, 2017 1:57 AM
To: Shraddha Hegde <***@juniper.net<mailto:***@juniper.net>>; ***@ietf.org<mailto:***@ietf.org>
Subject: RE: [spring] WG Last Call for draft-ietf-spring-conflict-resolution
Shraddha -
Thanx for the comments - responses inline.
-----Original Message-----
Sent: Thursday, July 20, 2017 11:44 PM
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-----
Sent: Friday, July 14, 2017 8:22 PM
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
Post by Martin VigoureuxWG,
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
Post by Martin VigoureuxHello 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
https://www.ietf.org/mailman/listinfo/spring
_______________________________________________
spring mailing list
https://www.ietf.org/mailman/listinfo/spring
_______________________________________________
spring mailing list
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.