A model describing the forwarding entries installed on a network element. It should be noted that this model is not expected to ...
Version: 2017-01-13
module openconfig-aft { yang-version 1; namespace "http://openconfig.net/yang/aft"; prefix oc-aft; import openconfig-extensions { prefix oc-ext; } import ietf-inet-types { prefix inet; } import ietf-yang-types { prefix yang; } import openconfig-aft-types { prefix oc-aftt; } import openconfig-mpls-types { prefix oc-mplst; } import openconfig-interfaces { prefix oc-if; } import openconfig-packet-match-types { prefix oc-pkt-match-types; } import openconfig-policy-types { prefix oc-pol-types; } import openconfig-types { prefix oc-types; } organization "OpenConfig working group"; contact "OpenConfig working group www.openconfig.net"; description "A model describing the forwarding entries installed on a network element. It should be noted that this model is not expected to align 1:1 with the underlying structure used directly by a forwarding element (e.g., linecard), but rather provide an abstraction that can be consumed by an NMS to observe, and in some cases manipulate, the internal forwarding database in a simplified manner. Since the underlying model of the forwarding table is not expected to align with this model, the structure described herein is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; revision "2017-01-13" { description "Updated revision to address review comments"; reference "0.2.1"; } revision "2016-09-07" { description "Initial revision for external review"; reference "0.2.0"; } oc-ext:openconfig-version "0.2.1"; grouping aft-entry-config { description "Configuration parameters relating to a forwarding entry"; leaf index { type uint64; description "A unique index referring to the AFT entry"; } } // grouping aft-entry-config grouping aft-entry-state { description "Operational state parameters relating to a forwarding entry"; leaf packets-forwarded { type yang:counter64; description "The number of packets which have matched, and been forwarded, based on the AFT entry."; } leaf octets-forwarded { type yang:counter64; description "The number of octets which have matched, and been forwarded, based on the AFT entry"; } } // grouping aft-entry-state grouping aft-entry-match-state { description "Match critiera for AFT entries"; leaf ip-prefix { type inet:ip-prefix; description "The IP prefix that the forwarding entry matches. Used for Layer 3 forwarding entries."; } leaf mac-address { type yang:mac-address; description "The MAC address that the forwarding entry matches. Used for Layer 2 forwarding entries, e.g., within a VSI instance."; } leaf mpls-label { type oc-mplst:mpls-label; description "The MPLS label that the forwarding entry matches. Used for MPLS forwarding entries, whereby the local device acts as an LSR."; } leaf mpls-tc { type uint8 { range "0..7"; } description "The value of the MPLS Traffic Class bits (formerly known as the MPLS experimental bits) that are to be matched by the AFT entry."; reference "RFC5462: Multiprotocol Label Switching (MPLS) Label Stack Entry: 'EXP' Field Renamed to 'Traffic Class' Field"; } leaf ip-dscp { type inet:dscp; description "The value of the differentiated services code point (DSCP) to be matched for the forwarding entry. The value is specified in cases where specific class-based forwarding based on IP is implemented by the device."; } leaf ip-protocol { type oc-pkt-match-types:ip-protocol-type; description "The value of the IP protocol field of an IPv4 packet, or the next-header field of an IPv6 packet which is to be matched by the AFT entry. This field is utilised where forwarding is performed based on L4 information."; } leaf l4-src-port { type inet:port-number; description "The value of the source port field of the transport header that is to be matched by the AFT entry."; } leaf l4-dst-port { type inet:port-number; description "The value of the destination port field of the transport header that is to be matched by the AFT entry."; } } // grouping aft-entry-match-state grouping aft-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-entry-nexthop-config grouping aft-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 inet:ip-address-no-zone; description "The IP address of the next-hop system."; } leaf mac-address { type 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 encoding as a leaf-list whereby the other of the entries is such that the first entry is the label lowest down the 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 500, 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."; } } // grouping aft-entry-nexthop-state grouping aft-config { description "Configuration parameters relating to an Abstract Forwarding Table (AFT) for a particular address family."; leaf address-family { type identityref { base oc-types:ADDRESS_FAMILY; } description "The address family of entries that are described by the AFT."; } } // grouping aft-config grouping aft-proto-top { description "Top level per-protocol grouping for the AFT."; container entries { description "Enclosing container for a list of abstract forwarding table entries within the network instance for a particular protocol (e.g., IPv4, IPv6, MPLS)."; list entry { key "index"; description "A forwarding database entry within the network instance"; leaf index { type leafref { path "../config/index"; } description "A pointer to the index of the AFT entry within the network instance"; } container config { description "Configuration parameters relating to the forwarding entry"; uses aft-entry-config; } // container config container state { config false; description "Operational state parameters relating to the forwarding entry"; uses aft-entry-config; uses aft-entry-state; } // container state container match { description "Match criteria for the AFT entry"; container config { description "Configuration of match criteria for the AFT entry"; } // container config container state { config false; description "Operational state parameters for match criteria of the AFT entry"; uses aft-entry-match-state; } // container state uses oc-if:interface-ref-state; } // container match container next-hops { description "Enclosing container for the list of next-hops associated with the forwarding entry"; 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-entry-nexthop-config; } // container config container state { config false; description "Operational state parameters relating to the AFT next-hop entry"; uses aft-entry-nexthop-config; uses aft-entry-nexthop-state; } // container state uses oc-if:interface-ref; } // list next-hop } // container next-hops } // list entry } // container entries } // grouping aft-proto-top grouping aft-top { description "Top-level grouping allowing per-protocol instantiation of the AFT."; container afts { description "The abstract forwarding tables (AFTs) that are associated with the network instance. An AFT is instantiated per-protocol running within the network-instance - such that one exists for IPv4 Unicast, IPv6 Unicast, MPLS, L2 forwarding entries, etc. A forwarding entry within the FIB has a set of next-hops, which may be a reference to an entry within another table - e.g., where a Layer 3 next-hop has an associated Layer 2 forwarding entry."; list aft { key "address-family"; description "An individual abstract forwarding table associated with a an address family wtihin the network instance."; leaf address-family { type leafref { path "../config/address-family"; } description "Reference to the address family with which the AFT is associated"; } container config { description "Configuration parameters relating to the AFT."; uses aft-config; } // container config container state { config false; description "Operational state parameters relating to the AFT."; uses aft-config; } // container state uses aft-proto-top; } // list aft } // container afts } // grouping aft-top } // module openconfig-aft
© 2023 YumaWorks, Inc. All rights reserved.