| < draft-ietf-spring-sr-yang-22.txt | draft-ietf-spring-sr-yang-23.txt > | |||
|---|---|---|---|---|
| SPRING Working Group S. Litkowski | SPRING Working Group S. Litkowski | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: February 27, 2021 Futurewei | Expires: May 20, 2021 Futurewei | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| P. Sarkar | P. Sarkar | |||
| Individual | Individual | |||
| J. Tantsura | J. Tantsura | |||
| Apstra | Apstra | |||
| August 26, 2020 | November 16, 2020 | |||
| YANG Data Model for Segment Routing | YANG Data Model for Segment Routing | |||
| draft-ietf-spring-sr-yang-22 | draft-ietf-spring-sr-yang-23 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model for segment routing | This document defines a YANG data model for segment routing | |||
| configuration and operation, which is to be augmented by different | configuration and operation, which is to be augmented by different | |||
| segment routing data planes. The document also defines a YANG model | segment routing data planes. The document also defines a YANG model | |||
| that is intended to be used on network elements to configure or | that is intended to be used on network elements to configure or | |||
| operate segment routing MPLS data plane, as well as some generic | operate segment routing MPLS data plane, as well as some generic | |||
| containers to be reused by IGP protocol modules to support segment | containers to be reused by IGP protocol modules to support segment | |||
| routing. | routing. | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on February 27, 2021. | This Internet-Draft will expire on May 20, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 6, line 41 ¶ | skipping to change at page 6, line 41 ¶ | |||
| "last-hop-behavior" configuration dictates the PHP behavior: | "last-hop-behavior" configuration dictates the PHP behavior: | |||
| "explicit-null", "php", or "non-php". | "explicit-null", "php", or "non-php". | |||
| o SRGB (Segment Routing Global Block): Defines a list of label | o SRGB (Segment Routing Global Block): Defines a list of label | |||
| blocks represented by a pair of lower-bound/upper-bound labels. | blocks represented by a pair of lower-bound/upper-bound labels. | |||
| The SRGB is also agnostic to the control plane used. So all | The SRGB is also agnostic to the control plane used. So all | |||
| routing-protocol instance will have to advertise the same SRGB. | routing-protocol instance will have to advertise the same SRGB. | |||
| o SRLB (Segment Routing Local Block): Defines a list of label blocks | o SRLB (Segment Routing Local Block): Defines a list of label blocks | |||
| represented by a pair of lower-bound/upper-bound labels, reserved | represented by a pair of lower-bound/upper-bound labels, reserved | |||
| for lcoal SIDs. | for local SIDs. | |||
| 5. IGP Control plane configuration | 5. IGP Control plane configuration | |||
| Support of segment-routing extensions for a particular IGP control | Support of segment-routing extensions for a particular IGP control | |||
| plane is done by augmenting routing-protocol configuration with | plane is done by augmenting routing-protocol configuration with | |||
| segment-routing extensions. This augmentation SHOULD be part of | segment-routing extensions. This augmentation SHOULD be part of | |||
| separate YANG modules in order to not create any dependency for | separate YANG modules in order to not create any dependency for | |||
| implementations to support all protocol extensions. | implementations to support all protocol extensions. | |||
| This module defines groupings that SHOULD be used by IGP segment | This module defines groupings that SHOULD be used by IGP segment | |||
| routing modules. | routing modules. | |||
| The "controlplane-cfg" grouping defines the generic global | The "sr-control-plane" grouping defines the generic global | |||
| configuration for the IGP. | configuration for the IGP. | |||
| The "enabled" leaf enables segment-routing extensions for the | The "enabled" leaf enables segment-routing extensions for the | |||
| routing-protocol instance. | routing-protocol instance. | |||
| The "bindings" container controls the routing-protocol instance's | The "bindings" container controls the routing-protocol instance's | |||
| advertisement of local bindings and the processing of received | advertisement of local bindings and the processing of received | |||
| bindings. | bindings. | |||
| 5.1. IGP interface configuration | 5.1. IGP interface configuration | |||
| The interface configuration is part of the "igp-interface-cfg" | The interface configuration is part of the "igp-interface" grouping | |||
| grouping and includes Adjacency SID properties. | and includes Adjacency SID properties. | |||
| 5.1.1. Adjacency SID properties | 5.1.1. Adjacency SID properties | |||
| 5.1.1.1. Bundling | 5.1.1.1. Bundling | |||
| In case of parallel IP links between routers, an additional Adjacency | In case of parallel IP links between routers, an additional Adjacency | |||
| SID [RFC8402] may be advertised representing more than one adjacency | SID [RFC8402] may be advertised representing more than one adjacency | |||
| (i.e., a bundle of adjacencies). The "advertise-adj-group-sid" | (i.e., a bundle of adjacencies). The "advertise-adj-group-sid" | |||
| configuration controls whether or not an additional adjacency SID is | configuration controls whether or not an additional adjacency SID is | |||
| advertised. | advertised. | |||
| skipping to change at page 8, line 21 ¶ | skipping to change at page 8, line 21 ¶ | |||
| B-Flag for the Adj-SID advertisement will be set. If the "dual" | B-Flag for the Adj-SID advertisement will be set. If the "dual" | |||
| option is used and if the interface is protected, two Adj-SIDs will | option is used and if the interface is protected, two Adj-SIDs will | |||
| be advertised for the interface adjacencies. One Adj-SID will always | be advertised for the interface adjacencies. One Adj-SID will always | |||
| have the B-Flag set and the other will have the B-Flag clear. This | have the B-Flag set and the other will have the B-Flag clear. This | |||
| option is intended to be used in the case of traffic engineering | option is intended to be used in the case of traffic engineering | |||
| where a path must use either protected segments or non-protected | where a path must use either protected segments or non-protected | |||
| segments. | segments. | |||
| 6. State Data | 6. State Data | |||
| The operational states contains information reflecting the usage of | The operational states contain information reflecting the usage of | |||
| allocated SRGB labels. | allocated SRGB labels. | |||
| It also includes a list of all global SIDs, their associated | It also includes a list of all global SIDs, their associated | |||
| bindings, and other information such as the source protocol and | bindings, and other information such as the source protocol and | |||
| algorithm. | algorithm. | |||
| 7. Notifications | 7. Notifications | |||
| The model defines the following notifications for segment-routing. | The model defines the following notifications for segment-routing. | |||
| o segment-routing-global-srgb-collision: Raised when a control plane | o segment-routing-global-srgb-collision: Raised when a control plane | |||
| advertised SRGB blocks have conflicts. | advertised SRGB blocks have conflicts. | |||
| o segment-routing-global-sid-collision: Raised when a control plane | o segment-routing-global-sid-collision: Raised when a control plane | |||
| advertised index is already associated with another target (in | advertised index is already associated with another target (in | |||
| this version, the only defined targets are IPv4 and IPv6 | this version, the only defined targets are IPv4 and IPv6 | |||
| prefixes). | prefixes). | |||
| o segment-routing-index-out-of-range: Raised when a control plane | o segment-routing-index-out-of-range: Raised when a control plane | |||
| advertised index fall outside the range of SRGBs configured for | advertised index falls outside the range of SRGBs configured for | |||
| the network device. | the network device. | |||
| 8. YANG Modules | 8. YANG Modules | |||
| There are three YANG modules included in this document. | There are three YANG modules included in this document. | |||
| The following RFCs and drafts are not referenced in the document text | The following RFCs and drafts are not referenced in the document text | |||
| but are referenced in the ietf-segment-routing-common.yang and/or | but are referenced in the ietf-segment-routing-common.yang and/or | |||
| ietf-segment-routing.yang module: [RFC6991], [RFC8294], [RFC8476], | ietf-segment-routing.yang module: [RFC6991], [RFC8294], [RFC8476], | |||
| [RFC8491], [RFC8665], and [RFC8667]. | [RFC8491], [RFC8665], and [RFC8667]. | |||
| 8.1. YANG Module for Segment Routing | 8.1. YANG Module for Segment Routing | |||
| ietf-segment-routing.yang: This module defines a generic framework | ietf-segment-routing.yang: This module defines a generic framework | |||
| for Segment Routing, and it is to be augmented by models for | for Segment Routing, and it is to be augmented by models for | |||
| different SR data planes. | different SR data planes. | |||
| <CODE BEGINS> file "ietf-segment-routing@2020-08-17.yang" | <CODE BEGINS> file "ietf-segment-routing@2020-11-16.yang" | |||
| module ietf-segment-routing { | module ietf-segment-routing { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | |||
| prefix sr; | prefix sr; | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix rt; | prefix rt; | |||
| reference "RFC 8349: A YANG Data Model for Routing | reference "RFC 8349: A YANG Data Model for Routing | |||
| Management (NMDA Version)"; | Management (NMDA Version)"; | |||
| } | } | |||
| skipping to change at page 10, line 21 ¶ | skipping to change at page 10, line 21 ¶ | |||
| see the RFC itself for full legal notices. | see the RFC itself for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2020-08-17 { | revision 2020-11-16 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | } | |||
| augment "/rt:routing" { | augment "/rt:routing" { | |||
| description | description | |||
| "This module augments routing data model (RFC 8349) | "This module augments routing data model (RFC 8349) | |||
| with Segment Routing (SR)."; | with Segment Routing (SR)."; | |||
| container segment-routing { | container segment-routing { | |||
| skipping to change at page 12, line 11 ¶ | skipping to change at page 12, line 11 ¶ | |||
| see the RFC itself for full legal notices. | see the RFC itself for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2020-08-17 { | revision 2020-11-16 { | |||
| description | description | |||
| "Initial version"; | "Initial version"; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | } | |||
| feature sid-last-hop-behavior { | feature sid-last-hop-behavior { | |||
| description | description | |||
| "Configurable last hop behavior."; | "Configurable last hop behavior."; | |||
| reference "RFC 8660: Segment Routing with the MPLS Data Plane"; | reference "RFC 8660: Segment Routing with the MPLS Data Plane"; | |||
| } | } | |||
| skipping to change at page 16, line 22 ¶ | skipping to change at page 16, line 22 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 8.3. YANG Module for Segment Routing MPLS | 8.3. YANG Module for Segment Routing MPLS | |||
| ietf-segment-routing-mpls.yang: This module defines the configuration | ietf-segment-routing-mpls.yang: This module defines the configuration | |||
| and operation states for Segment Routing MPLS data plane. | and operation states for Segment Routing MPLS data plane. | |||
| <CODE BEGINS> file "ietf-segment-routing-mpls@2020-08-17.yang" | <CODE BEGINS> file "ietf-segment-routing-mpls@2020-11-16.yang" | |||
| module ietf-segment-routing-mpls { | module ietf-segment-routing-mpls { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-mpls"; | namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-mpls"; | |||
| prefix sr-mpls; | prefix sr-mpls; | |||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| reference "RFC 6991: Common YANG Data Types"; | ||||
| } | ||||
| import ietf-routing { | ||||
| prefix rt; | ||||
| reference "RFC 8349: A YANG Data Model for Routing | ||||
| Management (NMDA Version)"; | ||||
| } | ||||
| import ietf-interfaces { | ||||
| prefix if; | ||||
| reference "RFC 8343: A YANG Data Model for Interface | ||||
| Management (NMDA Version)"; | ||||
| } | ||||
| import ietf-routing-types { | ||||
| prefix rt-types; | ||||
| reference "RFC 8294: Common YANG Data Types for the | ||||
| Routing Area"; | ||||
| } | ||||
| import ietf-segment-routing { | ||||
| prefix sr; | ||||
| } | ||||
| import ietf-segment-routing-common { | ||||
| prefix sr-cmn; | ||||
| } | ||||
| organization | ||||
| "IETF SPRING - SPRING Working Group"; | ||||
| contact | ||||
| "WG Web: <http://tools.ietf.org/wg/spring/> | ||||
| WG List: <mailto:spring@ietf.org> | ||||
| Author: Stephane Litkowski | import ietf-inet-types { | |||
| <mailto:slitkows.ietf@gmail.com> | prefix inet; | |||
| Author: Yingzhen Qu | reference "RFC 6991: Common YANG Data Types"; | |||
| <mailto:yingzhen.qu@futurewei.com> | } | |||
| Author: Acee Lindem | import ietf-routing { | |||
| <mailto:acee@cisco.com> | prefix rt; | |||
| Author: Pushpasis Sarkar | reference "RFC 8349: A YANG Data Model for Routing | |||
| <mailto:pushpasis.ietf@gmail.com> | Management (NMDA Version)"; | |||
| Author: Jeff Tantsura | } | |||
| <jefftant.ietf@gmail.com> | import ietf-interfaces { | |||
| prefix if; | ||||
| reference "RFC 8343: A YANG Data Model for Interface | ||||
| Management (NMDA Version)"; | ||||
| } | ||||
| import ietf-routing-types { | ||||
| prefix rt-types; | ||||
| reference "RFC 8294: Common YANG Data Types for the | ||||
| Routing Area"; | ||||
| } | ||||
| import ietf-segment-routing { | ||||
| prefix sr; | ||||
| } | ||||
| import ietf-segment-routing-common { | ||||
| prefix sr-cmn; | ||||
| } | ||||
| organization | ||||
| "IETF SPRING - SPRING Working Group"; | ||||
| contact | ||||
| "WG Web: <http://tools.ietf.org/wg/spring/> | ||||
| WG List: <mailto:spring@ietf.org> | ||||
| "; | Author: Stephane Litkowski | |||
| description | <mailto:slitkows.ietf@gmail.com> | |||
| "The YANG module defines a generic configuration model for | Author: Yingzhen Qu | |||
| Segment Routing MPLS data plane. | <mailto:yingzhen.qu@futurewei.com> | |||
| Author: Acee Lindem | ||||
| <mailto:acee@cisco.com> | ||||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Jeff Tantsura | ||||
| <jefftant.ietf@gmail.com> | ||||
| This YANG model conforms to the Network Management | "; | |||
| Datastore Architecture (NMDA) as described in RFC 8242. | description | |||
| "The YANG module defines a generic configuration model for | ||||
| Segment Routing MPLS data plane. | ||||
| Copyright (c) 2020 IETF Trust and the persons identified as | This YANG model conforms to the Network Management | |||
| authors of the code. All rights reserved. | Datastore Architecture (NMDA) as described in RFC 8242. | |||
| Redistribution and use in source and binary forms, with or | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| without modification, is permitted pursuant to, and subject | authors of the code. All rights reserved. | |||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; | Redistribution and use in source and binary forms, with or | |||
| see the RFC itself for full legal notices. | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | This version of this YANG module is part of RFC XXXX; | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | see the RFC itself for full legal notices. | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here."; | ||||
| reference "RFC XXXX"; | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here."; | ||||
| revision 2020-08-17 { | reference "RFC XXXX"; | |||
| description | ||||
| "Initial Version"; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| feature mapping-server { | revision 2020-11-16 { | |||
| description | description | |||
| "Support for Segment Routing Mapping Server (SRMS)."; | "Initial Version"; | |||
| reference "RFC 8661: Segment Routing MPLS Interworking with LDP"; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | } | |||
| feature protocol-srgb { | feature mapping-server { | |||
| description | description | |||
| "Support for per-protocol Segment Routing Global Block | "Support for Segment Routing Mapping Server (SRMS)."; | |||
| (SRGB) configuration."; | reference "RFC 8661: Segment Routing MPLS Interworking | |||
| reference "RFC 8660: Segment Routing with the MPLS Data Plane"; | with LDP"; | |||
| } | } | |||
| feature max-sid-depth { | feature protocol-srgb { | |||
| description | description | |||
| "Support for signaling MSD (Maximum SID Depth) in IGP."; | "Support for per-protocol Segment Routing Global Block | |||
| reference "RFC 8476: Signaling Maximum SID Depth (MSD) | (SRGB) configuration."; | |||
| Using OSPF | reference "RFC 8660: Segment Routing with the MPLS | |||
| RFC 8491: Signaling Maximum SID Depth (MSD) | Data Plane"; | |||
| Using IS-IS"; | } | |||
| } | ||||
| typedef system-id { | feature max-sid-depth { | |||
| type string { | description | |||
| pattern | "Support for signaling MSD (Maximum SID Depth) in IGP."; | |||
| '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; | reference "RFC 8476: Signaling Maximum SID Depth (MSD) | |||
| Using OSPF | ||||
| RFC 8491: Signaling Maximum SID Depth (MSD) | ||||
| Using IS-IS"; | ||||
| } | } | |||
| description | ||||
| "This type defines IS-IS system-id using pattern, | ||||
| An example system-id is 0143.0438.AEF0"; | ||||
| } | ||||
| typedef router-id { | typedef system-id { | |||
| type union { | type string { | |||
| type system-id; | pattern | |||
| type rt-types:router-id; | '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; | |||
| } | ||||
| description | ||||
| "This type defines IS-IS system-id using pattern, | ||||
| An example system-id is 0143.0438.AEF0"; | ||||
| } | } | |||
| description | ||||
| "OSPF/BGP router-id or ISIS system ID."; | ||||
| } | ||||
| grouping sr-controlplane { | typedef router-id { | |||
| description | type union { | |||
| "Defines protocol configuration."; | type system-id; | |||
| type rt-types:router-id; | ||||
| } | ||||
| description | ||||
| "OSPF/BGP router-id or ISIS system ID."; | ||||
| } | ||||
| container segment-routing { | grouping sr-control-plane { | |||
| description | description | |||
| "Segment Routing global configuration."; | "Defines protocol configuration."; | |||
| leaf enabled { | container segment-routing { | |||
| type boolean; | ||||
| default "false"; | ||||
| description | ||||
| "Enables segment-routing protocol extensions."; | ||||
| } | ||||
| container bindings { | ||||
| if-feature mapping-server; | ||||
| description | description | |||
| "Control of binding advertisement and reception."; | "Segment Routing global configuration."; | |||
| container advertise { | leaf enabled { | |||
| type boolean; | ||||
| default "false"; | ||||
| description | description | |||
| "Control advertisement of local mappings | "Enables segment-routing protocol extensions."; | |||
| in binding TLVs."; | } | |||
| leaf-list policies { | container bindings { | |||
| type leafref { | if-feature mapping-server; | |||
| path "/rt:routing/sr:segment-routing/sr-mpls:sr-mpls" | description | |||
| + "/sr-mpls:bindings/sr-mpls:mapping-server" | "Control of binding advertisement and reception."; | |||
| + "/sr-mpls:policy/sr-mpls:name"; | container advertise { | |||
| description | ||||
| "Control advertisement of local mappings | ||||
| in binding TLVs."; | ||||
| leaf-list policies { | ||||
| type leafref { | ||||
| path "/rt:routing/sr:segment-routing/sr-mpls:sr-mpls" | ||||
| + "/sr-mpls:bindings/sr-mpls:mapping-server" | ||||
| + "/sr-mpls:policy/sr-mpls:name"; | ||||
| } | ||||
| description | ||||
| "List of binding advertisement policies."; | ||||
| } | ||||
| } | } | |||
| leaf receive { | ||||
| type boolean; | ||||
| default "true"; | ||||
| description | description | |||
| "List of binding advertisement policies."; | "Allow the reception and usage of binding TLVs."; | |||
| } | } | |||
| } | } | |||
| leaf receive { | ||||
| type boolean; | ||||
| default "true"; | ||||
| description | ||||
| "Allow the reception and usage of binding TLVs."; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | ||||
| grouping igp-interface { | grouping igp-interface { | |||
| description | ||||
| "Grouping for IGP interface configuration."; | ||||
| container segment-routing { | ||||
| description | description | |||
| "Container for SR interface configuration."; | "Grouping for IGP interface configuration."; | |||
| container adjacency-sid { | container segment-routing { | |||
| description | description | |||
| "Adjacency SID configuration."; | "Container for SR interface configuration."; | |||
| reference "RFC 8660: Segment Routing with the MPLS | container adjacency-sid { | |||
| Data Plane"; | ||||
| list adj-sids { | ||||
| key "value"; | ||||
| uses sr-cmn:sid-value-type; | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| leaf protected { | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "It is used to protect the manual adj-SID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "The load-balancing factor over parallel adjacencies."; | ||||
| reference "RFC 8402: Segment Routing Architecture | ||||
| RFC 8665: OSPF Extensions for Segment Routing | ||||
| RFC 8667: IS-IS Extensions for Segment Routing"; | ||||
| } | ||||
| description | ||||
| "List of adj-sid configuration."; | ||||
| } | ||||
| list advertise-adj-group-sid { | ||||
| key "group-id"; | ||||
| description | description | |||
| "Control advertisement of S flag. Enable advertisement | "Adjacency SID configuration."; | |||
| of a common Adj-SID for parallel links."; | reference "RFC 8660: Segment Routing with the MPLS | |||
| leaf group-id { | Data Plane"; | |||
| type uint32; | list adj-sids { | |||
| key "value"; | ||||
| uses sr-cmn:sid-value-type; | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| leaf protected { | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "It is used to protect the manual adj-SID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "The load-balancing factor over parallel adjacencies."; | ||||
| reference "RFC 8402: Segment Routing Architecture | ||||
| RFC 8665: OSPF Extensions for Segment Routing | ||||
| RFC 8667: IS-IS Extensions for Segment | ||||
| Routing"; | ||||
| } | ||||
| description | description | |||
| "The value is an internal value to identify a | "List of adj-sid configuration."; | |||
| group-ID. Interfaces with the same group-ID will be | ||||
| bundled together."; | ||||
| } | } | |||
| } | list advertise-adj-group-sid { | |||
| leaf advertise-protection { | key "group-id"; | |||
| type enumeration { | description | |||
| enum "single" { | "Control advertisement of S flag. Enable advertisement | |||
| of a common Adj-SID for parallel links."; | ||||
| leaf group-id { | ||||
| type uint32; | ||||
| description | description | |||
| "A single Adj-SID is associated with the adjacency | "The value is an internal value to identify a | |||
| and reflects the protection configuration."; | group-ID. Interfaces with the same group-ID will be | |||
| bundled together."; | ||||
| } | } | |||
| enum "dual" { | } | |||
| description | leaf advertise-protection { | |||
| "Two Adj-SIDs will be associated with the adjacency | type enumeration { | |||
| if the interface is protected. In this case, will | enum "single" { | |||
| be advertised with backup flag set, the other will | description | |||
| be advertised with the backup flag clear. In case | "A single Adj-SID is associated with the adjacency | |||
| protection is not configured, single Adj-SID will | and reflects the protection configuration."; | |||
| be advertised with the backup flag clear."; | } | |||
| enum "dual" { | ||||
| description | ||||
| "Two Adj-SIDs will be associated with the adjacency | ||||
| if the interface is protected. In this case, will | ||||
| be advertised with backup flag set, the other will | ||||
| be advertised with the backup flag clear. In case | ||||
| protection is not configured, single Adj-SID will | ||||
| be advertised with the backup flag clear."; | ||||
| } | ||||
| } | } | |||
| description | ||||
| "If set, the Adj-SID refers to a protected adjacency."; | ||||
| } | } | |||
| description | ||||
| "If set, the Adj-SID refers to a protected adjacency."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | ||||
| grouping max-sid-depth { | grouping max-sid-depth { | |||
| description | ||||
| "Maximum SID Depth (MSD)D configuration grouping."; | ||||
| leaf node-msd { | ||||
| type uint8; | ||||
| description | ||||
| "Node MSD is the lowest MSD supported by the node."; | ||||
| } | ||||
| container link-msd { | ||||
| description | description | |||
| "MSD supported by an individual interface."; | "Maximum SID Depth (MSD)D configuration grouping."; | |||
| list link-msds { | leaf node-msd { | |||
| key "interface"; | type uint8; | |||
| description | description | |||
| "List of link MSDs."; | "Node MSD is the lowest MSD supported by the node."; | |||
| leaf interface { | } | |||
| type if:interface-ref; | container link-msd { | |||
| description | description | |||
| "Reference to device interface."; | "MSD supported by an individual interface."; | |||
| } | list link-msds { | |||
| leaf msd { | key "interface"; | |||
| type uint8; | ||||
| description | description | |||
| "MSD supported by the interface."; | "List of link MSDs."; | |||
| leaf interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Reference to device interface."; | ||||
| } | ||||
| leaf msd { | ||||
| type uint8; | ||||
| description | ||||
| "MSD supported by the interface."; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | ||||
| augment "/rt:routing/sr:segment-routing" { | augment "/rt:routing/sr:segment-routing" { | |||
| description | ||||
| "This augments routing data model (RFC 8349) | ||||
| with Segment Routing (SR)."; | ||||
| container sr-mpls { | ||||
| description | description | |||
| "Segment Routing global configuration."; | "This augments routing data model (RFC 8349) | |||
| uses sr-cmn:node-capabilities; | with Segment Routing (SR)."; | |||
| container msd { | container sr-mpls { | |||
| if-feature "max-sid-depth"; | ||||
| description | ||||
| "MSD configuration."; | ||||
| uses max-sid-depth; | ||||
| } | ||||
| container bindings { | ||||
| description | description | |||
| "List of bindings."; | "Segment Routing global configuration."; | |||
| container mapping-server { | uses sr-cmn:node-capabilities; | |||
| if-feature "mapping-server"; | container msd { | |||
| if-feature "max-sid-depth"; | ||||
| description | description | |||
| "Configuration of mapping-server local entries."; | "MSD configuration."; | |||
| list policy { | uses max-sid-depth; | |||
| key "name"; | } | |||
| container bindings { | ||||
| description | ||||
| "List of bindings."; | ||||
| container mapping-server { | ||||
| if-feature "mapping-server"; | ||||
| description | description | |||
| "List mapping-server policies."; | "Configuration of mapping-server local entries."; | |||
| leaf name { | list policy { | |||
| type string; | key "name"; | |||
| description | ||||
| "Name of the mapping policy."; | ||||
| } | ||||
| container entries { | ||||
| description | description | |||
| "IPv4/IPv6 mapping entries."; | "List mapping-server policies."; | |||
| list mapping-entry { | leaf name { | |||
| key "prefix algorithm"; | type string; | |||
| description | description | |||
| "Mapping entries."; | "Name of the mapping policy."; | |||
| uses sr-cmn:prefix-sid; | } | |||
| container entries { | ||||
| description | ||||
| "IPv4/IPv6 mapping entries."; | ||||
| list mapping-entry { | ||||
| key "prefix algorithm"; | ||||
| description | ||||
| "Mapping entries."; | ||||
| uses sr-cmn:prefix-sid; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | container connected-prefix-sid-map { | |||
| container connected-prefix-sid-map { | ||||
| description | ||||
| "Prefix SID configuration."; | ||||
| list connected-prefix-sid { | ||||
| key "prefix algorithm"; | ||||
| description | description | |||
| "List of prefix SID mapped to IPv4/IPv6 | "Prefix SID configuration."; | |||
| local prefixes."; | list connected-prefix-sid { | |||
| uses sr-cmn:prefix-sid; | key "prefix algorithm"; | |||
| uses sr-cmn:last-hop-behavior; | description | |||
| } | "List of prefix SID mapped to IPv4/IPv6 | |||
| local prefixes."; | ||||
| } | uses sr-cmn:prefix-sid; | |||
| container local-prefix-sid { | uses sr-cmn:last-hop-behavior; | |||
| description | } | |||
| "Local sid configuration."; | } | |||
| list local-prefix-sid { | container local-prefix-sid { | |||
| key "prefix algorithm"; | ||||
| description | description | |||
| "List of local IPv4/IPv6 prefix-sids."; | "Local sid configuration."; | |||
| uses sr-cmn:prefix-sid; | list local-prefix-sid { | |||
| key "prefix algorithm"; | ||||
| description | ||||
| "List of local IPv4/IPv6 prefix-sids."; | ||||
| uses sr-cmn:prefix-sid; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | container global-srgb { | |||
| container global-srgb { | ||||
| description | ||||
| "Global SRGB configuration."; | ||||
| uses sr-cmn:srgb; | ||||
| } | ||||
| container srlb { | ||||
| description | ||||
| "Segment Routing Local Block (SRLB) configuration."; | ||||
| uses sr-cmn:srlb; | ||||
| } | ||||
| list label-blocks { | ||||
| config false; | ||||
| description | ||||
| "List of label blocks currently in use."; | ||||
| leaf lower-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Lower bound of the label block."; | ||||
| } | ||||
| leaf upper-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Upper bound of the label block."; | ||||
| } | ||||
| leaf size { | ||||
| type uint32; | ||||
| description | ||||
| "Number of indexes in the block."; | ||||
| } | ||||
| leaf free { | ||||
| type uint32; | ||||
| description | ||||
| "Number of free indexes in the block."; | ||||
| } | ||||
| leaf used { | ||||
| type uint32; | ||||
| description | description | |||
| "Number of indexes in use in the block."; | "Global SRGB configuration."; | |||
| uses sr-cmn:srgb; | ||||
| } | } | |||
| leaf scope { | container srlb { | |||
| type enumeration { | ||||
| enum "global" { | ||||
| description | ||||
| "Global SID."; | ||||
| } | ||||
| enum "local" { | ||||
| description | ||||
| "Local SID."; | ||||
| } | ||||
| } | ||||
| description | description | |||
| "Scope of this label block."; | "Segment Routing Local Block (SRLB) configuration."; | |||
| uses sr-cmn:srlb; | ||||
| } | } | |||
| } | ||||
| container sid-db { | list label-blocks { | |||
| config false; | config false; | |||
| description | ||||
| "List of prefix and SID associations."; | ||||
| list sid { | ||||
| key "target sid source source-protocol binding-type"; | ||||
| ordered-by system; | ||||
| description | description | |||
| "SID Binding."; | "List of label blocks currently in use."; | |||
| leaf target { | leaf lower-bound { | |||
| type string; | type uint32; | |||
| description | description | |||
| "Defines the target of the binding. It can be a | "Lower bound of the label block."; | |||
| prefix or something else."; | ||||
| } | } | |||
| leaf sid { | leaf upper-bound { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Index associated with the prefix."; | "Upper bound of the label block."; | |||
| } | } | |||
| leaf algorithm { | leaf size { | |||
| type uint8; | type uint32; | |||
| description | description | |||
| "Algorithm to be used for the prefix SID."; | "Number of indexes in the block."; | |||
| reference "RFC 8665: OSPF Extensions for Segment Routing | ||||
| RFC 8667: IS-IS Extensions for Segment Routing"; | ||||
| } | } | |||
| leaf source { | leaf free { | |||
| type inet:ip-address; | type uint32; | |||
| description | description | |||
| "IP address of the router that owns the binding."; | "Number of free indexes in the block."; | |||
| } | } | |||
| leaf used { | leaf used { | |||
| type boolean; | type uint32; | |||
| description | ||||
| "Indicates if the binding is install in the | ||||
| forwarding plane."; | ||||
| } | ||||
| leaf source-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol that owns the binding"; | ||||
| } | ||||
| leaf binding-type { | ||||
| type enumeration { | ||||
| enum "prefix-sid" { | ||||
| description | ||||
| "Binding is learned from a prefix SID."; | ||||
| } | ||||
| enum "binding-tlv" { | ||||
| description | ||||
| "Binding is learned from a binding TLV."; | ||||
| } | ||||
| } | ||||
| description | description | |||
| "Type of binding."; | "Number of indexes in use in the block."; | |||
| } | } | |||
| leaf scope { | leaf scope { | |||
| type enumeration { | type enumeration { | |||
| enum "global" { | enum "global" { | |||
| description | description | |||
| "Global SID."; | "Global SID."; | |||
| } | } | |||
| enum "local" { | enum "local" { | |||
| description | description | |||
| "Local SID."; | "Local SID."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "SID scoping."; | "Scope of this label block."; | |||
| } | ||||
| } | ||||
| container sid-db { | ||||
| config false; | ||||
| description | ||||
| "List of prefix and SID associations."; | ||||
| list sid { | ||||
| key "target sid source source-protocol binding-type"; | ||||
| ordered-by system; | ||||
| description | ||||
| "SID Binding."; | ||||
| leaf target { | ||||
| type string; | ||||
| description | ||||
| "Defines the target of the binding. It can be a | ||||
| prefix or something else."; | ||||
| } | ||||
| leaf sid { | ||||
| type uint32; | ||||
| description | ||||
| "Index associated with the prefix."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "Algorithm to be used for the prefix SID."; | ||||
| reference "RFC 8665: OSPF Extensions for Segment Routing | ||||
| RFC 8667: IS-IS Extensions for Segment | ||||
| Routing"; | ||||
| } | ||||
| leaf source { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "IP address of the router that owns the binding."; | ||||
| } | ||||
| leaf used { | ||||
| type boolean; | ||||
| description | ||||
| "Indicates if the binding is install in the | ||||
| forwarding plane."; | ||||
| } | ||||
| leaf source-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol that owns the binding"; | ||||
| } | ||||
| leaf binding-type { | ||||
| type enumeration { | ||||
| enum "prefix-sid" { | ||||
| description | ||||
| "Binding is learned from a prefix SID."; | ||||
| } | ||||
| enum "binding-tlv" { | ||||
| description | ||||
| "Binding is learned from a binding TLV."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Type of binding."; | ||||
| } | ||||
| leaf scope { | ||||
| type enumeration { | ||||
| enum "global" { | ||||
| description | ||||
| "Global SID."; | ||||
| } | ||||
| enum "local" { | ||||
| description | ||||
| "Local SID."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "SID scoping."; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | notification segment-routing-global-srgb-collision { | |||
| notification segment-routing-global-srgb-collision { | ||||
| description | ||||
| "This notification is sent when SRGB blocks received from | ||||
| routers conflict."; | ||||
| list srgb-collisions { | ||||
| description | description | |||
| "List of SRGB blocks that conflict."; | "This notification is sent when SRGB blocks received from | |||
| leaf lower-bound { | routers conflict."; | |||
| type uint32; | list srgb-collisions { | |||
| description | description | |||
| "Lower value in the block."; | "List of SRGB blocks that conflict."; | |||
| leaf lower-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Lower value in the block."; | ||||
| } | ||||
| leaf upper-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Upper value in the block."; | ||||
| } | ||||
| leaf routing-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference for SRGB collision."; | ||||
| } | ||||
| leaf originating-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Originating Router ID of this SRGB block."; | ||||
| } | ||||
| } | } | |||
| leaf upper-bound { | } | |||
| notification segment-routing-global-sid-collision { | ||||
| description | ||||
| "This notification is sent when a new mapping is learned | ||||
| containing s mapping where the SID is already used. | ||||
| The notification generation must be throttled with at least | ||||
| a 5 second gap between notifications."; | ||||
| leaf received-target { | ||||
| type string; | ||||
| description | ||||
| "Target received in the router advertisement that caused | ||||
| the SID collision."; | ||||
| } | ||||
| leaf new-sid-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Router ID that advertised the conflicting SID."; | ||||
| } | ||||
| leaf original-target { | ||||
| type string; | ||||
| description | ||||
| "Target already available in the database with the same SID | ||||
| as the received target."; | ||||
| } | ||||
| leaf original-sid-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Router-ID for the router that originally advertised the | ||||
| conflicting SID, i.e., the instance in the database."; | ||||
| } | ||||
| leaf index { | ||||
| type uint32; | type uint32; | |||
| description | description | |||
| "Upper value in the block."; | "Value of the index used by two different prefixes."; | |||
| } | } | |||
| leaf routing-protocol { | leaf routing-protocol { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
| } | } | |||
| description | description | |||
| "Routing protocol reference for SRGB collision."; | "Routing protocol reference for conflicting SID."; | |||
| } | ||||
| leaf originating-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Originating Router ID of this SRGB block."; | ||||
| } | } | |||
| } | } | |||
| } | notification segment-routing-index-out-of-range { | |||
| notification segment-routing-global-sid-collision { | ||||
| description | ||||
| "This notification is sent when a new mapping is learned | ||||
| containing s mapping where the SID is already used. | ||||
| The notification generation must be throttled with at least | ||||
| a 5 second gap between notifications."; | ||||
| leaf received-target { | ||||
| type string; | ||||
| description | ||||
| "Target received in the router advertisement that caused | ||||
| the SID collision."; | ||||
| } | ||||
| leaf new-sid-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Router ID that advertised the conflicting SID."; | ||||
| } | ||||
| leaf original-target { | ||||
| type string; | ||||
| description | ||||
| "Target already available in the database with the same SID | ||||
| as the received target."; | ||||
| } | ||||
| leaf original-sid-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Router-ID for the router that originally advertised the | ||||
| conflicting SID, i.e., the instance in the database."; | ||||
| } | ||||
| leaf index { | ||||
| type uint32; | ||||
| description | description | |||
| "Value of the index used by two different prefixes."; | "This notification is sent when a binding is received | |||
| } | containing a segment index which is out of the local | |||
| leaf routing-protocol { | configured ranges. The notification generation must be | |||
| type leafref { | throttled with at least a 5 second gap between | |||
| path "/rt:routing/rt:control-plane-protocols/" | notifications."; | |||
| + "rt:control-plane-protocol/rt:name"; | leaf received-target { | |||
| type string; | ||||
| description | ||||
| "Target received in the router advertisement with | ||||
| the out-of-range index."; | ||||
| } | } | |||
| description | leaf received-index { | |||
| "Routing protocol reference for conflicting SID."; | type uint32; | |||
| } | description | |||
| } | "Value of the index received."; | |||
| notification segment-routing-index-out-of-range { | } | |||
| description | leaf routing-protocol { | |||
| "This notification is sent when a binding is received | type leafref { | |||
| containing a segment index which is out of the local | path "/rt:routing/rt:control-plane-protocols/" | |||
| configured ranges. The notification generation must be | + "rt:control-plane-protocol/rt:name"; | |||
| throttled with at least a 5 second gap between | } | |||
| notifications."; | description | |||
| leaf received-target { | "Routing protocol reference for out-of-range indexd."; | |||
| type string; | ||||
| description | ||||
| "Target received in the router advertisement with | ||||
| the out-of-range index."; | ||||
| } | ||||
| leaf received-index { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the index received."; | ||||
| } | ||||
| leaf routing-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | } | |||
| description | ||||
| "Routing protocol reference for out-of-range indexd."; | ||||
| } | } | |||
| } | } | |||
| } | <CODE ENDS> | |||
| <CODE ENDS> | ||||
| 9. Security Considerations | 9. Security Considerations | |||
| The YANG modules specified in this document define a schema for data | The YANG modules specified in this document define a schema for data | |||
| that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
| as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
| transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| [RFC5246]. | [RFC5246]. | |||
| End of changes. 92 change blocks. | ||||
| 471 lines changed or deleted | 473 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||