Network Working Group Z. Li Internet-Draft Z. Hu Intended status: Standards Track D. Cheng Expires:April 22,September 6, 2018 Huawei TechnologiesOctober 19, 2017K. Talaulikar P. Psenak Cisco Systems March 5, 2018 OSPFv3 Extensions for SRv6draft-li-ospf-ospfv3-srv6-extensions-00draft-li-ospf-ospfv3-srv6-extensions-01 Abstract Segment Routing (SR) allows for a flexible definition of end-to-end paths by encoding paths as sequences of topological sub-paths, called "segments". Segment routing architecture(refer to [I-D.ietf-spring-segment-routing])can be implemented overa MPLS data plane,anIPv4MPLS dataplane,plane as well as an IPv6 data plane.[I-D.filsfils-spring-srv6-network-programming] introduces the network programming concept in IPv6 data plane using segment routing technology, called SRv6, and it also defines some basic functions. The SRv6 functions can be advertised by routing protocols including OSPFv3, IS-IS and BGP-LS.This draftproposes somedescribes the IS-IS extensionsto OSPFv3 ([RFC5340])required to supportSRv6.Segment Routing over an IPv6 data plane. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire onApril 22,September 6, 2018. Copyright Notice Copyright (c)20172018 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. OSPFv3 Extensions for SRv6 . . . . . . . . . . . . . . . . .43 2.1. SRv6-CapabilitiesSub-TLVTLV . . . . . . . . . . . . . . . .4. . 3 2.1.1. Maximum SLSub-Sub-TLVSub-TLV . . . . . . . . . . . . . . . . . 5 2.1.2. Maximum End Pop SRHSub-Sub-TLVSub-TLV . . . . . . . . . . .6. . 5 2.1.3. Maximum T.Insert SRHSub-Sub-TLVSub-TLV . . . . . . . . . .7. . 6 2.1.4. Maximum T.Encap SRHSub-Sub-TLVSub-TLV . . . . . . . . . . .7. . 6 2.1.5. Maximum End D SRHSub-Sub-TLVSub-TLV . . . . . . . . . . . .8 2.2. SRv6 Function Descriptor. . 7 2.2. SRv6 Node SID TLV . . . . . . . . . . . . . .9 2.3. SRv6 Function Code Points. . . . . . 8 2.3. SRv6 SIDs Associated with Adjacencies . . . . . . . . . . 102.4.2.3.1. SRv6 SIDTLV . . . . . . . . . . .Link Attribute Sub-TLV . . . . . . . . . . . 112.5.2.3.2. SRv6NeighborSIDTLV .LAN Link Attribute Sub-TLV . . . . . . . . . 12 3. Security Considerations . . . . . . . .12 2.5.1. Point to Popint SRv6 Adj-SID Sub-TLV. . . . . . . .13 2.5.2. LAN SRv6 Adj-SID sub-TLV. . . 14 4. IANA Considerations . . . . . . . . . . .14 3. Security Considerations. . . . . . . . . . 14 4.1. OSPF Parameters . . . . . . . . .15 4. IANA Considerations. . . . . . . . . . . . 14 4.2. OSPFv3 Parameters . . . . . . . . .15 4.1. OSPFv3 Extensions for SRv6 Support. . . . . . . . . . .1514 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .1615 6. References . . . . . . . . . . . . . . . . . . . . . . . . .1615 6.1. Normative References . . . . . . . . . . . . . . . . . .1615 6.2. Informative References . . . . . . . . . . . . . . . . .1716 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . .1716 1. IntroductionThis document proposes some extensions to OSPFv3 in order to support SRv6 as defined in [I-D.filsfils-spring-srv6-network-programming], and they are as follows: 1. SRv6-Capabilities Sub-TLV: Refer to Section 2.1. This Sub-TLV is used to announce the capability of an OSPFv3 router for SRv6 support withSegment Routing (SR) architecture [I-D.ietf-spring-segment-routing] specifies how alist of parameters. This Sub-TLV, if used, is included in OSPFv3 Router Information LSA TLV LSA([RFC7770]). 2. Maximum SL Sub-Sub-TLV: Refer to Section 2.1.1. This Sub-Sub-TLV carries the maximum value of the "SL" field in the SRH ([I-D.ietf-6man-segment-routing-header]) ofnode can steer areceivedpacketbefore applying the function associated with a SID. It maythrough an ordered list of instructions, called segments. These segments are identified through Segment Identifiers (SIDs). Segment Routing can beincluded ininstantiated on theSRv6-Capabilities Sub-TLV. 3. Maximum End Pop SRH Sub-Sub-TLV: Refer to Section 2.1.2. This Sub-Sub-TLV carriesIPv6 data plane through themaximum numberuse of theSIDsSegment Routing Header (SRH) defined in [I-D.ietf-6man-segment-routing-header]. SRv6 refers to this SR instantiation on thetop SRHIPv6 dataplane. The network programming paradigm for SRv6 is specified inan SRH stack to[I-D.filsfils-spring-srv6-network-programming] whichthe routerdescribes several well-known functions that canapply "PSP" or "USP" flavors (refer to [I-D.filsfils-spring-srv6-network-programming]). It maybeincluded in the SRv6-Capabilities Sub-TLV. 4. Maximum T.Insert SRH Sub-Sub-TLV: Referbound toSection 2.1.3.SRv6 SIDs. ThisSub-Sub-TLV carries the maximum number of the SIDs that can be inserted as part of the "T.insert" behavior (referdocument proposes extensions to[I-D.filsfils-spring-srv6-network-programming]). It may be includedOSPFv3 inthe SRv6-Capabilities Sub-TLV. 5. Maximum T.Encap SRH Sub-Sub-TLV: Referorder toSection 2.1.4. This Sub-Sub-TLV carries the maximum number of the SIDs that can be insertedsupport SRv6 aspart of the "T.Encap" behavior (refer to [I-D.filsfils-spring-srv6-network-programming]). It may be includeddefined in [I-D.filsfils-spring-srv6-network-programming] by signaling theSRv6-Capabilities Sub-TLV. 6. Maximum End D SRH Sub-Sub-TLV: Refer to Section 2.1.5. This Sub- Sub-TLV carries the maximum numberSRv6 capabilities of theSIDs in an SRH when applying "End.DX6"node and"End.DT6" function (refer to [I-D.filsfils-spring-srv6-network-programming]). It may be included in the SRv6-Capabilities Sub-TLV. 7. SRv6 SID TLV: Refer to Section 2.4. This TLV is used to advertise one or more SIDs along with their associated SRv6 functions. These SRv6certain functions (e.g. END, END.X, etc.) that arewell-known and defined in [I-D.filsfils-spring-srv6-network-programming], but may also be others defined ininstantiated on thefuture. This TLV isSRv6 capable router. At atop-level TLV and is included inhigh level, the extensions to OSPFv3Router Information LSA([RFC7770]). 8.comprise of a SRv6Point-to-Point Adj-SID Sub-TLV: Refer to Section 2.5.1. This Sub-TLV is usedCapabilities TLV to advertiseone or more SIDs on an OSPFv3 point-to-point adjacency forthe supportof SRv6 along with their associated functions. Thesefor SRv6functions are well-known and defined in [I-D.filsfils-spring-srv6-network-programming], but may also be others defined infeatures supported by thefuture. This Sub-TLV isrouter. Also included are extensions inRouter-Link TLV as defined in [I-D.ietf-ospf-ospfv3-lsa-extend]. 9. SRv6 LAN SRv6 Adj-SID Sub-TLV: Refer to Section 2.5.2. This Sub- TLV is used to advertise one or more SIDs on an OSPFv3 LAN adjacency forthesupportform ofSRv6 along with their associated functions. These SRv6 functions are well-knownTLVs anddefined in [I-D.filsfils-spring-srv6-network-programming], but may also be others defined insub-TLVs for advertising thefuture. This Sub-TLV is included in Router-Link TLV as defined in [I-D.ietf-ospf-ospfv3-lsa-extend]. For consistency in IGP's behavior, ideas are borrowed from [I-D.bashandy-isis-srv6-extensions] includingSRv6 SIDs corresponding the to functionssupportedrelated to the node (e.g. END) anddata format.those related to the adjacencies (e.g. END.X) for the SRv6 enabled OSPFv3 router. 2. OSPFv3 Extensions for SRv6 2.1. SRv6-CapabilitiesSub-TLVTLV WhenapplySegment Routingto(SR) is instantiated using the IPv6 dataplane,plane (SRv6), the list of segments isstored inexpressed using the segment routingheader, referred toheader (SRH) as"SRH", which isdefined in [I-D.ietf-6man-segment-routing-header]. A router that supports SRv6 MUST be able to process thesegment routing headerSRH as described in [I-D.ietf-6man-segment-routing-header], as well as apply function behaviors and flavors as described in [I-D.filsfils-spring-srv6-network-programming].In either case, there exists a limit to which theA SRv6 enabled routercan perform accordingmay have different capabilities and limits when it comes toits own ability thatSRH processing and this needs to be advertised to other routers in thesame SRSRv6 domain. TheOSPFv3-SRv6-Capbilities Sub-TLVSRv6 Capabilities TLV is designed for an OSPFv3 router tomake announcementadvertise its SRv6 support along with its related capabilities for SRv6 functionality. This is a new optional top level TLV of OSPFv3 Router Information LSA TLV LSA ([RFC7770]) which MUST be advertised by a SRv6 enabled router. This TLV SHOULD be advertised only once in the OSPFv3 Router Information LSA. When multiple SRv6domain about its abilityCapabilities TLVs are received from a given router, the receiver MUST use the first occurrence of the TLV in thecontextOSPFV3 Router Information Opaque LSA. If the SRv6 Capabilities TLV appears in multiple OSPFv3 Router Information Opaque LSAs that have different flooding scopes, the TLV in the OSPFv3 Router Information Opaque LSA with the area-scoped flooding scope MUST be used. If the SRv6 Capabilities TLV appears in multiple OSPFv3 Router Information Opaque LSAs that have the same flooding scope, the TLV in the OSPFv3 Router Information Opaque LSA with the numerically smallest Instance ID MUST be used and subsequent instances of the TLV MUST be ignored. The OSPFv3 Router Information Opaque LSA can be advertised at any of the defined opaque flooding scopes (link, area, or Autonomous System (AS)). For the purpose of SRv6support.Capabilities TLV advertisement, area- scoped flooding is REQUIRED. The format of OSPFv3-SRv6-CapabilitiesSub-TLVTLV is shownin Figure 1.below 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Sub-Sub-TLVs ....Sub-TLVs... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Where: o Type: 16 bit field. TBD o Length: 16 bit field. Length of Capability TLV + length of Sub- TLVs o Reserved : 16 bit field. SHOULD be set to 0 and MUST be ignored by receiver. o Flags: 16 bit field. The following flags are defined: 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|E||E|O| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Figure 1 Type (one octet) TBD-1 Length (one octet) 2 + length of sub-sub-TLVs Flags (16 bits) E-Flag:where: * E-flag: If set,thethen router is able to apply "T.Encap"operation.operation as specified in [I-D.filsfils-spring-srv6-network-programming] * O-flag: If set, then router is capable of supporting SRH O-bit Flags, as specified in [I-D.ietf-6man-segment-routing-header]. The following sections define the supported sub-TLVs. 2.1.1. Maximum SLSub-Sub-TLVSub-TLV The Maximum Segments LeftSub-Sub-TLVSub-TLV of the SRv6 Capabilities TLV specifies the maximum value of the "SL" field (refer to [I-D.ietf-6man-segment-routing-header]) in the SRH of a received packet before applying the function associated with a SID. 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Max SL |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 2 Type (one octet) TBD-2 Length (one octet)+-+-+-+-+-+-+-+-+ o Type: 1Max SL (8 bits)o Length: 4 (including padding to 32 bit aligned boundary for OSPF TLVs) o SLValueValue: 1 octet o An 8 bit unsigned integer. If thesub-sub-TLVsub-TLV isNOT advertised,not advertised by an SRv6 capable router, then the valueis assumedMUST be considered to be 0. 2.1.2. Maximum End Pop SRHSub-Sub-TLVSub-TLV The Maximum End Pop SRH Sub-Sub-TLV specifies the maximum number of SIDs in the top SRH in an SRH stack to which the router can apply "PSP" or USP"flavors([I-D.filsfils-spring-srv6-network-programming] ).flavors ([I-D.filsfils-spring-srv6-network-programming]). 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Max-End-Pop-SRH|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 3 Type (one octet) TBD-3 Length (one octet) 1+-+-+-+-+-+-+-+-+ o Type: 2 o Length: 4 (including padding to 32 bit aligned boundary for OSPF TLVs) o Max-End-Pop-SRH(8 bits) Max End Pop SRH value ValueValue: 1 octet o An 8 bit unsigned integer. If the value iszero0 or thesub-sub-TLVsub-TLV isNOT advertised,not advertised by an SRv6 capable router, then itis assumedMUST be considered that the router cannot apply PSP or USP flavors. 2.1.3. Maximum T.Insert SRHSub-Sub-TLVSub-TLV The Maximum T.Insert SRH Sub-Sub-TLV specifies the maximum number of SIDs that can be inserted as part of the "T.insert" behavior([I-D.filsfils-spring-srv6-network-programming]). 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Max-T.Insert |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure+-+-+-+-+-+-+-+-+ o Type: 3 o Length: 4Type (one octet) TBD-4 Length (one octet) 1 Max-T.Insert (8 bits)(including padding to 32 bit aligned boundary for OSPF TLVs) o Max-T.InsertValueValue: 1 octet o An 8 bit unsigned integer. If the value iszero0 or thesub-sub-TLVsub-TLV isomitted,not advertised by an SRv6 capable router, then it MUST be considered that the routeris assumeddoes nottosupport any variation of the "T.insert" behavior. 2.1.4. Maximum T.Encap SRHSub-Sub-TLVSub-TLV The Maximum T.Encap SRH Sub-Sub-TLV specifies the maximum number of SIDs that can be included as part of the "T.Encap"behavior([I-D.filsfils-spring-srv6-network-programming]).behavior ([I-D.filsfils-spring-srv6-network-programming]). 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length |Max-T.Encap+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 5 Type (one octet) TBD-5 Length (one octet) 1Max-T.Encap(8 bits)| +-+-+-+-+-+-+-+-+ o Type: 4 o Length: 4 (including padding to 32 bit aligned boundary for OSPF TLVs) o Max-T.EncapValueValue: 1 octet o An 8 bit unsigned integer. If this value iszero0 or theSub-Sub-TLVsub-TLV isomittednot advertised by an SRv6 capable router and the "E" flag is set in the associated SRv6 CapabilitiesSub-TLV,sub-TLV, then itis assumedMUST be considered that the router can apply T.Encap by encapsulating the incoming packet in another IPv6 header without SRH the same wayIPinIPas IP-in-IP encapsulation is performed. If the "E" flag is clear, then thisSub-Sub-TLVsub-TLV SHOULD NOT betransmittedadvertised and MUST be ignored onreception.receipt. 2.1.5. Maximum End D SRHSub-Sub-TLVSub-TLV The Maximum End D SRH sub-sub-TLV specifies the maximum number of SIDs in an SRH when applying "End.DX6" and "End.DT6" functions. 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length |Max End D+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 6 Type (one octet) TBD-6 Length (one octet) 1 Max End D (8 bits)Max-End-D | +-+-+-+-+-+-+-+-+ o Type: 5 o Length: 4 (including padding to 32 bit aligned boundary for OSPF TLVs) o Max End DValueValue: 1 octet o An 8 bit unsigned integer. If this value is zero or thesub-sub-TLVsub-TLV isomitted,not advertised by an SRv6 capable router, then itis assumedMUST be considered that the router cannot apply "End.DX6" or "End.DT6" functions if the extension header right underneath the outer IPv6 header is an SRH. 2.2. SRv6Function Descriptor The SRv6Node SID TLV(defined in Section 2.4), P2PAn OSPFv3 SRv6SID Sub-TLV (definedenabled router may have multiple SRv6 SIDs instantiated inSection 2.5.1),its "My Local SID Table" (refer [I-D.filsfils-spring-srv6-network-programming]). OSPFv3 needs to advertise the SRv6 SIDs associated with the node andLANits functions (e.g. END, END.T, etc.) as specified in [I-D.filsfils-spring-srv6-network-programming] so that other routers in the area learn the SRv6 SIDs that can be used to program SRv6 paths through this node. SRv6 Node SIDSub-TLV (defined in Section 2.5.2), MUST includeTLV is a new optional top-level TLV of OSPFv3 Router Information LSA ([RFC7770]) and is used to advertise the SRv6 SIDs belonging to the node along with their associated functions. Every SRv6 enabled OSPFv3 router SHOULD advertise at least one SRv6 SID associated with END functionDescriptor. When includedfor its node as specified in [I-D.filsfils-spring-srv6-network-programming]. The router MAY advertise multiple instances of the SRv6 Node SIDTLV,TLV in its OSPFv3 Router Information LSA - one for each of thedescriptorSRv6 SIDs to be advertised. It isencoded asRECOMMENDED that the TLVs are ordered by increasing values of the SRv6 SIDs within aSub-TLV.single instance of the OSPFv3 Router LSA. Whenincluded inmultiple instances of the OSPFv3 Router Information LSA are necessary to accomodate aP2P/LANlarge number of SRv6SID sub-TLV, the descriptorSIDs, it isencoded as a Sub-Sub-TLV. The SRv6-function Descriptor encodes the function (and its flavors) bound toRECOMMENDED that the SRv6 Node SIDadvertised inTLVs are ordered by increasing values of the SRv6dodmain ([I-D.filsfils-spring-srv6-network-programming]). The formatSIDs across increasing instance numbers of the OSPFv3 Router Information LSA. When multiple SRv6Function Descriptor is shown in Figure 7. 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-|-+-+-+-+-+-+ | Type | +-+-+-+-+-+-+-+-+ | Length | +-+-+-+-+-+-+-+-+ | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Function (2 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 7 Type (one octet) TBD-7 Length (one octet) 3 Flags This document defines two flags to specify the flavor(s) ([I-D.filsfils-spring-srv6-network-programming]) associated withNode SID TLVs are received from a given router for the same SRv6function specified inSID value, the"Function" field: 0 1 2 3 4 5 6 7 +-+-|-+-+-+-+-+-+ |P|U| Reserved | +-+-+-+-+-+-+-+-+ Figure 8 P bit If set, thenreceiver MUST use thePSP flavor ([I-D.filsfils-spring-srv6-network-programming]) is associated withfirst occurrence of thefunction encodedTLV in the"function" field. U bitOSPFV3 Router Information Opaque LSA. Ifset, thentheUSP flavor ([I-D.filsfils-spring-srv6-network-programming]) is associated withSRv6 Node SID TLV for thefunction encodedsame SRv6 SID value appears in multiple OSPFv3 Router Information Opaque LSAs that have different flooding scopes, the"function" field. Reserved Reserved Bits SHOULD be transmitted as 0 and MUST be ignored on receipt. The second two octets encode the function. Function code points are definedTLV inSection 2.3. 2.3. SRv6 Function Code Points This section definesthecode points for supported functions associatedOSPFv3 Router Information Opaque LSA with the area- scoped flooding scope MUST be used. If the SRv6SIDs. Refer [I-D.filsfils-spring-srv6-network-programming]Node SID TLV forSRv6 functions. 0: Reserved. 1: End Function. 2: End.X Function. 3: End.DX6 Function. 4: End.DT6 Function. 2.4.the same SRv6 SID value appears in multiple OSPFv3 Router Information Opaque LSAs that have the same flooding scope, the TLVA new top level TLV is introducedin the OSPFv3to advertise one or more SRv6 Segment Identifiers (SIDs)Router Information Opaque LSA with the numerically smallest Instance ID MUST be used andeach SID is associated one or more SRv6 functions. [I-D.filsfils-spring-srv6-network-programming] defined some basic functions. This document defines code points for somesubsequent instances of thebasic SRv6 functions in Section 2.3. SRv6 functions may alsoTLV MUST be ignored. The OSPFv3 Router Information Opaque LSA can be advertised at any of the definedin other documentsopaque flooding scopes (link, area, orlocally configured.Autonomous System (AS)). For the purpose of SRv6 Node SID TLV advertisement, area- scoped flooding is REQUIRED. The format of OSPFv3 SRv6 Node SID TLV is shownin Figure 9.below 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Function-Flags| Function Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | SID Flags |SID-SizeSID-size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SID(variable)(variable - 32 bit aligned) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Sub-Sub-TLV-Len| Sub-Sub-TLVs| Sub-TLVs (variable) . . .+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure9 Type (one octet) TBD-8 Length (one octet) Variable One or more1: SRv6 SIDentries, eachNode TLV Where: Type: 16 bit field. TBD Length: 16 bit field. The total length of the value portion of the TLV. Reserved : 8 bit field. Should be set to 0 and MUST be ignored on receipt. Function Flags: 8 bit field whichhasdefine thefollowing format: Flags (One octet) The followingflags associated with the function. No flags aredefined:currently defined and SHOULD be set to 0 and MUST be ignored on receipt. Function Code: 16 bit field. The function code point for this SRv6 SID as defined in [I-D.filsfils-spring-srv6-network-programming]. Reserved : 16 bit field. Should be set to 0 and MUST be ignored on receipt. SID Flags: 8 bit field which define the flags associated with the SID 0 1 2 3 4 5 6 7 +-+-|-+-+-+-+-+-+ |D| Reserved | +-+-+-+-+-+-+-+-+ Figure102 * Dbit:bit (0x1) : When the SID is leaked from OSPFv3 backbone area to other areas, the D bit MUST be set. Otherwise, this bit MUST be clear. SIDs with the D bit set MUST NOT be leaked to OSPFv3 backbone area from others. This is to prevent looping.Reserved: The remaining bits* Other flags arereserved for future use. Theynot defined and SHOULD be set tozero on transmission0 and MUST be ignored onreception. SID-Size (one octet)receipt. SID Size : 8 bit field. Number of bits in the SID field. SID(1-16 octet): 1-16 octets. This field encodes the advertised SRv6 SID. The"SID-Size""SID-size" field can have thevalue in the range ofvalues 1-128 and indicates the number of bits in the SID. The SRv6 SID is encoded in the minimal number ofoctets32-bit aligned space for the given number of bits.Sub-Sub-TLV-Length(one octet) Number of octets used by sub-TLVs. Sub-Sub-TLVs (Variable) One or more functions associated with the advertised SID is specified bySub-TLVs : currently none defined. Used to advertise sub-TLVs that provide additional attributes for theSRv6-Function Descriptor Sub-TLV specified in Section 2.2. 2.5.given SRv6Neighbor SID TLVSID. 2.3. SRv6 SIDs Associated with Adjacencies Theadvertising of someSRv6 functionsmust be associated with a particular neighbor. As describedare defined in[I-D.ietf-spring-segment-routing], there[I-D.filsfils-spring-srv6-network-programming] include certain functions which aretwo typesspecific to links or adjacencies. The most basic ofSR adjacencies, onethis which ison point-to-pointcritical for linkand anotherstate routing protocols like OSPFv3 is the END.X function that is an instruction to forward to a specific neighbor on abroadcast/mulcast LAN. This section defines OSPFv3 extensions in order to advertisespecific link. These END.X SRv6 SIDsand their associated functionsare instantiated by SRv6 enabled OSPFv3 router forthese two cases. A singleall its adjacencies and installed in the local node's "My Local SID Table". These SRv6Adj-SID may associateSIDs along withoneothers that are defined in [I-D.filsfils-spring-srv6-network-programming] which are specific to links ormore SRv6 functions.adjacencies need to be advertised by OSPFv3 so that this information is available with all routers in the domain to influence the packet path via these specific functions over the specified adjacencies. The advertising of SRv6 SIDs and their functions that are specific to a particular neighbor are done via two different optional sub-TLVs of the Router-Link TLV as defined in[I-D.filsfils-spring-srv6-network-programming], other documents,[I-D.ietf-ospf-ospfv3-lsa-extend] as follows: o SRv6 SID Link Attribute Sub-TLV: for OSPFv3 adjacency over point- to-point orlocally configured. This document specifies howpoint-to-multipoint links and the adjacecny toadvertise End.Xthe Designated Router (DR) over broadcast andEnd.DX6 defined in [I-D.filsfils-spring-srv6-network-programming] usingnon-broadcast-multi- access (NBMA) links. o SRv6 SID LAN Link Attribute Sub-TLV: for OSPFv3extersons. 2.5.1. Pointadjacency on broadcast and NBMA links toPopint SRv6 Adj-SID Sub-TLVthe Backup DR and DR-Other neighbors. ThisSub-TLV is usedsub-TLV includes the OSPFv3 router-id of the neighbor and thus allows for multiple instances of this TLV for each neighbor toadvertisebe explicitly advertised under the Router-Link TLV for the same link. Every SRv6 enabled OSPFv3 router SHOULD instantiate at least oneorEND.X function with a unique SRv6 SID corresponding to each of its neighbor. A router MAY instantiate more than one SRv6SIDs associated with End.XSID for the END.X function for a single neighbor. The same SRv6 SID MAY be advertised for the END.X function corresponding to more than one neighbor. Thus multiple instances of the SRv6 SID Link Attribute andEnd.DX6SRv6functions overSID LAN Link Attribute sub-TLVs MAY be advertised within the Router Link TLV for apoint-to-point adjacency.single link. 2.3.1. SRv6 SID Link Attribute Sub-TLV The format of the"P2PSRv6Adj-SID"SID Link Attribute Sub-TLV is shownin Figure 11.below 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Function-Flags| Function Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | SID Flags |SID-SizeSID-size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SID(variable)(variable - 32 bit aligned) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Sub-Sub-TLV-Len| Sub-Sub-TLVs| Sub-TLVs (variable) . . .+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 11+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Where: Type(one octet) TBD-9 Length (one octet) Variable One or more SID entries, eachis TBD Length: 16 bit field. The total length of the value portion of the TLV. Reserved : 8 bit field. Should be set to 0 and MUST be ignored on receipt. Function Flags: 8 bit field whichhasdefine thefollowing format: Flags (One octet)flags associated with the function. No flags are currently definedinand SHOULD be set to 0 and MUST be ignored on receipt. Function Code: 16 bit field. The function code point for thisdocument. SID-Size (one octet)SRv6 SID as defined in [I-D.filsfils-spring-srv6-network-programming]. Reserved : 16 bit field. Should be set to 0 and MUST be ignored on receipt. SID Flags: 8 bit field which define the flags associated with the SID. No flags are currently defined and SHOULD be set to 0 and MUST be ignored on receipt. SID-size: Number of bits in the SID field.SID (1-16 octet)SID: 1-16 octets. This field encodes the advertised SRv6 SID. The"SID-Size""SID-size" field can have thevalue in the range ofvalues 1-128 and indicates the number of bits in the SID. The SRv6 SID is encoded in the minimal number ofoctets32-bit aligned space for the given number of bits.Sub-Sub-TLV-Length(one octet) Number of octets used by Sub-TLVs. Sub-Sub-TLVs (Variable) One or more functions associated with the advertised SID is specified by the SRv6 Function Descriptor Sub-TLV specified in Section 2.2. If the SRv6 Function Descriptor is encoded in the SRv6 P2P SID sub-TLV,Sub-TLVs : currently none defined. Used to advertise sub-TLVs that provide additional attributes for theencodedgiven SRv6SID function MUST include only the code points ofEND.X SID. 2.3.2. SRv6 SIDfunctions that require the specification of a neighbor to be correctly applied. 2.5.2.LANSRv6 Adj-SID sub-TLV ThisLink Attribute Sub-TLVis used to advertise one or more SRv6 SIDs associated with End.X and End.DX6 SRv6 functions over a LAN adjacency.The format of the"LANSRv6Adj-SID"SID LAN Link Attribute Sub-TLV is as shownin Figure 12.below 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Function-Flags| Function Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | SID Flags |SID-SizeSID-size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SID(variable)(variable - 32 bit aligned) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Sub-Sub-TLV-Len| Sub-Sub-TLVs| OSPFv3 Router-ID of neighbor | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub-TLVs (variable) . . .+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 12 Type (one octet) TBD-10 Length (one octet)+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Where o Type: TBD o Length: 16 bit value. VariableOne or more SID entries, each ofo Reserved : 8 bit field. Should be set to 0 and MUST be ignored on receipt. o Function Flags: 8 bit field whichhasdefine thefollowing format: Flags (One octet)flags associated with the function. No flags are currently definedinand SHOULD be set to 0 and MUST be ignored on receipt. o Function Code: 16 bit field. The function code point for thisdocument. SID-Size (one octet)SRv6 SID as defined in [I-D.filsfils-spring-srv6-network-programming]. o Reserved : 16 bit field. Should be set to 0 and MUST be ignored on receipt. o SID Flags: 8 bit field which define the flags associated with the SID. No flags are currently defined and SHOULD be set to 0 and MUST be ignored on receipt. o SID Size : 8 bit field. Number of bits in the SID field. o SID(1-16 octet): 1-16 octets. This field encodes the advertised SRv6 SID. The"SID-Size""SID-size" field can have thevalue in the range ofvalues 1-128 and indicates the number of bits in the SID. The SRv6 SID is encoded in the minimal number ofoctets32-bit aligned space for the given number of bits.Sub-Sub-TLV-Length(one octet) Number ofo Neighbor ID : 4 octetsused by sub-TLVs. Sub-Sub-TLVs (Variable) One or more functions associated withof OSPFv3 Router-id of theadvertised SID is specified byneighbor o Sub-TLVs : currently none defined. Used to advertise sub-TLVs that provide additional attributes for theSRv6-Function Descriptor Sub-TLV specifiedgiven SRv6 SID. 3. Security Considerations Existing security extensions as described inSection 2.2. If the[RFC5340] and [I-D.ietf-ospf-ospfv3-lsa-extend] apply to these SRv6Function Descriptorextensions. While OSPFv3 isencodedunder a single administrative domain, there can be deployments where potential attackers have access to one or more networks in theSRv6 P2P SID Sub-TLV, the encoded SRv6 SID functionOSPFv3 routing domain. In these deployments, stronger authentication mechanisms such as those specified in [RFC4552] SHOULD be used. Implementations MUSTinclude only the code points of SRv6 SID functionsassure thatrequire the specification ofmalformed TLV and Sub-TLV defined in this document are detected and do not provide aneighborvulnerability for attackers to crash the OSPFv3 router or routing process. Reception of malformed TLV or Sub-TLV SHOULD becorrectly applied. 3. Security Considerations This document does not introduce any security issue.counted and/or logged for further analysis. Logging of malformed TLVs and Sub-TLVs SHOULD be rate-limited to prevent a Denial of Service (DoS) attack (distributed or otherwise) from overloading the OSPFv3 control plane. 4. IANA Considerations This documentproposesspecifies updates to multiple OSPFv3 related IANAconsiderationsregistries asdescribed in the following sections.follows. 4.1.OSPFv3 Extensions for SRv6 SupportOSPF Parameters This document proposes the following new code points in the OSPF Router Information (RI) TLVs registry for OSPFv3 Extensions in order to support SRv6: 1. Type TBD: SRv6-CapabilitiesSub-TLV (Type TBD-1):TLV: Refer to Section 2.1. 2.Maximum SL Sub-Sub-TLV (Type TBD-2): Refer to Section 2.1.1. 3. Maximum End Pop SRH Sub-Sub-TLV (Type TBD-3): Refer to Section 2.1.2. 4. Maximum T.Insert SRH Sub-Sub-TLV (Type TBD-4): Refer to Section 2.1.3. 5. Maximum T.Encap SRH Sub-Sub-TLV (Type TBD-5): Refer to Section 2.1.4. 6. Maximum End D SRH Sub-Sub-TLV (Type TBD-6): Refer to Section 2.1.5. 7. SRv6 Function Descriptor (Type TBD-7): Refer to Section 2.2. 8.Type TBD: SRv6 Node SID TLV(Type TBD-8):: Refer to Section2.4. 9.2.2. 4.2. OSPFv3 Parameters This document proposes the following new code points in the OSPFv3 Extend-LSA Sub-TLV registry for OSPFv3 Extensions in order to support SRv6: 1. Type TBD: SRv6Point-to-Point Adj-SIDSID Link Attribute Sub-TLV(Type TBD-9):: Refer to Section2.5.1. 10.2.3.1. 2. Type TBD: SRv6 SID LANSRv6 Adj-SIDLink Attribute Sub-TLV(Type TBD-10):: Refer to Section2.5.2.2.3.2. 5. AcknowledgementsTBD.TBD 6. References 6.1. Normative References [I-D.filsfils-spring-srv6-network-programming] Filsfils, C., Leddy, J., daniel.voyer@bell.ca, d., daniel.bernier@bell.ca, d., Steinberg, D., Raszuk, R., Matsushima, S., Lebrun, D., Decraene, B., Peirens, B., Salsano, S., Naik, G., Elmalky, H., Jonnalagadda, P., Sharif, M., Ayyangar, A., Mynam, S., Henderickx, W., Bashandy, A., Raza, K., Dukes, D., Clad, F., and P. Camarillo, "SRv6 Network Programming", draft-filsfils- spring-srv6-network-programming-03 (work in progress), December 2017. [I-D.ietf-ospf-ospfv3-lsa-extend] Lindem, A., Roy, A., Goethals, D., Vallem, V., and F. Baker, "OSPFv3 LSA Extendibility", draft-ietf-ospf-ospfv3-lsa-extend-15lsa-extend-23 (work in progress),October 2017.January 2018. [I-D.ietf-spring-segment-routing] Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", draft-ietf-spring-segment-routing-15 (work in progress), January 2018. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>. [RFC4552] Gupta, M. and N. Melam, "Authentication/Confidentiality for OSPFv3", RFC 4552, DOI 10.17487/RFC4552, June 2006, <https://www.rfc-editor.org/info/rfc4552>. [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, <https://www.rfc-editor.org/info/rfc5340>. [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and S. Shaffer, "Extensions to OSPF for Advertising Optional Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, February 2016, <https://www.rfc-editor.org/info/rfc7770>. 6.2. Informative References[I-D.bashandy-isis-srv6-extensions] Ginsberg, L., Bashandy, A., Filsfils, C., and B. Decraene, "IS-IS Extensions to Support Routing over IPv6 Dataplane", draft-bashandy-isis-srv6-extensions-01 (work in progress), September 2017. [I-D.filsfils-spring-srv6-network-programming] Filsfils, C., Leddy, J., daniel.voyer@bell.ca, d., daniel.bernier@bell.ca, d., Steinberg, D., Raszuk, R., Matsushima, S., Lebrun, D., Decraene, B., Peirens, B., Salsano, S., Naik, G., Elmalky, H., Jonnalagadda, P., Sharif, M., Ayyangar, A., Mynam, S., Henderickx, W., Bashandy, A., Raza, K., Dukes, D., Clad, F., and P. Camarillo, "SRv6 Network Programming", draft-filsfils- spring-srv6-network-programming-01 (work in progress), June 2017.[I-D.ietf-6man-segment-routing-header] Previdi, S., Filsfils, C., Raza, K., Dukes, D., Leddy, J., Field, B., daniel.voyer@bell.ca, d., daniel.bernier@bell.ca, d., Matsushima, S., Leung, I., Linkova, J., Aries, E., Kosugi, T., Vyncke, E., Lebrun, D., Steinberg, D., and R. Raszuk, "IPv6 Segment Routing Header (SRH)",draft-ietf-6man- segment-routing-header-07draft-ietf-6man-segment-routing-header-08 (work in progress),July 2017. [I-D.ietf-spring-segment-routing] Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", draft-ietf- spring-segment-routing-12 (work in progress), June 2017.January 2018. Authors' Addresses Zhenbin Li Huawei Technologies Email: lizhenbin@huawei.com Zhibo Hu Huawei Technologies Email: huzhibo@huawei.com Dean Cheng Huawei Technologies Email: dean.cheng@huawei.com Ketan Talaulikar Cisco Systems India Email: ketant@cisco.com Peter Psenak Cisco Systems Slovakia Email: ppsenak@cisco.com