| submodule openconfig-aft-common { |
| belongs-to "openconfig-aft" { |
| prefix "oc-aft"; |
| } |
| |
| import openconfig-interfaces { prefix "oc-if"; } |
| import openconfig-extensions { prefix "oc-ext"; } |
| import openconfig-yang-types { prefix "oc-yang"; } |
| import openconfig-inet-types { prefix "oc-inet"; } |
| import openconfig-mpls-types { prefix "oc-mplst"; } |
| import openconfig-policy-types { prefix "oc-pol-types"; } |
| import openconfig-aft-types { prefix "oc-aftt"; } |
| |
| oc-ext:openconfig-version "0.3.0"; |
| |
| organization |
| "OpenConfig working group"; |
| |
| contact |
| "OpenConfig working group |
| www.openconfig.net"; |
| |
| description |
| "Submodule containing definitions of groupings that are re-used |
| across multiple contexts within the AFT model."; |
| |
| revision 2017-05-10 { |
| description |
| "Refactor to provide concretised per-AF schemas per AFT."; |
| reference "0.3.0"; |
| } |
| |
| grouping aft-common-nhop-structural { |
| description |
| "Structural grouping describing a next-hop entry."; |
| |
| container next-hops { |
| description |
| "The list of next-hops that are to be used for entry within |
| the AFT table. The structure of each next-hop is address |
| family independent, such that it is possible to resolve fully |
| how the next-hop is treated. For example: |
| |
| - Where ingress IPv4 unicast packets are to be forwarded via |
| an MPLS LSP, the next-hop list should indicate the MPLS |
| label stack that is used to the next-hop. |
| - Where ingress MPLS labelled packets are to be forwarded to |
| an IPv6 nexthop (for example, a CE within a VPN, then the |
| popped label stack, and IPv6 next-hop address should be |
| indicated)."; |
| |
| list next-hop { |
| key "index"; |
| |
| description |
| "A next-hop associated with the forwarding instance. The |
| entries within the next-hop list should only reflect |
| next-hops that are actively used by the local system. |
| That is to say inactive, backup or FRR next-hops should |
| not be included within this list."; |
| |
| leaf index { |
| type leafref { |
| path "../config/index"; |
| } |
| description |
| "A unique index identifying the next-hop entry for the |
| AFT entry"; |
| |
| } |
| |
| container config { |
| description |
| "Configuration parameters relating to the AFT next-hop |
| entry"; |
| |
| uses aft-common-entry-nexthop-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state parameters relating to the AFT |
| next-hop entry"; |
| |
| uses aft-common-entry-nexthop-config; |
| uses aft-common-entry-nexthop-state; |
| } |
| |
| uses oc-if:interface-ref; |
| } |
| } |
| } |
| |
| grouping aft-common-entry-state { |
| description |
| "Operational state parameters relating to a forwarding entry"; |
| |
| leaf packets-forwarded { |
| type oc-yang:counter64; |
| description |
| "The number of packets which have matched, and been forwarded, |
| based on the AFT entry."; |
| } |
| |
| leaf octets-forwarded { |
| type oc-yang:counter64; |
| description |
| "The number of octets which have matched, and been forwarded, |
| based on the AFT entry"; |
| } |
| } |
| |
| grouping aft-common-entry-nexthop-config { |
| description |
| "Configuration parameters relating to a next-hop entry for a AFT |
| entry"; |
| |
| leaf index { |
| type uint64; |
| description |
| "A unique entry for the next-hop."; |
| } |
| } |
| |
| grouping aft-common-entry-nexthop-state { |
| description |
| "Parameters relating to a next-hop within the AFT entry"; |
| |
| leaf weight { |
| type uint32; |
| description |
| "The weight of the next-hop. Traffic is balanced according to |
| the ratio described by the relative weights of the next hops |
| that exist for the AFT entry. Note that all next-hops that are |
| specified are assumed to be active next-hops and therefore |
| eligible (and selected) to be installed in the FIB, and hence |
| used for packet forwarding."; |
| } |
| |
| leaf ip-address { |
| type oc-inet:ip-address; |
| description |
| "The IP address of the next-hop system."; |
| } |
| |
| leaf mac-address { |
| type oc-yang:mac-address; |
| description |
| "The MAC address of the next-hop if resolved by the local |
| network instance."; |
| } |
| |
| leaf-list popped-mpls-label-stack { |
| type oc-mplst:mpls-label; |
| description |
| "The MPLS label stack to be popped from the packet when |
| switched by the system. The stack is encoded as a leaf-list |
| such that the first entry is the label that is outer-most (i.e., |
| furthest from the bottom of the stack) label |
| stack to be popped. |
| |
| If the local system pops the outer-most label 400, then the |
| value of this list is [400,]. If the local system removes two |
| labels, the outer-most being 500, and the second of which is |
| 400, then the value of the list is [500, 400]. |
| |
| A swap operation is reflected by entries in the |
| popped-mpls-label-stack and pushed-mpls-label-stack nodes."; |
| } |
| |
| leaf-list pushed-mpls-label-stack { |
| type oc-mplst:mpls-label; |
| ordered-by user; |
| description |
| "The MPLS label stack imposed when forwarding packets to the |
| next-hop |
| - the stack is encoded as a leaf list whereby the order of the |
| entries is such that the first entry in the list is the |
| label at the bottom of the stack to be pushed. |
| |
| To this end, a packet which is to forwarded to a device using |
| a service label of 42, and a transport label of 8072 will be |
| represented with a label stack list of [42, 8072]. |
| |
| The MPLS label stack list is ordered by the user, such that no |
| system re-ordering of leaves is permitted by the system. |
| |
| A swap operation is reflected by entries in the |
| popped-mpls-label-stack and pushed-mpls-label-stack nodes."; |
| |
| } |
| |
| leaf decapsulate-header { |
| type oc-aftt:encapsulation-header-type; |
| description |
| "When forwarding a packet to the specified next-hop, the local |
| system performs a decapsulation of the packet - removing the |
| specified header type. In the case that no next-hop is |
| specified, the packet header is removed, and a subsequent |
| forwarding lookup is performed on the packet encapsulated |
| within the header, matched within the relevant AFT within the |
| specified network-instance."; |
| } |
| |
| leaf encapsulate-header { |
| type oc-aftt:encapsulation-header-type; |
| description |
| "When forwarding a packet to the specified next-hop the local |
| system performs an encapsulation of the packet - adding the |
| specified header type."; |
| } |
| |
| leaf origin-protocol { |
| type identityref { |
| base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; |
| } |
| description |
| "The protocol from which the AFT entry was learned."; |
| } |
| } |
| } |