1 | <?xml version="1.0" encoding="US-ASCII"?>
|
2 |
|
3 | <!DOCTYPE rfc SYSTEM "rfc2629.dtd">
|
4 | <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
|
5 |
|
6 | <?rfc strict="yes" ?>
|
7 | <?rfc toc="yes"?>
|
8 | <?rfc tocdepth="4"?>
|
9 | <?rfc symrefs="yes"?>
|
10 | <?rfc sortrefs="yes" ?>
|
11 | <?rfc compact="yes" ?>
|
12 | <?rfc subcompact="no" ?>
|
13 |
|
14 | <rfc category="std" number="8476" ipr="trust200902"
|
15 | submissionType="IETF" consensus="yes">
|
16 |
|
17 | <front>
|
18 | <title abbrev="Signaling MSD Using OSPF">Signaling Maximum SID Depth (MSD) Using OSPF</title>
|
19 |
|
20 | <author fullname="Jeff Tantsura" initials="J.T." surname="Tantsura">
|
21 | <organization>Apstra, Inc.</organization>
|
22 | <address>
|
23 | <email>jefftant.ietf@gmail.com</email>
|
24 | </address>
|
25 | </author>
|
26 |
|
27 | <author fullname="Uma Chunduri" initials="U.C." surname="Chunduri">
|
28 | <organization>Huawei Technologies</organization>
|
29 | <address>
|
30 | <email>uma.chunduri@huawei.com</email>
|
31 | </address>
|
32 | </author>
|
33 |
|
34 | <author fullname="Sam Aldrin" initials="S.A." surname="Aldrin">
|
35 | <organization>Google, Inc.</organization>
|
36 | <address>
|
37 | <email>aldrin.ietf@gmail.com</email>
|
38 | </address>
|
39 | </author>
|
40 |
|
41 | <author fullname="Peter Psenak" initials="P.P." surname="Psenak">
|
42 | <organization>Cisco Systems</organization>
|
43 | <address>
|
44 | <email>ppsenak@cisco.com</email>
|
45 | </address>
|
46 | </author>
|
47 |
|
48 | <date month="December" year="2018" />
|
49 |
|
50 | <keyword>BGP-LS</keyword>
|
51 | <keyword>SID</keyword>
|
52 | <keyword>MSD</keyword>
|
53 | <keyword>OSPF</keyword>
|
54 |
|
55 | <abstract>
|
56 | <t>This document defines a way for an Open Shortest Path First (OSPF)
|
57 | router to advertise multiple
|
58 | types of supported Maximum SID Depths (MSDs) at node and/or link
|
59 | granularity. Such advertisements allow entities (e.g., centralized
|
60 | controllers) to determine whether a particular Segment
|
61 | Identifier (SID) stack can be supported
|
62 | in a given network. This document only refers to the Signaling MSD as
|
63 | defined in RFC 8491, but it defines an encoding that can support
|
64 | other MSD types. Here, the term "OSPF" means both OSPFv2 and OSPFv3.
|
65 | </t>
|
66 |
|
67 | </abstract>
|
68 | </front>
|
69 |
|
70 | <middle>
|
71 | <section title="Introduction">
|
72 | <t>When Segment Routing (SR) paths are computed by a centralized
|
73 | controller, it is critical that the controller learn the Maximum SID
|
74 | Depth (MSD) that can be imposed at each node/link on a given SR path.
|
75 | This ensures that the Segment Identifier (SID) stack depth of a computed
|
76 | path doesn't exceed the number of SIDs the node is capable of
|
77 | imposing.</t>
|
78 |
|
79 | <t><xref target="PCEP-EXT"/> defines how to signal MSD in the
|
80 | Path Computation Element Communication Protocol (PCEP). However, if PCEP
|
81 | is not supported/configured on the head-end of an SR tunnel or a
|
82 | Binding-SID anchor node, and the controller does not participate in IGP
|
83 | routing, it has no way of learning the MSD of nodes and
|
84 | links. BGP&nbhy;LS (Distribution of Link-State and TE Information Using
|
85 | BGP) <xref target="RFC7752"/> defines a way to
|
86 | expose topology and associated attributes and capabilities of the nodes
|
87 | in that topology to a centralized controller. MSD signaling by BGP-LS
|
88 | has been defined in <xref target="MSD-BGP"/>. Typically, BGP-LS is
|
89 | configured on a small number of nodes that do not necessarily act as
|
90 | head-ends. In order for BGP-LS to signal MSD for all the nodes and links
|
91 | in the network for which MSD is relevant, MSD capabilities SHOULD be
|
92 | advertised by every OSPF router in the network.</t>
|
93 |
|
94 | <t>Other types of MSDs are known to be useful. For example,
|
95 | <xref target="ELC-ISIS"/> defines Entropy Readable Label Depth (ERLD),
|
96 | which is used by a head&nbhy;end to insert an Entropy Label (EL) at a
|
97 | depth where it can be read by transit nodes.</t>
|
98 |
|
99 | <t>This document defines an extension to OSPF used to advertise one or
|
100 | more types of MSDs at node and/or link granularity.
|
101 | In the future, it is expected that new MSD-Types will be defined to
|
102 | signal additional capabilities, e.g., ELs, SIDs that can be
|
103 | imposed through recirculation, or SIDs associated with another data
|
104 | plane such as IPv6. </t>
|
105 |
|
106 | <t>MSD advertisements MAY be useful even if SR itself is
|
107 | not enabled. For example, in a non-SR MPLS network, MSD defines the
|
108 | maximum label depth.</t>
|
109 |
|
110 | <section title="Terminology">
|
111 |
|
112 | <t>This memo makes use of the terms defined in <xref target="RFC7770"/>.</t>
|
113 |
|
114 | <t><list style="hanging" hangIndent="9">
|
115 | <t hangText="BGP-LS:">Distribution of Link-State and TE Information Using
|
116 | BGP</t>
|
117 |
|
118 | <t hangText="OSPF:">Open Shortest Path First</t>
|
119 |
|
120 | <t hangText="MSD:">Maximum SID Depth - the number of SIDs supported by a
|
121 | node or a link on a node</t>
|
122 |
|
123 | <t hangText="SID:">Segment Identifier as defined in <xref
|
124 | target="RFC8402"/></t>
|
125 |
|
126 | <t hangText="Label Imposition:">Imposition is the act of modifying and/or
|
127 | adding labels to the outgoing label stack associated with a packet. This
|
128 | includes:
|
129 |
|
130 | <list style="symbols">
|
131 | <t>replacing the label at the top of the label stack with a new
|
132 | label</t>
|
133 |
|
134 | <t>pushing one or more new labels onto the label stack</t>
|
135 | </list></t></list></t>
|
136 |
|
137 | <t>The number of labels imposed is then the sum of the number of
|
138 | labels that are replaced and the number of labels that are
|
139 | pushed. See <xref target="RFC3031"/> for further details.</t>
|
140 |
|
141 | <t><list style="hanging" hangIndent="9">
|
142 | <t hangText="PCEP:">Path Computation Element Communication Protocol</t>
|
143 |
|
144 | <t hangText="SR:">Segment Routing</t>
|
145 |
|
146 | <t hangText="LSA:">Link State Advertisement</t>
|
147 |
|
148 | <t hangText="RI:">Router Information</t>
|
149 | </list></t>
|
150 |
|
151 | </section>
|
152 |
|
153 | <section title="Requirements Language">
|
154 | <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
|
155 | "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",
|
156 | "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document
|
157 | are to be interpreted as described in BCP 14
|
158 | <xref target="RFC2119"/> <xref target="RFC8174"/> when,
|
159 | and only when, they appear in all capitals, as shown here.</t>
|
160 | </section>
|
161 | </section>
|
162 | <section anchor="NODE_LEVEL" title="Node MSD Advertisement">
|
163 | <t>The Node MSD TLV within the body of the OSPF RI Opaque LSA <xref
|
164 | target="RFC7770"/> is defined to carry the provisioned SID depth of the
|
165 | router originating the RI LSA. Node MSD is the smallest MSD supported
|
166 | by the node on the set of interfaces configured for use by the
|
167 | advertising IGP instance. MSD values may be learned via a hardware API
|
168 | or may be provisioned.
|
169 | </t>
|
170 | <figure align="center" anchor="Node_MSD_TLV"
|
171 | title="Node MSD TLV">
|
172 | <artwork align="left">
|
173 | 0 1 2 3
|
174 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
175 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
176 | | Type | Length |
|
177 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
178 | | MSD-Type | MSD-Value | MSD-Type... | MSD-Value... |
|
179 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
180 | </artwork>
|
181 | </figure>
|
182 |
|
183 | <t>Type: 12</t>
|
184 | <t>Length: variable (multiple of 2 octets); represents the total
|
185 | length of the value field in octets.</t>
|
186 | <t>Value: consists of one or more pairs of a 1&nbhy;octet MSD-Type and
|
187 | 1&nbhy;octet MSD-Value.</t>
|
188 | <t>MSD-Type: one of the values defined in the "IGP MSD-Types" registry
|
189 | defined in <xref target="RFC8491"/>.</t>
|
190 | <t>MSD-Value: a number in the range of 0-255. For all MSD-Types, 0
|
191 | represents the lack of ability to impose an MSD stack of any depth; any
|
192 | other value represents that of the node. This value MUST represent the
|
193 | lowest value supported by any link configured for use by the advertising
|
194 | OSPF instance.</t>
|
195 | <t>This TLV is optional and is applicable to both OSPFv2 and OSPFv3.
|
196 | The scope of the advertisement is specific to the deployment.</t>
|
197 |
|
198 | <t>When multiple Node MSD TLVs are received from a given router, the
|
199 | receiver MUST use the first occurrence of the TLV in the Router
|
200 | Information (RI) LSA. If the Node MSD TLV appears in multiple RI
|
201 | LSAs that have different flooding scopes, the Node
|
202 | MSD TLV in the RI LSA with the area-scoped
|
203 | flooding scope MUST be used. If the Node MSD TLV appears in
|
204 | multiple RI LSAs that have the same flooding scope,
|
205 | the Node MSD TLV in the RI LSA with the
|
206 | numerically smallest Instance ID MUST be used and other
|
207 | instances of the Node MSD TLV MUST be ignored.
|
208 |
|
209 | The RI LSA can be advertised at any of the defined opaque flooding
|
210 | scopes (link, area, or Autonomous System (AS)). For the purpose of
|
211 | Node MSD TLV advertisement, area-scoped flooding is RECOMMENDED. </t>
|
212 |
|
213 | </section>
|
214 |
|
215 | <section anchor="LINK_LEVEL" title="Link MSD Sub-TLV">
|
216 | <t>The Link MSD sub-TLV is defined to carry the MSD of the interface
|
217 | associated with the link. MSD values may be learned via a hardware API
|
218 | or may be provisioned.</t>
|
219 |
|
220 | <figure align="center" anchor="Link_MSD_sub_TLV"
|
221 | title="Link MSD Sub-TLV">
|
222 | <artwork align="left">
|
223 | 0 1 2 3
|
224 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
225 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
226 | | Type | Length |
|
227 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
228 | | MSD-Type | MSD-Value | MSD-Type... | MSD-Value... |
|
229 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
230 | </artwork>
|
231 | </figure>
|
232 |
|
233 | <t>Type:</t>
|
234 | <t><list>
|
235 | <t>For OSPFv2, the link-level MSD-Value is advertised as an
|
236 | optional sub-TLV of the OSPFv2 Extended Link TLV as defined in
|
237 | <xref target="RFC7684"/> and has a type of 6.</t>
|
238 | <t>For OSPFv3, the link-level MSD-Value is advertised as an
|
239 | optional sub-TLV of the E-Router-LSA TLV as defined in <xref
|
240 | target="RFC8362"/> and has a type of 9.
|
241 | </t>
|
242 | </list></t>
|
243 | <t>Length: variable; same as defined in <xref target="NODE_LEVEL">
|
244 | </xref>.</t>
|
245 | <t>Value: consists of one or more pairs of a 1&nbhy;octet MSD-Type and
|
246 | 1&nbhy;octet MSD-Value. </t>
|
247 |
|
248 | <t>MSD-Type: one of the values defined in the "IGP MSD-Types" registry
|
249 | defined in <xref target="RFC8491"/>.</t>
|
250 | <t>The MSD-Value field contains the Link MSD of the router originating
|
251 | the corresponding LSA as specified for OSPFv2 and OSPFv3. The Link MSD
|
252 | is a number in the range of 0-255. For all MSD-Types, 0 represents the
|
253 | lack of ability to impose an MSD stack of any depth; any other value
|
254 | represents that of the particular link when used as an outgoing
|
255 | interface.</t>
|
256 |
|
257 | <t>
|
258 | If this sub-TLV is advertised multiple times for the same link in
|
259 | different OSPF Extended Link Opaque LSAs / E-Router-LSAs originated
|
260 | by the same OSPF router, the sub-TLV in the OSPFv2 Extended Link
|
261 | Opaque LSA with the smallest Opaque ID or in the OSPFv3
|
262 | E-Router-LSA with the smallest Link State ID MUST be used by
|
263 | receiving OSPF routers. This situation SHOULD be logged as an error.
|
264 | </t>
|
265 |
|
266 | </section>
|
267 |
|
268 | <section anchor="Confict_resolution"
|
269 | title="Procedures for Defining and Using Node and Link MSD Advertisements">
|
270 | <t>When Link MSD is present for a given MSD-Type, the value of the Link
|
271 | MSD MUST take precedence over the Node MSD. When a Link MSD&nbhy;Type
|
272 | is not signaled but the Node MSD-Type is, then the Node MSD&nbhy;Type
|
273 | value MUST be considered as the MSD value for that link.</t>
|
274 |
|
275 | <t>In order to increase flooding efficiency, it is RECOMMENDED that
|
276 | routers with homogenous Link MSD values advertise just the Node MSD
|
277 | value.</t>
|
278 |
|
279 | <t>The meaning of the absence of both Node and Link MSD advertisements
|
280 | for a given MSD-Type is specific to the MSD-Type. Generally, it can only
|
281 | be inferred that the advertising node does not support advertisement of
|
282 | that MSD-Type. However, in some cases the lack of advertisement might
|
283 | imply that the functionality associated with the MSD-Type is not
|
284 | supported. Per <xref target="RFC8491"/>, the correct interpretation MUST
|
285 | be specified when an MSD-Type is defined.</t>
|
286 |
|
287 | </section>
|
288 |
|
289 | <section anchor="IANA" title="IANA Considerations">
|
290 | <t>This specification updates several existing OSPF registries.</t>
|
291 | <t>IANA has allocated TLV type 12 from the "OSPF Router
|
292 | Information (RI) TLVs" registry as defined by <xref target="RFC7770"/>.
|
293 |
|
294 | <figure align="center" anchor="Node_MSD"
|
295 | title="RI Node MSD">
|
296 | <artwork align="left">
|
297 | Value Description Reference
|
298 | ----- --------------- -------------
|
299 | 12 Node MSD This document
|
300 | </artwork>
|
301 | </figure>
|
302 |
|
303 | IANA has allocated sub-TLV type 6 from
|
304 | the "OSPFv2 Extended Link TLV Sub-TLVs" registry.
|
305 |
|
306 | <figure align="center" anchor="OSPFv2_Link_MSD"
|
307 | title="OSPFv2 Link MSD">
|
308 |
|
309 | <artwork align="left">
|
310 | Value Description Reference
|
311 | ----- --------------- -------------
|
312 | 6 OSPFv2 Link MSD This document
|
313 | </artwork>
|
314 | </figure>
|
315 |
|
316 | IANA has allocated sub-TLV type 9 from the "OSPFv3 Extended-LSA
|
317 | Sub&nbhy;TLVs" registry.
|
318 |
|
319 | <figure align="center" anchor="OSPFv3_Link_MSD"
|
320 | title="OSPFv3 Link MSD">
|
321 | <artwork align="left">
|
322 | Value Description Reference
|
323 | ----- --------------- -------------
|
324 | 9 OSPFv3 Link MSD This document
|
325 | </artwork>
|
326 | </figure>
|
327 | </t>
|
328 | </section>
|
329 |
|
330 | <section anchor="Security" title="Security Considerations">
|
331 | <t>Security concerns for OSPF are addressed in <xref target="RFC7474"/>,
|
332 | <xref target="RFC4552"/>, and <xref target="RFC7166"/>.
|
333 | Further security analysis for the OSPF protocol is done in <xref
|
334 | target="RFC6863"/>. Security considerations as specified by <xref
|
335 | target="RFC7770"/>, <xref target="RFC7684"/>, and <xref target="RFC8362"/>
|
336 | are applicable to this document.</t>
|
337 |
|
338 | <t>Implementations MUST ensure that malformed TLVs and sub-TLVs defined in
|
339 | this document are detected and do not provide a vulnerability for
|
340 | attackers to crash the OSPF router or routing process. Reception
|
341 | of malformed TLVs or sub-TLVs SHOULD be counted and/or logged for
|
342 | further analysis. Logging of malformed TLVs and sub-TLVs SHOULD be
|
343 | rate&nbhy;limited to prevent a Denial-of-Service (DoS) attack (distributed
|
344 | or otherwise) from overloading the OSPF control plane.</t>
|
345 |
|
346 | <t>Advertisement of an incorrect MSD value may have negative
|
347 | consequences. If the value is smaller than supported, path computation
|
348 | may fail to compute a viable path. If the value is larger than
|
349 | supported, an attempt to instantiate a path that can't be supported by
|
350 | the head-end (the node performing the SID imposition) may occur.</t>
|
351 |
|
352 | <t>The presence of this information may also inform an attacker of how
|
353 | to induce any of the aforementioned conditions.</t>
|
354 |
|
355 | <t>There's no DoS risk specific to this extension, and it is
|
356 | not vulnerable to replay attacks.</t>
|
357 |
|
358 | </section>
|
359 |
|
360 | </middle>
|
361 |
|
362 | <back>
|
363 | <references title="Normative References">
|
364 | <?rfc include="reference.RFC.2119"?>
|
365 | <?rfc include="reference.RFC.8174"?>
|
366 | <?rfc include="reference.RFC.7770"?>
|
367 | <?rfc include="reference.RFC.8362"?>
|
368 | <?rfc include="reference.RFC.7684"?>
|
369 | <?rfc include="reference.RFC.3031"?>
|
370 | <?rfc include="reference.RFC.8402"?>
|
371 | <?rfc include="reference.RFC.8491"?>
|
372 | </references>
|
373 |
|
374 | <references title="Informative References">
|
375 |
|
376 | <!-- draft-ietf-pce-segment-routing (Waiting for Writeup) -->
|
377 | <reference anchor='PCEP-EXT'>
|
378 | <front>
|
379 | <title>PCEP Extensions for Segment Routing</title>
|
380 | <author initials='S' surname='Sivabalan' fullname='Siva Sivabalan'>
|
381 | <organization />
|
382 | </author>
|
383 | <author initials='C' surname='Filsfils' fullname='Clarence Filsfils'>
|
384 | <organization />
|
385 | </author>
|
386 | <author initials='J' surname='Tantsura' fullname='Jeff Tantsura'>
|
387 | <organization />
|
388 | </author>
|
389 | <author initials='W' surname='Henderickx' fullname='Wim Henderickx'>
|
390 | <organization />
|
391 | </author>
|
392 | <author initials='J' surname='Hardwick' fullname='Jonathan Hardwick'>
|
393 | <organization />
|
394 | </author>
|
395 | <date month='October' year='2018' />
|
396 | </front>
|
397 | <seriesInfo name='Work in Progress,' value='draft-ietf-pce-segment-routing-14' />
|
398 | </reference>
|
399 |
|
400 | <!-- draft-ietf-idr-bgp-ls-segment-routing-msd (I-D Exists) -->
|
401 | <reference anchor='MSD-BGP'>
|
402 | <front>
|
403 | <title>Signaling MSD (Maximum SID Depth) using Border Gateway Protocol Link-State</title>
|
404 | <author initials='J' surname='Tantsura' fullname='Jeff Tantsura'>
|
405 | <organization />
|
406 | </author>
|
407 | <author initials='U' surname='Chunduri' fullname='Uma Chunduri'>
|
408 | <organization />
|
409 | </author>
|
410 | <author initials='G' surname='Mirsky' fullname='Gregory Mirsky'>
|
411 | <organization />
|
412 | </author>
|
413 | <author initials='S' surname='Sivabalan' fullname='Siva Sivabalan'>
|
414 | <organization />
|
415 | </author>
|
416 | <date month='August' year='2018' />
|
417 | </front>
|
418 | <seriesInfo name='Work in Progress,' value='draft-ietf-idr-bgp-ls-segment-routing-msd-02' />
|
419 | </reference>
|
420 |
|
421 | <!-- draft-ietf-ospf-mpls-elc (I-D Exists) -->
|
422 | <reference anchor='ELC-ISIS'>
|
423 | <front>
|
424 | <title>Signaling Entropy Label Capability and Entropy Readable Label-stack Depth Using OSPF</title>
|
425 | <author initials='X' surname='Xu' fullname='Xiaohu Xu'>
|
426 | <organization />
|
427 | </author>
|
428 | <author initials='S' surname='Kini' fullname='Sriganesh Kini'>
|
429 | <organization />
|
430 | </author>
|
431 | <author initials='S' surname='Sivabalan' fullname='Siva Sivabalan'>
|
432 | <organization />
|
433 | </author>
|
434 | <author initials='C' surname='Filsfils' fullname='Clarence Filsfils'>
|
435 | <organization />
|
436 | </author>
|
437 | <author initials='S' surname='Litkowski' fullname='Stephane Litkowski'>
|
438 | <organization />
|
439 | </author>
|
440 | <date month='September' year='2018' />
|
441 | </front>
|
442 | <seriesInfo name='Work in Progress,' value='draft-ietf-ospf-mpls-elc-07' />
|
443 | </reference>
|
444 |
|
445 | <?rfc include="reference.RFC.7752"?>
|
446 | <?rfc include="reference.RFC.6863"?>
|
447 | <?rfc include="reference.RFC.7474"?>
|
448 | <?rfc include="reference.RFC.4552"?>
|
449 | <?rfc include="reference.RFC.7166"?>
|
450 |
|
451 | </references>
|
452 |
|
453 | <section anchor="Acknowledgements" title="Acknowledgements" numbered="no">
|
454 | <t>The authors would like to thank Acee Lindem, Ketan Talaulikar,
|
455 | Tal Mizrahi, Stephane Litkowski, and Bruno Decraene for their reviews
|
456 | and valuable comments.</t>
|
457 | </section>
|
458 |
|
459 | <section anchor="Contributors" title="Contributors" numbered="no">
|
460 |
|
461 | <t>The following person contributed to this document:</t>
|
462 | <t>Les Ginsberg</t>
|
463 | <t>Email: ginsberg@cisco.com</t>
|
464 | </section>
|
465 |
|
466 | </back>
|
467 | </rfc>
|