blob: b740369640add7cbc9154ac713ac9e8151942f47 [file] [log] [blame]
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.";
}
}
}