| < draft-ietf-bier-te-yang-02.txt | draft-ietf-bier-te-yang-03.txt > | |||
|---|---|---|---|---|
| BIER WG Z. Zhang | BIER WG Z. Zhang | |||
| Internet-Draft ZTE Corporation | Internet-Draft ZTE Corporation | |||
| Intended status: Standards Track C. Wang | Intended status: Standards Track C. Wang | |||
| Expires: February 13, 2021 Individual | Expires: November 18, 2021 Individual | |||
| R. Chen | R. Chen | |||
| ZTE Corporation | ZTE Corporation | |||
| F. Hu | F. Hu | |||
| Individual | Individual | |||
| M. Sivakumar | M. Sivakumar | |||
| Juniper networks | Juniper networks | |||
| H. Chen | H. Chen | |||
| China Telecom | Individual | |||
| August 12, 2020 | May 17, 2021 | |||
| A YANG data model for Traffic Engineering for Bit Index Explicit | A YANG data model for Traffic Engineering for Bit Index Explicit | |||
| Replication (BIER-TE) | Replication (BIER-TE) | |||
| draft-ietf-bier-te-yang-02 | draft-ietf-bier-te-yang-03 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model for Traffic Engineering for | This document defines a YANG data model for Traffic Engineering for | |||
| Bit Index Explicit Replication (BIER-TE) configuration and operation. | Bit Index Explicit Replication (BIER-TE) configuration and operation. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 41 ¶ | |||
| 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 13, 2021. | This Internet-Draft will expire on November 18, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 2 | 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 2 | |||
| 3. BIER-TE configuration . . . . . . . . . . . . . . . . . . . . 4 | 3. BIER-TE configuration . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 4 | 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5. RPCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 5. RPCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 6. BIER TE YANG model . . . . . . . . . . . . . . . . . . . . . 4 | 6. BIER TE YANG model . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 8. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 15 | 8. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 9. Normative References . . . . . . . . . . . . . . . . . . . . 15 | 9. Normative References . . . . . . . . . . . . . . . . . . . . 16 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 1. Introduction | 1. Introduction | |||
| [I-D.ietf-bier-te-arch] introduces an architecture for BIER-TE: | [I-D.ietf-bier-te-arch] introduces an architecture for BIER-TE: | |||
| Traffic Engineering for Bit Index Explicit Replication (BIER). This | Traffic Engineering for Bit Index Explicit Replication (BIER). This | |||
| document defines a YANG data model for BIER TE. The content is in | document defines a YANG data model for BIER TE. The content is in | |||
| keeping with the TE architecture draft. In addition, this YANG data | keeping with the TE architecture draft. In addition, this YANG data | |||
| model contains BIER TE frr items of [I-D.eckert-bier-te-frr]. | model contains BIER TE frr items of [I-D.eckert-bier-te-frr]. | |||
| 2. Design of the Data Model | 2. Design of the Data Model | |||
| The BIER TE YANG model includes BIER TE adjancency configuration and | The BIER TE YANG model includes BIER TE adjancency configuration and | |||
| forwarding items configuration. Some features can also be used to | forwarding items configuration. Some features can also be used to | |||
| enhance BIER TE function, like ECMP and FRR. | enhance BIER TE function, like ECMP and FRR. | |||
| module: ietf-bier-te | module: ietf-bier-te | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
| +--rw bier-te | +--rw bier-te | |||
| +--rw te-adj | +--rw te-adj | |||
| | +--rw adj-if* [name] | | +--rw adj-if* [name] | |||
| | +--rw name if:interface-ref | | +--rw name if:interface-ref | |||
| | +--rw subdomain* [subdomain-id] | | +--rw subdomain* [subdomain-id] | |||
| | | +--rw subdomain-id uint16 | | | +--rw subdomain-id uint16 | |||
| | | +--rw si* [si] | | | +--rw si* [si] | |||
| | | +--rw si uint16 | | | +--rw si uint16 | |||
| | | +--rw adj-id* uint16 | | | +--rw adj-id* uint16 | |||
| | +--rw adj-type? enumeration | | +--rw adj-type? enumeration | |||
| +--rw te-fwd | +--rw te-fwd | |||
| +--rw subdomain* [subdomain-id] | +--rw subdomain* [subdomain-id] | |||
| +--rw subdomain-id uint16 | +--rw subdomain-id uint16 | |||
| +--rw bsl* [fwd-bsl] | +--rw bsl* [fwd-bsl] | |||
| | +--rw fwd-bsl uint16 | | +--rw fwd-bsl uint16 | |||
| | +--rw si* [si] | | +--rw si* [si] | |||
| | +--rw si uint16 | | +--rw si uint16 | |||
| | +--rw te-bift-id | | +--rw te-bift-id | |||
| | | +--rw type? enumeration | | | +--rw encap-type? encapsulation-type | |||
| | | +--rw value rt-types:mpls-label | | | +--rw value rt-types:mpls-label | |||
| | +--rw fwd-items* [te-bp] | | +--rw fwd-items* [te-bp] | |||
| | +--rw te-bp uint16 | | +--rw te-bp uint16 | |||
| | +--rw te-ecmp? boolean {bier-te-ecmp}? | | +--rw fwd-next-hop* [next-hop] | |||
| | +--rw out-info | | | +--rw next-hop inet:ip-address | |||
| | | +--rw out-if-list* [fwd-intf] | | | +--rw dnr-flag? boolean | |||
| | | +--rw fwd-intf if:interface-ref | | | +--rw fwd-type | |||
| | | +--rw dnr-flag? boolean | | | | +--rw (fwd-type) | |||
| | | +--rw fwd-type | | | | +--:(connected) | |||
| | | | +--rw (fwd-type) | | | | +--:(routed) | |||
| | | | +--:(connected) | | | | +--:(local-decap) | |||
| | | | +--:(routed) | | | | +--:(other) | |||
| | | | +--:(local-decap) | | | +--rw te-out-bift-id | |||
| | | | +--:(other) | | | | +--rw te-out-bift-id* [encap-type] | |||
| | | +--rw te-out-bift-id | | | | +--rw encap-type encapsulation-type | |||
| | | +--rw type? enumeration | | | | +--rw value | |||
| | | +--rw value rt-types:mpls-label | | | | rt-types:mpls-label | |||
| | +--rw te-frr {bier-te-frr}? | | | +--rw out-if-list* [fwd-intf] | |||
| | +--rw frr-index? | | | +--rw fwd-intf if:interface-ref | |||
| -> ../../../../../te-frr-items/btaft/frr-index | | +--rw te-frr {bier-te-frr}? | |||
| | +--rw resetbitmask | | +--rw frr-index? leafref | |||
| | +--rw bit-string* [index] | | +--rw resetbitmask | |||
| | +--rw index uint8 | | +--rw bit-string* [index] | |||
| | +--rw bitmask? uint32 | | +--rw index uint8 | |||
| +--rw te-frr-items {bier-te-frr}? | | +--rw bitmask? uint32 | |||
| +--rw btaft* [frr-index] | +--rw te-frr-items {bier-te-frr}? | |||
| +--rw frr-index uint16 | +--rw btaft* [frr-index] | |||
| +--rw frr-si uint16 | +--rw frr-index uint16 | |||
| +--rw frr-bsl uint16 | +--rw frr-si uint16 | |||
| +--rw addbitmask | +--rw frr-bsl uint16 | |||
| +--rw bit-string* [index] | +--rw addbitmask | |||
| +--rw index uint8 | +--rw bit-string* [index] | |||
| +--rw bitmask? uint32 | +--rw index uint8 | |||
| +--rw bitmask? uint32 | ||||
| notifications: | notifications: | |||
| +---n bier-te-notification | +---n bier-te-notification | |||
| +--ro bp-is-zero* [if-index] | +--ro bp-is-zero* [if-index] | |||
| +--ro if-index if:interface-ref | +--ro if-index if:interface-ref | |||
| +--ro adj-type? enumeration | +--ro adj-type? enumeration | |||
| 3. BIER-TE configuration | 3. BIER-TE configuration | |||
| The BIER-TE forwarding item is indexed by the combination of sub- | The BIER-TE forwarding item is indexed by the combination of sub- | |||
| domain-id, BitStringLength and set identifier. | domain-id, BitStringLength and set identifier. | |||
| One interface can be used in different sub-domain, so the BIER TE | One interface can be used in different sub-domain, so the BIER TE | |||
| adjacency information is managed by BIER TE function other than by | adjacency information is managed by BIER TE function other than by | |||
| interface itself. | interface itself. | |||
| skipping to change at page 4, line 31 ¶ | skipping to change at page 4, line 32 ¶ | |||
| If the adjacency id of one adjacency is set to zero, the value is | If the adjacency id of one adjacency is set to zero, the value is | |||
| invalid. The notification should be sent to controller and network | invalid. The notification should be sent to controller and network | |||
| manager. | manager. | |||
| 5. RPCs | 5. RPCs | |||
| TBD. | TBD. | |||
| 6. BIER TE YANG model | 6. BIER TE YANG model | |||
| <CODE BEGINS> file "ietf-bier-te@2020-02-05.yang" | <CODE BEGINS> file "ietf-bier-te@2021-05-17.yang" | |||
| module ietf-bier-te { | module ietf-bier-te { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bier-te"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bier-te"; | |||
| prefix bier-te; | prefix bier-te; | |||
| import ietf-routing { | import ietf-inet-types { | |||
| prefix "rt"; | prefix "inet"; | |||
| reference | reference | |||
| "RFC 8349: A YANG Data Model for Routing Management | "RFC 6991: Common YANG Data Types"; | |||
| (NMDA Version)"; | } | |||
| } | ||||
| import ietf-interfaces { | import ietf-routing { | |||
| prefix "if"; | prefix "rt"; | |||
| reference | reference | |||
| "RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8349: A YANG Data Model for Routing Management | |||
| } | (NMDA Version)"; | |||
| import ietf-routing-types { | ||||
| prefix "rt-types"; | ||||
| reference | ||||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
| } | ||||
| organization " IETF BIER (Bit Indexed Explicit Replication) | } | |||
| Working Group"; | ||||
| contact | ||||
| "WG Web: <http://tools.ietf.org/wg/bier/> | ||||
| WG List: <mailto:bier@ietf.org> | ||||
| Editor: Zheng Zhang | import ietf-interfaces { | |||
| <mailto:zhang.zheng@zte.com.cn> | prefix "if"; | |||
| Editor: Cui Wang | reference | |||
| <mailto:wang.cui1@zte.com.cn> | "RFC 8343: A YANG Data Model for Interface Management"; | |||
| Editor: Ran Chen | } | |||
| <mailto:chen.ran@zte.com.cn> | ||||
| Editor: Fangwei Hu | ||||
| <mailto:hu.fangwei@zte.com.cn> | ||||
| Editor: Mahesh Sivakumar | ||||
| <mailto:masivaku@cisco.com> | ||||
| Editor: Huanan Chen | ||||
| <mailto:chenhuanan@gsta.com> | ||||
| "; | ||||
| description | import ietf-routing-types { | |||
| "The module defines the YANG definitions for Traffic | prefix "rt-types"; | |||
| Engineering for Bit Index Explicit Replication (BIER-TE). | reference | |||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
| } | ||||
| Copyright (c) 2020 IETF Trust and the persons identified as | organization " IETF BIER (Bit Indexed Explicit Replication) | |||
| authors of the code. All rights reserved. | Working Group"; | |||
| contact | ||||
| "WG Web: <http://tools.ietf.org/wg/bier/> | ||||
| WG List: <mailto:bier@ietf.org> | ||||
| Redistribution and use in source and binary forms, with or | Editor: Zheng Zhang | |||
| without modification, is permitted pursuant to, and subject | <mailto:zhang.zheng@zte.com.cn> | |||
| to the license terms contained in, the Simplified BSD | Editor: Cui Wang | |||
| License set forth in Section 4.c of the IETF Trust's Legal | <mailto:lindawangjoy@gmail.com> | |||
| Provisions Relating to IETF Documents | Editor: Ran Chen | |||
| (https://trustee.ietf.org/license-info). | <mailto:chen.ran@zte.com.cn> | |||
| Editor: Fangwei Hu | ||||
| <mailto:hufwei@gmail.com> | ||||
| Editor: Mahesh Sivakumar | ||||
| <mailto:sivakumar.mahesh@gmail.com> | ||||
| Editor: Huanan Chen | ||||
| <mailto:chenhuanan@189.cn> | ||||
| "; | ||||
| This version of this YANG module is part of RFC XXXX | description | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC | "The module defines the YANG definitions for Traffic | |||
| itself for full legal notices. | Engineering for Bit Index Explicit Replication (BIER-TE). | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | authors of the code. All rights reserved. | |||
| '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-02-05 { | Redistribution and use in source and binary forms, with or | |||
| description | without modification, is permitted pursuant to, and subject | |||
| "Initial revision."; | to the license terms contained in, the Simplified BSD | |||
| reference | License set forth in Section 4.c of the IETF Trust's Legal | |||
| "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | Provisions Relating to IETF Documents | |||
| Explicit Replication (BIER-TE)"; | (https://trustee.ietf.org/license-info). | |||
| } | ||||
| /* | This version of this YANG module is part of RFC XXXX | |||
| * Features | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC | |||
| */ | itself for full legal notices. | |||
| feature bier-te-frr { | ||||
| description | ||||
| "Support Fast Re-route feature in BIER TE."; | ||||
| reference | ||||
| "I-D.eckert-bier-te-frr: Protection Methods for BIER-TE"; | ||||
| } | ||||
| feature bier-te-ecmp { | ||||
| description | ||||
| "Support ECMP feature in BIER TE."; | ||||
| reference | ||||
| "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | ||||
| Explicit Replication (BIER-TE), section 3.2.3"; | ||||
| } | ||||
| /* | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | |||
| * Identities | '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."; | ||||
| identity bier-te { | revision 2021-05-17 { | |||
| base rt:control-plane-protocol; | description | |||
| description | "Initial revision."; | |||
| "Identity for the Traffic Engineering for Bit Index Explicit | reference | |||
| Replication (BIER-TE)."; | "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | |||
| reference | Explicit Replication (BIER-TE)"; | |||
| "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | } | |||
| Explicit Replication (BIER-TE)"; | ||||
| } | ||||
| grouping bit-string { | /* | |||
| description | * Features | |||
| "The bit string which each bit represents an adjacency. | */ | |||
| It is encapsulated in BIER header."; | feature bier-te-frr { | |||
| reference | description | |||
| "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | "Support Fast Re-route feature in BIER TE."; | |||
| Explicit Replication (BIER-TE), section 3.3. | reference | |||
| RFC8279: Multicast Using Bit Index Explicit Replication | "I-D.eckert-bier-te-frr: Protection Methods for BIER-TE"; | |||
| (BIER). | } | |||
| RFC8296: Encapsulation for Bit Index Explicit Replication | ||||
| (BIER) in MPLS and Non-MPLS Networks."; | ||||
| list bit-string { | /* | |||
| key "index"; | * Identities | |||
| description | */ | |||
| "As the definition in RFC 8279, the bit-string lengths are | ||||
| 64, 128, 256, 512, 1024, 2048, 4096 bits. The according | ||||
| encapsulation is defined in RFC8296. BIER-TE uses the | ||||
| similar function for bit string."; | ||||
| leaf index { | identity bier-te { | |||
| type uint8 { | base rt:control-plane-protocol; | |||
| range "2..128"; | description | |||
| } | "Identity for the Traffic Engineering for Bit Index Explicit | |||
| description | Replication (BIER-TE)."; | |||
| "The index of bit-mask. The minimum index value is 64 and | reference | |||
| the corresponding bit string length is 64 bits. The | "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | |||
| maximum index value is 128 and the corresponding | Explicit Replication (BIER-TE)"; | |||
| bit-string length is 4096 bits."; | } | |||
| } | ||||
| leaf bitmask { | ||||
| type uint32; | ||||
| description "The bit-string in 4-octet units."; | ||||
| } | ||||
| } | ||||
| } // bit-string | ||||
| grouping adj-type { | typedef encapsulation-type { | |||
| description "The collection of all possible adjacency type."; | type enumeration { | |||
| enum MPLS { | ||||
| description | ||||
| "The forwarding encapsulation is MPLS | ||||
| described in RFC8296 section 2.1."; | ||||
| } | ||||
| enum Ethernet { | ||||
| description | ||||
| "The forwarding encapsulation is Ethernet, | ||||
| which is belonging to non-mpls part | ||||
| described in RFC8296 section 2.2."; | ||||
| } | ||||
| enum IPv6 { | ||||
| description | ||||
| "The forwarding encapsulation is IPv6, | ||||
| which is belonging to non-mpls part | ||||
| described in RFC8296 section 2.2."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "The encapsulation type of the BIER-TE packet. | ||||
| If this type is not set, MPLS is the default type."; | ||||
| } // encapsulation-type | ||||
| leaf adj-type { | grouping bit-string { | |||
| type enumeration { | description | |||
| enum p2p { | "The bit string which each bit represents an adjacency. | |||
| description "Describes p2p adjacency."; | It is encapsulated in BIER header."; | |||
| } | reference | |||
| enum bfer { | "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | |||
| description "Describes bfer adjacency."; | Explicit Replication (BIER-TE), section 3.3. | |||
| } | RFC8279: Multicast Using Bit Index Explicit Replication | |||
| enum leaf-bfer { | (BIER). | |||
| description | RFC8296: Encapsulation for Bit Index Explicit Replication | |||
| "Describes leaf-bfer adjacency. There is no next BFR that | (BIER) in MPLS and Non-MPLS Networks."; | |||
| the packet should be forwarded."; | ||||
| } | ||||
| enum lan { | ||||
| description "Describes lan adjacency."; | ||||
| } | ||||
| enum spoke { | ||||
| description "Describes spoke adjacency of hub-and-spoke."; | ||||
| } | ||||
| enum ring-clockwise { | ||||
| description "Describes clockwise adjacency in ring."; | ||||
| } | ||||
| enum ring-counterclockwise { | ||||
| description "Describes counterclockwise adjacency in ring."; | ||||
| } | ||||
| enum ecmp { | ||||
| description | ||||
| "Describes ecmp adjacency. When the type is set to ecmp, | ||||
| the corresponding ecmp entry should be used to balance | ||||
| the load."; | ||||
| } | ||||
| enum virtual-link { | ||||
| description | ||||
| "Describes virtual adjacency between two indirect connect | ||||
| nodes."; | ||||
| } | ||||
| enum other { | ||||
| description "Describes other id type of adjacency."; | ||||
| } | ||||
| } | ||||
| description "The collection of all possible adjacency type."; | ||||
| } | ||||
| } // adj-type | ||||
| grouping te-bift-id { | list bit-string { | |||
| description "The index of BIER forwarding items. It usually | key "index"; | |||
| represents the combination of [SD, BSL, SI]."; | description | |||
| leaf type { | "As the definition in RFC 8279, the bit-string lengths are | |||
| type enumeration { | 64, 128, 256, 512, 1024, 2048, 4096 bits. The according | |||
| enum mpls { | encapsulation is defined in RFC8296. BIER-TE uses the | |||
| description | similar function for bit string."; | |||
| "The bift-id value is represent the BIER TE mpls | ||||
| forwarding plane. It is a mpls label."; | ||||
| } | ||||
| enum eth { | ||||
| description | ||||
| "The bift-id value is represent the BIER TE ethernet | ||||
| forwarding plane. It is an index of ethernet | ||||
| encapsulation."; | ||||
| } | ||||
| enum other { | ||||
| description "Describes other type of te-bift-id."; | ||||
| } | leaf index { | |||
| } | type uint8 { | |||
| description "The types of BIER TE bift-id. If this type | range "2..128"; | |||
| is not set, mpls is default type."; | } | |||
| } | description | |||
| leaf value { | "The index of bit-mask. The minimum index value is 64 and | |||
| type rt-types:mpls-label; | the corresponding bit string length is 64 bits. The | |||
| mandatory true; | maximum index value is 128 and the corresponding | |||
| description | bit-string length is 4096 bits."; | |||
| "The bift-id value of the forwarding item. It can be a mpls | } | |||
| label or an index of ethernet encapsulation which is used | leaf bitmask { | |||
| to represent specific combination of [SD, BSL, SI]. The | type uint32; | |||
| ethernet index value is the same range (20bits) as mpls | description "The bit-string in 4-octet units."; | |||
| label."; | } | |||
| } | } | |||
| } // te-bift-id | } // bit-string | |||
| grouping te-items { | grouping adj-type { | |||
| description "The BIER TE forwarding items collection."; | description "The collection of all possible adjacency type."; | |||
| container out-info { | leaf adj-type { | |||
| description | type enumeration { | |||
| "The information of out forwarding packets. Includes the | enum p2p { | |||
| outbound interface and the bift-id of next hop."; | description "Describes p2p adjacency."; | |||
| } | ||||
| enum bfer { | ||||
| description "Describes bfer adjacency."; | ||||
| } | ||||
| enum leaf-bfer { | ||||
| description | ||||
| "Describes leaf-bfer adjacency. There is no next BFR that | ||||
| the packet should be forwarded."; | ||||
| } | ||||
| enum lan { | ||||
| description "Describes lan adjacency."; | ||||
| } | ||||
| enum spoke { | ||||
| description "Describes spoke adjacency of hub-and-spoke."; | ||||
| } | ||||
| enum ring-clockwise { | ||||
| description "Describes clockwise adjacency in ring."; | ||||
| } | ||||
| enum ring-counterclockwise { | ||||
| description "Describes counterclockwise adjacency in ring."; | ||||
| } | ||||
| enum ecmp { | ||||
| description | ||||
| "Describes ecmp adjacency. When the type is set to ecmp, | ||||
| the corresponding ecmp entry should be used to balance | ||||
| the load."; | ||||
| } | ||||
| enum virtual-link { | ||||
| description | ||||
| "Describes virtual adjacency between two indirect connect | ||||
| nodes."; | ||||
| } | ||||
| enum other { | ||||
| description "Describes other id type of adjacency."; | ||||
| } | ||||
| } | ||||
| description "The collection of all possible adjacency type."; | ||||
| } | ||||
| } // adj-type | ||||
| list out-if-list { | grouping te-items { | |||
| key "fwd-intf"; | description "The BIER TE forwarding items collection."; | |||
| description | ||||
| "The outbound interface information for forwarding."; | ||||
| leaf fwd-intf { | list fwd-next-hop { | |||
| type if:interface-ref; | key "next-hop"; | |||
| mandatory true; | description | |||
| description | "The next hop information for forwarding. | |||
| "The out interface of this forwarding item."; | If ECMP function defined in section 3.2.3 is used, | |||
| } | multiple next hops may be existed. | |||
| leaf dnr-flag { | If ECMP function is not enabled, | |||
| type boolean; | the next hop may be one only."; | |||
| description | ||||
| "When the flag is set to 1, the BP of adjacency should not | leaf next-hop { | |||
| be reset when packet copies are created. The flag makes | type inet:ip-address; | |||
| sense only when the forwarding type is 'connected'."; | mandatory true; | |||
| } | description "Next hop address."; | |||
| container fwd-type { | } | |||
| description | leaf dnr-flag { | |||
| "The collection of all possible forwarding types."; | type boolean; | |||
| choice fwd-type { | description | |||
| mandatory true; | "When the flag is set to 1, the BP of adjacency should not | |||
| case connected { | be reset when packet copies are created. The flag makes | |||
| description | sense only when the forwarding type is 'connected'."; | |||
| "The forwarding type is connected. Mostly connected | } | |||
| interfaces."; | container fwd-type { | |||
| } | description | |||
| case routed { | "The collection of all possible forwarding types."; | |||
| description | choice fwd-type { | |||
| "The forwarding type is routed. Mostly not connected | mandatory true; | |||
| interfaces."; | case connected { | |||
| } | description | |||
| case local-decap { | "The forwarding type is connected. Mostly connected | |||
| description | interfaces."; | |||
| "Means that the packet should be decapsulated and | } | |||
| forward out of BIER domain."; | case routed { | |||
| } | description | |||
| case other { | "The forwarding type is routed. Mostly not connected | |||
| description | interfaces."; | |||
| "Means that the packet should be discarded."; | } | |||
| case local-decap { | ||||
| description | ||||
| "Means that the packet should be decapsulated and | ||||
| forward out of BIER domain."; | ||||
| } | } | |||
| description | case other { | |||
| "The collection of all possible forwarding types."; | description | |||
| } | "Means that the packet should be discarded."; | |||
| } // fwd-type | } | |||
| description | ||||
| "The collection of all possible forwarding types."; | ||||
| } | ||||
| } // fwd-type | ||||
| container te-out-bift-id { | container te-out-bift-id { | |||
| description | description | |||
| "The bift-id information corresponding to a specific | "The bift-id information corresponding to a specific | |||
| outbound interface."; | outbound interface."; | |||
| uses te-bift-id; | ||||
| } | ||||
| } | ||||
| } | ||||
| } // te-items | ||||
| /* | list te-out-bift-id { | |||
| * data nodes | key "encap-type"; | |||
| */ | leaf encap-type { | |||
| augment "/rt:routing/rt:control-plane-protocols/" | type encapsulation-type; | |||
| +"rt:control-plane-protocol" { | description | |||
| description "The BIER TE information."; | "The encapsulation type of BIER-TE packet."; | |||
| container bier-te { | } | |||
| description "The BIER TE information container."; | leaf value { | |||
| type rt-types:mpls-label; | ||||
| mandatory true; | ||||
| description | ||||
| "The bift-id value of the forwarding item. | ||||
| It can be a mpls label or an index for ethernet | ||||
| or IPv6 encapsulation, which is used to represent | ||||
| specific combination of [SD, BSL, SI]. | ||||
| The ethernet or IPv6 index value is the same range | ||||
| (20bits) as mpls label. | ||||
| This value MUST not be set to 0."; | ||||
| } | ||||
| description | ||||
| "The bift-id value and the encapsulation type | ||||
| for the BIER-TE packet."; | ||||
| } | ||||
| } | ||||
| container te-adj { | list out-if-list { | |||
| description "The BIER TE adjacency information."; | key "fwd-intf"; | |||
| list adj-if { | description | |||
| key "name"; | "The outbound interface information for forwarding."; | |||
| description "List of BIER-TE interfaces."; | ||||
| leaf name { | ||||
| type if:interface-ref; | ||||
| description "Interface name reference."; | ||||
| } | ||||
| list subdomain { | ||||
| key "subdomain-id"; | ||||
| description | ||||
| "The sub-domain which the interface belongs to. | ||||
| One interface can belong to many subdomains."; | ||||
| leaf subdomain-id { | leaf fwd-intf { | |||
| type uint16; | type if:interface-ref; | |||
| description "The sub-domain-id of this sub-domain."; | mandatory true; | |||
| reference | description | |||
| "RFC 8279: Multicast Using Bit Index Explicit | "The out interface of this forwarding item."; | |||
| Replication (BIER)"; | } | |||
| } | } | |||
| list si { | } // next-hop | |||
| key "si"; | } // te-items | |||
| description "The set identifier value."; | ||||
| leaf si{ | /* | |||
| type uint16; | * data nodes | |||
| mandatory true; | */ | |||
| description | augment "/rt:routing/rt:control-plane-protocols/" | |||
| "The set identifier of this forwarding item."; | +"rt:control-plane-protocol" { | |||
| } | description "The BIER TE information."; | |||
| leaf-list adj-id { | container bier-te { | |||
| type uint16; | description "The BIER TE information container."; | |||
| description "The ID of an adjacency."; | ||||
| } | ||||
| } | ||||
| } | ||||
| uses adj-type; | ||||
| } | ||||
| } // te-adj | ||||
| container te-fwd { | container te-adj { | |||
| description "The BIER TE forwarding information."; | description "The BIER TE adjacency information."; | |||
| list adj-if { | ||||
| key "name"; | ||||
| description "List of BIER-TE interfaces."; | ||||
| leaf name { | ||||
| type if:interface-ref; | ||||
| description "Interface name reference."; | ||||
| } | ||||
| list subdomain { | ||||
| key "subdomain-id"; | ||||
| description | ||||
| "The sub-domain which the interface belongs to. | ||||
| One interface can belong to many subdomains."; | ||||
| list subdomain { | leaf subdomain-id { | |||
| key "subdomain-id"; | type uint16; | |||
| description | description "The sub-domain-id of this sub-domain."; | |||
| "The sub-domain which the interface belongs to. | reference | |||
| One interface can belong to many subdomains."; | "RFC 8279: Multicast Using Bit Index Explicit | |||
| Replication (BIER)"; | ||||
| } | ||||
| list si { | ||||
| key "si"; | ||||
| description "The set identifier value."; | ||||
| leaf subdomain-id { | leaf si{ | |||
| type uint16; | type uint16; | |||
| description "The sub-domain-id of this sub-domain."; | mandatory true; | |||
| reference | description | |||
| "RFC 8279: Multicast Using Bit Index Explicit | "The set identifier of this forwarding item."; | |||
| Replication (BIER)"; | } | |||
| } | leaf-list adj-id { | |||
| list bsl { | type uint16; | |||
| key "fwd-bsl"; | description "The ID of an adjacency."; | |||
| description "The forwarding items in one BSL."; | } | |||
| leaf fwd-bsl { | } | |||
| type uint16; | } | |||
| description "The value of bitstringlength."; | uses adj-type; | |||
| } | } | |||
| list si { | } // te-adj | |||
| key "si"; | ||||
| description | ||||
| "The forwarding items in one combination of SD, | ||||
| BSL and SI."; | ||||
| leaf si{ | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description | ||||
| "The set identifier of this forwarding item."; | ||||
| } | ||||
| container te-bift-id { | ||||
| description | ||||
| "The bift-id which is used to locate the specific | ||||
| forwarding item."; | ||||
| uses te-bift-id; | ||||
| } | ||||
| list fwd-items { | container te-fwd { | |||
| key "te-bp"; | description "The BIER TE forwarding information."; | |||
| description | ||||
| "The forwarding information of one BIER TE item."; | ||||
| leaf te-bp { | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description | ||||
| "The bit index of a BIER TE forwarding item."; | ||||
| } | ||||
| leaf te-ecmp { | list subdomain { | |||
| if-feature bier-te-ecmp; | key "subdomain-id"; | |||
| type boolean; | description | |||
| description | "The sub-domain which the interface belongs to. | |||
| "The list of the ecmp paths. When the type of | One interface can belong to many subdomains."; | |||
| BP is set to ecmp, this interface ecmp list | ||||
| should be used to balance the load on each | ||||
| interface."; | ||||
| } | ||||
| uses te-items; | ||||
| container te-frr { | leaf subdomain-id { | |||
| if-feature bier-te-frr; | type uint16; | |||
| leaf frr-index { | description "The sub-domain-id of this sub-domain."; | |||
| type leafref { | reference | |||
| path "../../../../../" + | "RFC 8279: Multicast Using Bit Index Explicit | |||
| "te-frr-items/btaft/frr-index"; | Replication (BIER)"; | |||
| } | } | |||
| description "The index of this frr path."; | list bsl { | |||
| } | key "fwd-bsl"; | |||
| container resetbitmask { | description "The forwarding items in one BSL."; | |||
| description | leaf fwd-bsl { | |||
| "The deleting bitmask of the forwarding item."; | type uint16; | |||
| uses bit-string; | description "The value of bitstringlength."; | |||
| } | } | |||
| description | list si { | |||
| "If this link is protected, frr items can be used to | key "si"; | |||
| forward flows when this link is down."; | description | |||
| } // te-frr | "The forwarding items in one combination of SD, | |||
| } // fwd-items | BSL and SI."; | |||
| } // si | leaf si{ | |||
| } // bsl | type uint16; | |||
| mandatory true; | ||||
| description | ||||
| "The set identifier of this forwarding item."; | ||||
| } | ||||
| container te-bift-id { | ||||
| container te-frr-items { | description | |||
| if-feature bier-te-frr; | "The bift-id which is used to locate the specific | |||
| description "The TE fast re-route information."; | forwarding item."; | |||
| list btaft { | leaf encap-type { | |||
| key "frr-index"; | type encapsulation-type; | |||
| description | description | |||
| "The index of the frr paths. This item can be used | "The encapsulation type for BIER-TE packet."; | |||
| for multiple links protection in different SI."; | } | |||
| leaf frr-index { | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description "The frr item index."; | ||||
| } | ||||
| leaf frr-si{ | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description | ||||
| "The set identifier of this forwarding item."; | ||||
| } | ||||
| leaf frr-bsl { | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description "The value of bitstringlength."; | ||||
| } | ||||
| container addbitmask { | ||||
| description | ||||
| "The adding bitmask of the forwarding item. | ||||
| This item should be merged into the packet's | ||||
| bit-string."; | ||||
| uses bit-string; | ||||
| } | ||||
| } // btaft | ||||
| } // te-frr-items | ||||
| } // subdomain | ||||
| } // te-fwd | ||||
| } // bier-te | ||||
| } | ||||
| /* | leaf value { | |||
| * Notifications | type rt-types:mpls-label; | |||
| */ | mandatory true; | |||
| notification bier-te-notification { | description | |||
| description | "The bift-id value of the forwarding item. | |||
| "The notification is sent when a condition changes."; | It can be a mpls label or an index for | |||
| list bp-is-zero { | ethernet or IPv6 encapsulation, | |||
| key "if-index"; | which is used to represent specific combination | |||
| description "The adjacency id is zero. It is invalid."; | of [SD, BSL, SI]. | |||
| leaf if-index { | The ethernet or IPv6 index value is the same | |||
| type if:interface-ref; | range (20bits) as mpls label."; | |||
| description "The adjacency id is zero."; | } | |||
| } | } | |||
| uses adj-type; | ||||
| } | list fwd-items { | |||
| } | key "te-bp"; | |||
| } | description | |||
| <CODE ENDS> | "The forwarding information of one BIER TE item."; | |||
| leaf te-bp { | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description | ||||
| "The bit index of a BIER TE forwarding item."; | ||||
| } | ||||
| uses te-items; | ||||
| container te-frr { | ||||
| if-feature bier-te-frr; | ||||
| leaf frr-index { | ||||
| type leafref { | ||||
| path "../../../../../" + | ||||
| "te-frr-items/btaft/frr-index"; | ||||
| } | ||||
| description "The index of this frr path."; | ||||
| } | ||||
| container resetbitmask { | ||||
| description | ||||
| "The deleting bitmask of the forwarding item."; | ||||
| uses bit-string; | ||||
| } | ||||
| description | ||||
| "If this link is protected, frr items can be | ||||
| used to forward flows when this link is down."; | ||||
| } // te-frr | ||||
| } // fwd-items | ||||
| } // si | ||||
| } // bsl | ||||
| container te-frr-items { | ||||
| if-feature bier-te-frr; | ||||
| description "The TE fast re-route information."; | ||||
| list btaft { | ||||
| key "frr-index"; | ||||
| description | ||||
| "The index of the frr paths. This item can be used | ||||
| for multiple links protection in different SI."; | ||||
| leaf frr-index { | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description "The frr item index."; | ||||
| } | ||||
| leaf frr-si{ | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description | ||||
| "The set identifier of this forwarding item."; | ||||
| } | ||||
| leaf frr-bsl { | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description "The value of bitstringlength."; | ||||
| } | ||||
| container addbitmask { | ||||
| description | ||||
| "The adding bitmask of the forwarding item. | ||||
| This item should be merged into the packet's | ||||
| bit-string."; | ||||
| uses bit-string; | ||||
| } | ||||
| } // btaft | ||||
| } // te-frr-items | ||||
| } // subdomain | ||||
| } // te-fwd | ||||
| } // bier-te | ||||
| } | ||||
| /* | ||||
| * Notifications | ||||
| */ | ||||
| notification bier-te-notification { | ||||
| description | ||||
| "The notification is sent when a condition changes."; | ||||
| list bp-is-zero { | ||||
| key "if-index"; | ||||
| description "The adjacency id is zero. It is invalid."; | ||||
| leaf if-index { | ||||
| type if:interface-ref; | ||||
| description "The adjacency id is zero."; | ||||
| } | ||||
| uses adj-type; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 7. IANA Considerations | 7. IANA Considerations | |||
| The IANA is requested to assign two new URIs from the IETF XML | The IANA is requested to assign two new URIs from the IETF XML | |||
| registry ([RFC3688]). Authors are suggesting the following URI: | registry ([RFC3688]). Authors are suggesting the following URI: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-bier-te | URI: urn:ietf:params:xml:ns:yang:ietf-bier-te | |||
| Registrant Contact: BIER WG | Registrant Contact: BIER WG | |||
| skipping to change at page 15, line 17 ¶ | skipping to change at page 15, line 48 ¶ | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-bier-te | namespace: urn:ietf:params:xml:ns:yang:ietf-bier-te | |||
| prefix: bier-te | prefix: bier-te | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 8. Acknowledgement | 8. Acknowledgement | |||
| The authors would like to thank Min Gu (gumin20181129@163.com) for | The authors would like to thank Min Gu (gumin20181129@163.com) for | |||
| her testing, verification and valuable suggestion. And the authors | her testing, verification and valuable suggestion. And the authors | |||
| would like to thank Benjamin R for his valuable comments. | would like to thank Benjamin R and Benchong Xu for their valuable | |||
| comments. | ||||
| 9. Normative References | 9. Normative References | |||
| [I-D.eckert-bier-te-frr] | [I-D.eckert-bier-te-frr] | |||
| Eckert, T., Cauchie, G., Braun, W., and M. Menth, | Eckert, T., Cauchie, G., Braun, W., and M. Menth, | |||
| "Protection Methods for BIER-TE", draft-eckert-bier-te- | "Protection Methods for BIER-TE", draft-eckert-bier-te- | |||
| frr-03 (work in progress), March 2018. | frr-03 (work in progress), March 2018. | |||
| [I-D.ietf-bier-bier-yang] | [I-D.ietf-bier-bier-yang] | |||
| Chen, R., hu, f., Zhang, Z., dai.xianxian@zte.com.cn, d., | Chen, R., Hu, F., Zhang, Z., Dai, X., and M. Sivakumar, | |||
| and M. Sivakumar, "YANG Data Model for BIER Protocol", | "YANG Data Model for BIER Protocol", draft-ietf-bier-bier- | |||
| draft-ietf-bier-bier-yang-06 (work in progress), February | yang-07 (work in progress), September 2020. | |||
| 2020. | ||||
| [I-D.ietf-bier-te-arch] | [I-D.ietf-bier-te-arch] | |||
| Eckert, T., Cauchie, G., and M. Menth, "Tree Engineering | Eckert, T., Cauchie, G., and M. Menth, "Tree Engineering | |||
| for Bit Index Explicit Replication (BIER-TE)", draft-ietf- | for Bit Index Explicit Replication (BIER-TE)", draft-ietf- | |||
| bier-te-arch-08 (work in progress), July 2020. | bier-te-arch-09 (work in progress), October 2020. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| skipping to change at page 17, line 4 ¶ | skipping to change at page 17, line 37 ¶ | |||
| China | China | |||
| Email: chen.ran@zte.com.cn | Email: chen.ran@zte.com.cn | |||
| Fangwei Hu | Fangwei Hu | |||
| Individual | Individual | |||
| Shanghai | Shanghai | |||
| China | China | |||
| Email: hufwei@gmail.com | Email: hufwei@gmail.com | |||
| Mahesh Sivakumar | Mahesh Sivakumar | |||
| Juniper networks | Juniper networks | |||
| 1133 Innovation Way | 1133 Innovation Way | |||
| Sunnyvale, CALIFORNIA 94089 | Sunnyvale, CALIFORNIA 94089 | |||
| United States | United States | |||
| Email: sivakumar.mahesh@gmail.com | Email: sivakumar.mahesh@gmail.com | |||
| Huanan Chen | Huanan Chen | |||
| China Telecom | Individual | |||
| 109 West Zhongshan Ave | ||||
| Guangzhou, Guangdong 510630 | ||||
| China | China | |||
| Phone: +86 20 38639346 | Email: chenhuanan@189.cn | |||
| Email: chenhuanan@gsta.com | ||||
| End of changes. 58 change blocks. | ||||
| 526 lines changed or deleted | 557 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/ | ||||