Files
Analyse_Reseaux/Parseurs_logs_Switch/src/modèles/openconfig-local-routing.yang

517 lines
15 KiB
YANG
Raw Normal View History

2026-05-20 13:56:08 +02:00
module openconfig-local-routing {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/local-routing";
prefix "oc-loc-rt";
// import some basic types
import openconfig-inet-types { prefix inet; }
import openconfig-policy-types { prefix oc-pt; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-bfd { prefix oc-bfd; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module describes configuration and operational state data
for routes that are locally generated, i.e., not created by
dynamic routing protocols. These include static routes, locally
created aggregate routes for reducing the number of constituent
routes that must be advertised, summary routes for IGPs, etc.
This model expresses locally generated routes as generically as
possible, avoiding configuration of protocol-specific attributes
at the time of route creation. This is primarily to avoid
assumptions about how underlying router implementations handle
route attributes in various routing table data structures they
maintain. Hence, the definition of locally generated routes
essentially creates 'bare' routes that do not have any protocol-
specific attributes.
When protocol-specific attributes must be attached to a route
(e.g., communities on a locally defined route meant to be
advertised via BGP), the attributes should be attached via a
protocol-specific policy after importing the route into the
protocol for distribution (again via routing policy).";
oc-ext:openconfig-version "4.1.0";
revision "2025-07-29" {
description
"Add wecmp-weight leaf to support wECMP with static routes.";
reference "4.1.0";
}
revision "2025-07-01" {
description
"Move static next-hop-group to local-routing-network-instance and
augment the local routing module.";
reference "4.0.0";
}
revision "2025-06-30" {
description
"Remove leaves that referenced network instances (see 2.2.0)
and replace with augment";
reference "3.0.0";
}
revision "2025-03-31" {
description
"Add static routing to other network instance for destination
lookup";
reference "2.2.0";
}
revision "2025-02-20" {
description
"Add static next-hop-groups and encapsulation headers.";
reference "2.1.0";
}
revision "2022-11-01" {
description
"Update static route nexthop index description.";
reference "2.0.1";
}
revision "2022-05-10" {
description
"Removal of top-level /local-routes, description update to
static route metric, addition of static/aggregate route
preference, addition of aggregate route metric.";
reference "2.0.0";
}
revision "2020-03-24" {
description
"Add bfd support without augmentation.";
reference "1.2.0";
}
revision "2020-03-24" {
description
"Add a description statement to static routes.";
reference "1.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "1.0.2";
}
revision "2017-05-15" {
description
"Update to resolve style guide non-compliance.";
reference "1.0.1";
}
revision "2016-05-11" {
description
"OpenConfig public release";
reference "1.0.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity LOCAL_DEFINED_NEXT_HOP {
description
"A base identity type of local defined next-hops";
}
identity DROP {
base LOCAL_DEFINED_NEXT_HOP;
description
"Discard traffic for the corresponding destination";
}
identity LOCAL_LINK {
base LOCAL_DEFINED_NEXT_HOP;
description
"Treat traffic towards addresses within the specified
next-hop prefix as though they are connected to a local
link. When the LOCAL_LINK next-hop type is specified,
an interface must also be specified such that
the local system can determine which link to trigger
link-layer address discovery against";
}
identity LOCAL_DEFINED_WEIGHT {
description
"A base identity type of locally defined next-hop weight.";
}
identity AUTO {
base LOCAL_DEFINED_WEIGHT;
description
"The wecmp-weight leaf inherits value from egress interface
bandwidth expressed in bps.";
}
// typedef statements
typedef local-defined-next-hop {
type identityref {
base LOCAL_DEFINED_NEXT_HOP;
}
description
"Pre-defined next-hop designation for locally generated
routes";
}
typedef local-defined-weight {
type identityref {
base LOCAL_DEFINED_WEIGHT;
}
description
"Pre-defined wECMP weight for locally generated
static route next-hops";
}
// grouping statements
grouping local-generic-settings {
description
"Generic options that can be set on local routes when
they are defined";
leaf set-tag {
type oc-pt:tag-type;
description
"Set a generic tag value on the route. This tag can be
used for filtering routes that are distributed to other
routing protocols.";
}
leaf description {
type string;
description
"An optional textual description for the route.";
}
}
grouping local-common-route-attributes {
description
"Common route attributes that can be set on static route next-hops
as well as aggregate routes.";
leaf metric {
type uint32;
description
"A metric (or cost) which is utilized to specify the order of
selection of the next-hop entry. The lower the metric, the more
preferable the prefix entry is. When this value is not
specified, the metric is inherited from the default metric of
the implementation for static route entries. When multiple
next-hops are specified for a static route, the metric is
utilized to determine which of the next-hops to be installed in
the RIB. When multiple next-hops have the same metric (be it
specified, or simply the default) then these next-hops should
all be installed in the RIB.";
}
leaf preference {
type uint32;
description
"Administrative Distance (preference) of the entry. The
preference defines the order of selection when multiple
sources (protocols, static, etc.) contribute to the same
prefix entry. The lower the preference, the more preferable the
prefix is. When this value is not specified, the preference is
inherited from the default preference of the implementation for
static routes.";
}
leaf wecmp-weight {
type union {
type uint64;
type local-defined-weight;
}
description
"The weight of next-hop used for WECMP (a.k.a. UCMP, WCMP). This
leaf has significance only if multiple next-hops of given prefix
form ECMP group, and all of this next-hops have ecmp-weight leaf
specified. Else, wecmp-weight should be ignored.
The value 'AUTO' sets value to be equal to egress interface
bandwidth expressed in bps (not Bps as BGP link-bandwidth
extended-community does).
It is recommended to express explicit value in bps to be compatible
if mixing next-hops with wecmp-weight = 'AUTO'.
This leaf is valid only if recurse leaf is set to false, or
if interface-ref is specified.";
}
}
grouping local-static-config {
description
"Configuration data for static routes.";
leaf prefix {
type inet:ip-prefix;
description
"Destination prefix for the static route, either IPv4 or
IPv6.";
}
uses local-generic-settings;
}
grouping local-static-state {
description
"Operational state data for static routes";
}
grouping local-static-nexthop-config {
description
"Configuration parameters related to each next-hop entry
specified for a static route";
leaf index {
type string;
description
"An user-specified identifier utilised to uniquely reference
the next-hop entry in the next-hop list. The value of this
index has no semantic meaning other than for referencing
the entry. It is observed that implementations typically
only support a numeric value for this string. ";
}
leaf next-hop {
type union {
type inet:ip-address;
type local-defined-next-hop;
}
description
"The next-hop that is to be used for the static route
- this may be specified as:
- an IP address or
- a pre-defined next-hop type - for instance, DROP or
LOCAL_LINK or
When this leaf is not set, and the interface-ref
value is specified for the next-hop, then the system should
treat the prefix as though it is directly connected to the
interface.
This leaf is mutualy exclusive with next-network-instance
leaf";
}
leaf recurse {
type boolean;
default false;
description
"Determines whether the next-hop should be allowed to
be looked up recursively - i.e., via a RIB entry which has
been installed by a routing protocol, or another static route
- rather than needing to be connected directly to an
interface of the local system within the current network
instance. When the interface reference specified within the
next-hop entry is set (i.e., is not null) then forwarding is
restricted to being via the interface specified - and
recursion is hence disabled.
This leaf is mutualy exclusive with next-network-instance
leaf";
}
uses local-common-route-attributes;
}
grouping local-static-nexthop-state {
description
"Operational state parameters relating to a next-hop entry
for a static route";
}
grouping local-static-top {
description
"Top-level grouping for the list of static route definitions";
container static-routes {
description
"Enclosing container for the list of static routes";
list static {
key "prefix";
description
"List of locally configured static routes";
leaf prefix {
type leafref {
path "../config/prefix";
}
description
"Reference to the destination prefix list key.";
}
container config {
description
"Configuration data for static routes";
uses local-static-config;
}
container state {
config false;
description
"Operational state data for static routes";
uses local-static-config;
uses local-static-state;
}
container next-hops {
description
"Configuration and state parameters relating
to the next-hops that are to be utilised for the static
route being specified.
In the future, this container will be deprecated in favor of the
/network-instances/network-instance/static/next-hop-groups
container. If a statically configured next-hop-group is used
for a static route prefix then the 'static-routes/static/next-hops'
container must not be used.";
list next-hop {
key "index";
description
"A list of next-hops to be utilised for the static
route being specified. In the future, this list will be
deprecated in favor of
/network-instances/network-instance/static/next-hop-groups.";
leaf index {
type leafref {
path "../config/index";
}
description
"A reference to the index of the current next-hop.
The index is intended to be a user-specified value
which can be used to reference the next-hop in
question, without any other semantics being
assigned to it.";
}
container config {
description
"Configuration parameters relating to the next-hop
entry";
uses local-static-nexthop-config;
}
container state {
config false;
description
"Operational state parameters relating to the
next-hop entry";
uses local-static-nexthop-config;
uses local-static-nexthop-state;
}
uses oc-bfd:bfd-enable;
uses oc-if:interface-ref;
}
}
}
}
}
grouping local-aggregate-config {
description
"Configuration data for aggregate routes";
leaf prefix {
type inet:ip-prefix;
description
"Aggregate prefix to be advertised";
}
leaf discard {
type boolean;
default false;
description
"When true, install the aggregate route with a discard
next-hop -- traffic destined to the aggregate will be
discarded with no ICMP message generated. When false,
traffic destined to an aggregate address when no
constituent routes are present will generate an ICMP
unreachable message.";
}
uses local-generic-settings;
uses local-common-route-attributes;
}
grouping local-aggregate-state {
description
"Operational state data for local aggregate advertisement
definitions";
}
grouping local-aggregate-top {
description
"Top-level grouping for local aggregates";
container local-aggregates {
description
"Enclosing container for locally-defined aggregate
routes";
list aggregate {
key "prefix";
description
"List of aggregates";
leaf prefix {
type leafref {
path "../config/prefix";
}
description
"Reference to the configured prefix for this aggregate";
}
container config {
description
"Configuration data for aggregate advertisements";
uses local-aggregate-config;
}
container state {
config false;
description
"Operational state data for aggregate
advertisements";
uses local-aggregate-config;
uses local-aggregate-state;
}
}
}
}
}