| < draft-ietf-bier-te-yang-00.txt | draft-ietf-bier-te-yang-01.txt > | |||
|---|---|---|---|---|
| BIER WG Zheng. Zhang | BIER WG Z. Zhang | |||
| Internet-Draft Cui. Wang | Internet-Draft C. Wang | |||
| Intended status: Standards Track Ran. Chen | Intended status: Standards Track R. Chen | |||
| Expires: November 13, 2019 Fangwei. Hu | Expires: August 9, 2020 ZTE Corporation | |||
| ZTE Corporation | F. Hu | |||
| Mahesh. Sivakumar | Individual | |||
| Cisco Systems, Inc. | M. Sivakumar | |||
| Huanan. Chen | Juniper networks | |||
| H. Chen | ||||
| China Telecom | China Telecom | |||
| May 12, 2019 | February 6, 2020 | |||
| 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-00 | draft-ietf-bier-te-yang-01 | |||
| 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 38 ¶ | skipping to change at page 1, line 39 ¶ | |||
| 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 November 13, 2019. | This Internet-Draft will expire on August 9, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 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 | |||
| 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 . . . . . . . . . . . . . . . . . . . . 3 | 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 . . . . . . . . . . . . . . . . . . . . . 13 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 8. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 13 | 8. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 9. Normative References . . . . . . . . . . . . . . . . . . . . 13 | 9. Normative References . . . . . . . . . . . . . . . . . . . . 15 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 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: | augment /rt:routing/rt:control-plane-protocols | |||
| +--rw bier-te | /rt:control-plane-protocol: | |||
| +--rw subdomain* [subdomain-id] | +--rw bier-te | |||
| +--rw subdomain-id uint16 | +--rw te-adj | |||
| +--rw te-adj-id | | +--rw adj-if* [name] | |||
| | +--rw si* [si] | | +--rw name if:interface-ref | |||
| | +--rw si uint16 | | +--rw subdomain* [subdomain-id] | |||
| | +--rw adj* [adj-id] | | | +--rw subdomain-id uint16 | |||
| | +--rw adj-id uint16 | | | +--rw si* [si] | |||
| | +--rw adj-if if:interface-ref | | | +--rw si uint16 | |||
| | +--rw bp-type? enumeration | | | +--rw adj-id* uint16 | |||
| +--rw bsl* [fwd-bsl] | | +--rw adj-type? enumeration | |||
| | +--rw fwd-bsl uint16 | +--rw te-fwd | |||
| | +--rw si* [si] | +--rw subdomain* [subdomain-id] | |||
| | +--rw si uint16 | +--rw subdomain-id uint16 | |||
| | +--rw te-bift-id | +--rw bsl* [fwd-bsl] | |||
| | | +--rw type? enumeration | | +--rw fwd-bsl uint16 | |||
| | | +--rw value rt-types:mpls-label | | +--rw si* [si] | |||
| | +--rw fwd-items* [te-bp] | | +--rw si uint16 | |||
| | +--rw te-bp uint16 | | +--rw te-bift-id | |||
| | +--rw bp-type? enumeration | | | +--rw type? enumeration | |||
| | +--rw (fwd-type) | | | +--rw value rt-types:mpls-label | |||
| | | +--:(connected) | | +--rw fwd-items* [te-bp] | |||
| | | +--:(routed) | | +--rw te-bp uint16 | |||
| | | +--:(local-decap) | | +--rw te-ecmp? boolean {bier-te-ecmp}? | |||
| | | +--:(other) | | +--rw out-info | |||
| | +--rw dnr-flag? boolean | | | +--rw out-if-list* [fwd-intf] | |||
| | +--rw out-info | | | +--rw fwd-intf if:interface-ref | |||
| | | +--rw fwd-intf if:interface-ref | | | +--rw dnr-flag? boolean | |||
| | | +--rw te-out-bift-id | | | +--rw fwd-type | |||
| | | +--rw type? enumeration | | | | +--rw (fwd-type) | |||
| | | +--rw value rt-types:mpls-label | | | | +--:(connected) | |||
| | +--rw te-frr {bier-te-frr}? | | | | +--:(routed) | |||
| | | +--rw frr-index? uint16 | | | | +--:(local-decap) | |||
| | | +--rw resetbitmask* [bitmask] | | | | +--:(other) | |||
| | | +--rw bitmask bit-string | | | +--rw te-out-bift-id | |||
| | +--rw te-ecmp* [out-if] {bier-te-ecmp}? | | | +--rw type? enumeration | |||
| | +--rw out-if if:interface-ref | | | +--rw value rt-types:mpls-label | |||
| | +--rw te-out-bift-id | | +--rw te-frr {bier-te-frr}? | |||
| | +--rw type? enumeration | | +--rw frr-index? | |||
| | +--rw value rt-types:mpls-label | -> ../../../../../te-frr-items/btaft/frr-index | |||
| +--rw te-frr-items {bier-te-frr}? | | +--rw resetbitmask | |||
| +--rw btaft* [frr-index] | | +--rw bit-string* [index] | |||
| +--rw frr-index uint16 | | +--rw index uint8 | |||
| +--rw frr-si uint16 | | +--rw bitmask? uint32 | |||
| +--rw frr-bsl uint16 | +--rw te-frr-items {bier-te-frr}? | |||
| +--rw addbitmask* [bitmask] | +--rw btaft* [frr-index] | |||
| +--rw bitmask bit-string | +--rw frr-index uint16 | |||
| +--rw frr-si uint16 | ||||
| +--rw frr-bsl uint16 | ||||
| +--rw addbitmask | ||||
| +--rw bit-string* [index] | ||||
| +--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 bp-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 22 ¶ | skipping to change at page 4, line 31 ¶ | |||
| 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.yang" | <CODE BEGINS> file "ietf-bier-te@2020-02-05.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 { | |||
| prefix "rt"; | ||||
| reference | ||||
| "RFC 8349: A YANG Data Model for Routing Management | ||||
| (NMDA Version)"; | ||||
| } | ||||
| import ietf-routing { | import ietf-interfaces { | |||
| prefix "rt"; | prefix "if"; | |||
| reference "RFC8022"; | reference | |||
| } | "RFC 8343: A YANG Data Model for Interface Management"; | |||
| } | ||||
| import ietf-routing-types { | ||||
| prefix "rt-types"; | ||||
| reference | ||||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
| } | ||||
| import ietf-interfaces { | organization " IETF BIER (Bit Indexed Explicit Replication) | |||
| prefix "if"; | Working Group"; | |||
| reference "RFC7223"; | contact | |||
| } | "WG Web: <http://tools.ietf.org/wg/bier/> | |||
| WG List: <mailto:bier@ietf.org> | ||||
| import ietf-routing-types { | Editor: Zheng Zhang | |||
| prefix "rt-types"; | <mailto:zhang.zheng@zte.com.cn> | |||
| reference "RFC8294"; | Editor: Cui Wang | |||
| } | <mailto:wang.cui1@zte.com.cn> | |||
| 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> | ||||
| "; | ||||
| organization " IETF BIER(Bit Indexed Explicit Replication) | description | |||
| Working Group"; | "The module defines the YANG definitions for Traffic | |||
| contact | Engineering for Bit Index Explicit Replication (BIER-TE). | |||
| "WG Web: <http://tools.ietf.org/wg/bier/> | ||||
| WG List: <mailto:bier@ietf.org> | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| Editor: Zheng Zhang | authors of the code. All rights reserved. | |||
| <mailto:zhang.zheng@zte.com.cn> | ||||
| Editor: Cui Wang | ||||
| <mailto:wang.cui1@zte.com.cn> | ||||
| 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> | ||||
| "; | ||||
| Redistribution and use in source and binary forms, with or | ||||
| 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 | ||||
| (https://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX | ||||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC | ||||
| itself for full legal notices. | ||||
| 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-02-05 { | ||||
| description | description | |||
| " The module defines the YANG definitions for BIER TE. | "Initial revision."; | |||
| reference | ||||
| "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | ||||
| Explicit Replication (BIER-TE)"; | ||||
| } | ||||
| Copyright (c) 2018 IETF Trust and the persons | /* | |||
| identified as authors of the code. All rights reserved. | * Features | |||
| */ | ||||
| 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"; | ||||
| } | ||||
| Redistribution and use in source and binary forms, with or | /* | |||
| without modification, is permitted pursuant to, and subject | * Identities | |||
| 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 3618; see | ||||
| the RFC itself for full legal notices."; | ||||
| revision 2019-03-23 { | identity bier-te { | |||
| description | base rt:control-plane-protocol; | |||
| "Initial revision."; | description | |||
| reference | "Identity for the Traffic Engineering for Bit Index Explicit | |||
| "draft-ietf-bier-te-arch: Traffic Engineering for Bit Index | Replication (BIER-TE)."; | |||
| Explicit Replication (BIER-TE)"; | reference | |||
| } | "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | |||
| Explicit Replication (BIER-TE)"; | ||||
| } | ||||
| /* | grouping bit-string { | |||
| * Features | description | |||
| */ | "The bit string which each bit represents an adjacency. | |||
| feature bier-te-frr { | It is encapsulated in BIER header."; | |||
| description | reference | |||
| "Support Fast Re-route feature in BIER TE."; | "I-D.ietf-bier-te-arch: Traffic Engineering for Bit Index | |||
| } | Explicit Replication (BIER-TE), section 3.3. | |||
| feature bier-te-ecmp { | RFC8279: Multicast Using Bit Index Explicit Replication | |||
| (BIER). | ||||
| RFC8296: Encapsulation for Bit Index Explicit Replication | ||||
| (BIER) in MPLS and Non-MPLS Networks."; | ||||
| list bit-string { | ||||
| key "index"; | ||||
| 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 { | ||||
| type uint8 { | ||||
| range "2..128"; | ||||
| } | ||||
| description | description | |||
| "Support ECMP feature in BIER TE."; | "The index of bit-mask. The minimum index value is 64 and | |||
| the corresponding bit string length is 64 bits. The | ||||
| maximum index value is 128 and the corresponding | ||||
| bit-string length is 4096 bits."; | ||||
| } | ||||
| leaf bitmask { | ||||
| type uint32; | ||||
| description "The bit-string in 4-octet units."; | ||||
| } | ||||
| } | } | |||
| } // bit-string | ||||
| typedef bit-string { | grouping adj-type { | |||
| type uint16; | description "The collection of all possible adjacency type."; | |||
| description "The bit mask of one bit-string."; | ||||
| leaf adj-type { | ||||
| type enumeration { | ||||
| enum p2p { | ||||
| 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 | ||||
| grouping te-bift-id { | ||||
| description "The index of BIER forwarding items. It usually | ||||
| represents the combination of [SD, BSL, SI]."; | ||||
| leaf type { | ||||
| type enumeration { | ||||
| enum mpls { | ||||
| description | ||||
| "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."; | ||||
| grouping 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."; | ||||
| } | ||||
| list addbitmask { | ||||
| key "bitmask"; | ||||
| description "The adding bitmask of the forwarding | ||||
| item."; | ||||
| leaf bitmask { | ||||
| type bit-string; | ||||
| description "The adding bitmask of the forwarding | ||||
| item. This item should be merged | ||||
| into the packet's bit-string."; | ||||
| } | ||||
| } | ||||
| } | } | |||
| } | ||||
| description "The types of BIER TE bift-id. If this type | ||||
| is not set, mpls is default type."; | ||||
| } | } | |||
| 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 of ethernet encapsulation which is used | ||||
| to represent specific combination of [SD, BSL, SI]. The | ||||
| ethernet index value is the same range (20bits) as mpls | ||||
| label."; | ||||
| } | ||||
| } // te-bift-id | ||||
| grouping fwd-type { | grouping te-items { | |||
| description "The collection of all possible forwarding types."; | description "The BIER TE forwarding items collection."; | |||
| choice fwd-type { | ||||
| container out-info { | ||||
| description | ||||
| "The information of out forwarding packets. Includes the | ||||
| outbound interface and the bift-id of next hop."; | ||||
| list out-if-list { | ||||
| key "fwd-intf"; | ||||
| description | ||||
| "The outbound interface information for forwarding."; | ||||
| leaf fwd-intf { | ||||
| type if:interface-ref; | ||||
| mandatory true; | ||||
| description | ||||
| "The out interface of this forwarding item."; | ||||
| } | ||||
| leaf dnr-flag { | ||||
| type boolean; | ||||
| description | ||||
| "When the flag is set to 1, the BP of adjacency should not | ||||
| be reset when packet copies are created. The flag makes | ||||
| sense only when the forwarding type is 'connected'."; | ||||
| } | ||||
| container fwd-type { | ||||
| description | ||||
| "The collection of all possible forwarding types."; | ||||
| choice fwd-type { | ||||
| mandatory true; | mandatory true; | |||
| case connected { | case connected { | |||
| description "The forwarding type is connected. | description | |||
| Mostly connected interfaces."; | "The forwarding type is connected. Mostly connected | |||
| interfaces."; | ||||
| } | } | |||
| case routed { | case routed { | |||
| description "The forwarding type is routed. | description | |||
| Mostly not connected interfaces."; | "The forwarding type is routed. Mostly not connected | |||
| interfaces."; | ||||
| } | } | |||
| case local-decap { | case local-decap { | |||
| description "Means that the packet should be | description | |||
| decapsulated and forward out | "Means that the packet should be decapsulated and | |||
| of BIER domain."; | forward out of BIER domain."; | |||
| } | } | |||
| case other { | case other { | |||
| description "Means that the packet should be | description | |||
| discarded."; | "Means that the packet should be discarded."; | |||
| } | ||||
| description "The collection of all possible forwarding | ||||
| types."; | ||||
| } | ||||
| } | ||||
| grouping bp-type { | ||||
| description "The collection of all possible adjacency type."; | ||||
| leaf bp-type { | ||||
| type enumeration { | ||||
| enum p2p { | ||||
| 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 | description | |||
| type."; | "The collection of all possible forwarding types."; | |||
| } | } | |||
| } | } // fwd-type | |||
| grouping te-bift-id { | container te-out-bift-id { | |||
| description "The index of BIER forwarding items. It usually | description | |||
| represents the combination of [SD, BSL, SI]."; | "The bift-id information corresponding to a specific | |||
| leaf type { | outbound interface."; | |||
| type enumeration { | uses te-bift-id; | |||
| enum mpls { | ||||
| description "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."; | ||||
| } | ||||
| } | ||||
| description "The types of BIER TE bift-id. If this type | ||||
| is not set, mpls is default type."; | ||||
| } | ||||
| 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 of ethernet encapsulation which | ||||
| is used to represent specific | ||||
| combination of [SD, BSL, SI]. The | ||||
| ethernet index value is the same range | ||||
| (20bits) as mpls label."; | ||||
| } | } | |||
| } | ||||
| } | } | |||
| } // te-items | ||||
| grouping te-items { | /* | |||
| description "The BIER TE forwarding items collection."; | * data nodes | |||
| uses fwd-type; | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| +"rt:control-plane-protocol" { | ||||
| description "The BIER TE information."; | ||||
| container bier-te { | ||||
| description "The BIER TE information container."; | ||||
| leaf dnr-flag { | container te-adj { | |||
| type boolean; | 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 | description | |||
| "When the flag is set to 1, the BP of adjacency | "The sub-domain which the interface belongs to. | |||
| should not be reset when packet copies are | One interface can belong to many subdomains."; | |||
| created. The flag makes sense only when the | ||||
| forwarding type is 'connected'."; | ||||
| } | ||||
| container out-info { | leaf subdomain-id { | |||
| description "The information of out forwarding | type uint16; | |||
| packets. Includes the outbound interface | description "The sub-domain-id of this sub-domain."; | |||
| and the bift-id of next hop."; | reference | |||
| leaf fwd-intf { | "RFC 8279: Multicast Using Bit Index Explicit | |||
| type if:interface-ref; | Replication (BIER)"; | |||
| mandatory true; | ||||
| description "The out interface of this | ||||
| forwarding item."; | ||||
| } | ||||
| container te-out-bift-id { | ||||
| description "The bift-id information | ||||
| corresponding to a specific | ||||
| outbound interface."; | ||||
| uses te-bift-id; | ||||
| } | } | |||
| } | list si { | |||
| key "si"; | ||||
| description "The set identifier value."; | ||||
| container te-frr { | leaf si{ | |||
| if-feature bier-te-frr; | ||||
| leaf frr-index { | ||||
| type uint16; | type uint16; | |||
| description "The index of this frr path."; | mandatory true; | |||
| } | description | |||
| list resetbitmask { | "The set identifier of this forwarding item."; | |||
| key "bitmask"; | } | |||
| description "The deleting bitmask of the | leaf-list adj-id { | |||
| forwarding item."; | type uint16; | |||
| leaf bitmask { | description "The ID of an adjacency."; | |||
| type bit-string; | } | |||
| description "The deleting bitmask of the | ||||
| forwarding item."; | ||||
| } | ||||
| } | } | |||
| description "If this link is protected, frr items can | } | |||
| be used to forward flows when this link | uses adj-type; | |||
| is down."; | ||||
| } | } | |||
| } | } // te-adj | |||
| grouping fwd-items { | container te-fwd { | |||
| list si { | description "The BIER TE forwarding information."; | |||
| key "si"; | ||||
| description "The forwarding items of one set identifier."; | list subdomain { | |||
| leaf si{ | key "subdomain-id"; | |||
| type uint16; | description | |||
| mandatory true; | "The sub-domain which the interface belongs to. | |||
| description "The set identifier of this forwarding | One interface can belong to many subdomains."; | |||
| item."; | ||||
| } | leaf subdomain-id { | |||
| container te-bift-id { | type uint16; | |||
| description "The bift-id which is used to locate the | description "The sub-domain-id of this sub-domain."; | |||
| specific forwarding item."; | reference | |||
| uses te-bift-id; | "RFC 8279: Multicast Using Bit Index Explicit | |||
| Replication (BIER)"; | ||||
| } | ||||
| list bsl { | ||||
| key "fwd-bsl"; | ||||
| description "The forwarding items in one BSL."; | ||||
| leaf fwd-bsl { | ||||
| type uint16; | ||||
| description "The value of bitstringlength."; | ||||
| } | } | |||
| list si { | ||||
| 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 { | list fwd-items { | |||
| key "te-bp"; | key "te-bp"; | |||
| description "The forwarding information of one BIER TE | description | |||
| item."; | "The forwarding information of one BIER TE item."; | |||
| leaf te-bp { | leaf te-bp { | |||
| type uint16; | type uint16; | |||
| mandatory true; | mandatory true; | |||
| description "The bit index of a BIER TE forwarding | description | |||
| item."; | "The bit index of a BIER TE forwarding item."; | |||
| } | } | |||
| uses bp-type; | ||||
| uses te-items; | ||||
| list te-ecmp { | leaf te-ecmp { | |||
| if-feature bier-te-ecmp; | if-feature bier-te-ecmp; | |||
| key "out-if"; | type boolean; | |||
| leaf out-if { | description | |||
| type if:interface-ref; | "The list of the ecmp paths. When the type of | |||
| description "The outgoing interface."; | BP is set to ecmp, this interface ecmp list | |||
| } | should be used to balance the load on each | |||
| container te-out-bift-id { | interface."; | |||
| description "The bift-id info for a specific | } | |||
| outbound interface."; | uses te-items; | |||
| uses te-bift-id; | ||||
| } | ||||
| description "The list of the ecmp paths. When the | ||||
| type of BP is set to ecmp, this | ||||
| interface ecmp list should be used to | ||||
| balance the load on each interface."; | ||||
| } | ||||
| } | ||||
| } | ||||
| description "The forwarding items in one combination of | ||||
| SD, BSL and SI."; | ||||
| } | ||||
| grouping te-info { | ||||
| description "The BIER TE forwarding information."; | ||||
| list subdomain { | ||||
| key "subdomain-id"; | ||||
| description "The forwarding items of one sub-domain."; | ||||
| leaf subdomain-id { | ||||
| type uint16; | ||||
| description "The sub-domain-id of this sub-domain."; | ||||
| } | ||||
| container te-adj-id { | container te-frr { | |||
| list si { | if-feature bier-te-frr; | |||
| key "si"; | leaf frr-index { | |||
| description "The forwarding items of a set | type leafref { | |||
| identifier."; | path "../../../../../" + | |||
| leaf si{ | "te-frr-items/btaft/frr-index"; | |||
| type uint16; | } | |||
| mandatory true; | description "The index of this frr path."; | |||
| description "The set identifier of this | ||||
| forwarding item."; | ||||
| } | } | |||
| container resetbitmask { | ||||
| list adj { | description | |||
| key "adj-id"; | "The deleting bitmask of the forwarding item."; | |||
| description "The ID of an adjacency."; | uses bit-string; | |||
| leaf adj-id { | ||||
| type uint16; | ||||
| mandatory true; | ||||
| description "The adjacency id."; | ||||
| } | ||||
| leaf adj-if { | ||||
| type if:interface-ref; | ||||
| mandatory true; | ||||
| description "The corresponding interface | ||||
| of this adjacency."; | ||||
| } | ||||
| uses bp-type; | ||||
| } | } | |||
| } | description | |||
| description "This adjacency ID information for BIER TE | "If this link is protected, frr items can be used to | |||
| in a SI."; | forward flows when this link is down."; | |||
| } | } // te-frr | |||
| } // fwd-items | ||||
| list bsl { | } // si | |||
| key "fwd-bsl"; | } // bsl | |||
| description "The forwarding items in one BSL."; | ||||
| leaf fwd-bsl { | ||||
| type uint16; | ||||
| description "The value of bitstringlength."; | ||||
| } | ||||
| uses fwd-items; | ||||
| } | ||||
| container te-frr-items { | ||||
| if-feature bier-te-frr; | ||||
| uses te-frr; | ||||
| description "The TE protective fast re-route items."; | ||||
| } | ||||
| } | ||||
| } | ||||
| /* | container te-frr-items { | |||
| * data nodes | if-feature bier-te-frr; | |||
| */ | description "The TE fast re-route information."; | |||
| augment "/rt:routing" { | list btaft { | |||
| description "The BIER TE information."; | key "frr-index"; | |||
| container bier-te { | description | |||
| description "The BIER TE information container."; | "The index of the frr paths. This item can be used | |||
| uses te-info; | 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 | * Notifications | |||
| */ | */ | |||
| notification bier-te-notification { | notification bier-te-notification { | |||
| description | description | |||
| "The notification is sent when a condition changes."; | "The notification is sent when a condition changes."; | |||
| list bp-is-zero { | list bp-is-zero { | |||
| key "if-index"; | key "if-index"; | |||
| description "The adjacency id is zero. It is invalid."; | description "The adjacency id is zero. It is invalid."; | |||
| leaf if-index { | leaf if-index { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "The adjacency id is zero."; | description "The adjacency id is zero."; | |||
| } | } | |||
| uses bp-type; | uses adj-type; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <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 | |||
| skipping to change at page 13, line 45 ¶ | skipping to change at page 15, line 16 ¶ | |||
| 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. | her testing, verification and valuable suggestion. And the authors | |||
| would like to thank Benjamin R for his 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.xianxian@zte.com.cn, d., | |||
| and M. Sivakumar, "YANG Data Model for BIER Protocol", | and M. Sivakumar, "YANG Data Model for BIER Protocol", | |||
| draft-ietf-bier-bier-yang-04 (work in progress), September | draft-ietf-bier-bier-yang-06 (work in progress), February | |||
| 2018. | 2020. | |||
| [I-D.ietf-bier-te-arch] | [I-D.ietf-bier-te-arch] | |||
| Eckert, T., Cauchie, G., Braun, W., and M. Menth, "Traffic | Eckert, T., Cauchie, G., and M. Menth, "Traffic | |||
| Engineering for Bit Index Explicit Replication (BIER-TE)", | Engineering for Bit Index Explicit Replication (BIER-TE)", | |||
| draft-ietf-bier-te-arch-01 (work in progress), October | draft-ietf-bier-te-arch-05 (work in progress), November | |||
| 2018. | 2019. | |||
| [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 14, line 45 ¶ | skipping to change at page 16, line 15 ¶ | |||
| [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | |||
| <https://www.rfc-editor.org/info/rfc7223>. | <https://www.rfc-editor.org/info/rfc7223>. | |||
| [RFC8279] Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A., | [RFC8279] Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A., | |||
| Przygienda, T., and S. Aldrin, "Multicast Using Bit Index | Przygienda, T., and S. Aldrin, "Multicast Using Bit Index | |||
| Explicit Replication (BIER)", RFC 8279, | Explicit Replication (BIER)", RFC 8279, | |||
| DOI 10.17487/RFC8279, November 2017, | DOI 10.17487/RFC8279, November 2017, | |||
| <https://www.rfc-editor.org/info/rfc8279>. | <https://www.rfc-editor.org/info/rfc8279>. | |||
| [RFC8296] Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A., | ||||
| Tantsura, J., Aldrin, S., and I. Meilik, "Encapsulation | ||||
| for Bit Index Explicit Replication (BIER) in MPLS and Non- | ||||
| MPLS Networks", RFC 8296, DOI 10.17487/RFC8296, January | ||||
| 2018, <https://www.rfc-editor.org/info/rfc8296>. | ||||
| [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
| Routing Management (NMDA Version)", RFC 8349, | Routing Management (NMDA Version)", RFC 8349, | |||
| DOI 10.17487/RFC8349, March 2018, | DOI 10.17487/RFC8349, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8349>. | <https://www.rfc-editor.org/info/rfc8349>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Zheng(Sandy) Zhang | Zheng(Sandy) Zhang | |||
| ZTE Corporation | ZTE Corporation | |||
| No. 50 Software Ave, Yuhuatai Distinct | No. 50 Software Ave, Yuhuatai Distinct | |||
| skipping to change at page 15, line 27 ¶ | skipping to change at page 17, line 4 ¶ | |||
| Email: lindawangjoy@gmail.com | Email: lindawangjoy@gmail.com | |||
| Ran Chen | Ran Chen | |||
| ZTE Corporation | ZTE Corporation | |||
| No. 50 Software Ave, Yuhuatai Distinct | No. 50 Software Ave, Yuhuatai Distinct | |||
| Nanjing | Nanjing | |||
| China | China | |||
| Email: chen.ran@zte.com.cn | Email: chen.ran@zte.com.cn | |||
| Fangwei Hu | Fangwei Hu | |||
| ZTE Corporation | Individual | |||
| No.889 Bibo Rd | ||||
| Shanghai | Shanghai | |||
| China | China | |||
| Email: hu.fangwei@zte.com.cn | Email: hufwei@gmail.com | |||
| Mahesh Sivakumar | Mahesh Sivakumar | |||
| Cisco Systems, Inc. | Juniper networks | |||
| 510 McCarthy Blvd | 1133 Innovation Way | |||
| Milpitas,California 95035 | Sunnyvale, CALIFORNIA 94089 | |||
| United States | United States | |||
| Email: masivaku@cisco.com | Email: sivakumar.mahesh@gmail.com | |||
| Huanan Chen | Huanan Chen | |||
| China Telecom | China Telecom | |||
| 109 West Zhongshan Ave | 109 West Zhongshan Ave | |||
| Guangzhou, Guangdong 510630 | Guangzhou, Guangdong 510630 | |||
| China | China | |||
| Phone: +86 20 38639346 | Phone: +86 20 38639346 | |||
| Email: chenhuanan@gsta.com | Email: chenhuanan@gsta.com | |||
| End of changes. 70 change blocks. | ||||
| 460 lines changed or deleted | 531 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/ | ||||