module ietf-tunnel-steering {
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:ietf-tunnel-steering";
prefix "tnl-steer";
import ietf-inet-types {
prefix inet;
}
import ietf-te-types {
prefix "te-types";
}
organization
"IETF Traffic Engineering Architecture and Signaling (TEAS)
Working Group";
contact
"WG Web:
WG List:
Editors: Igor Bryskin
Editor: Vishnu Pavan Beeram
Editor: Tarek Saad
Editor: Xufeng Liu
";
description
"This data model is for steering client service to server
tunnels.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
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
(http://trustee.ietf.org/license-info).";
revision 2018-11-03 {
description "Initial revision";
reference "TBD";
}
/*
* Typedefs
*/
/*
* Identities
*/
identity service-type {
description "Base identity for client service type.";
}
identity service-type-l3vpn {
base service-type;
description
"L3VPN service.";
}
identity service-type-l2vpn {
base service-type;
description
"L2VPN service.";
}
identity service-type-evpn {
base service-type;
description
"EVPN service.";
}
identity service-type-eline {
base service-type;
description
"ELINE service.";
}
identity service-type-epl {
base service-type;
description
"EPL service.";
}
identity service-type-evpl {
base service-type;
description
"EVPL service.";
}
identity service-type-l1vpn {
base service-type;
description
"L1VPN service.";
}
identity service-type-actn-vn {
base service-type;
description
"ACTN VN service.";
}
identity service-type-transparent {
base service-type;
description
"Transparent LAN service.";
}
identity encapsulation-type {
description "Base identity for tunnel encapsulation.";
}
identity encapsulation-type-mpls-label {
base encapsulation-type;
description
"Encapsulated by MPLS label stack.";
}
identity encapsulation-type-ethernet-s-tag {
base encapsulation-type;
description
"Encapsulated by Ethernet S-TAG.";
}
identity encapsulation-type-pbb {
base encapsulation-type;
description
"Encapsulated by PBB header.";
}
identity encapsulation-type-gre {
base encapsulation-type;
description
"Encapsulated by GRE header.";
}
/*
* Groupings
*/
/*
* Configuration data and operational state data nodes
*/
container tunnel-pools {
description
"A list of mappings that steer client services to transport
tunnel pools. The tunnel pools are managed independently from
the services steered on them.";
list tunnel-pool {
key "color";
description
"A set of transport tunnels (presumably with similar
characteristics) identified by a network unique ID, named
'color'.";
leaf color {
type uint32;
description
"Unique ID of a tunnel pool.";
}
leaf description {
type string;
description
"Client provided description of the tunnel pool.";
}
list service {
key "service-type id";
description
"A list of client services that are steered on this tunnel
pool.";
leaf service-type {
type identityref {
base service-type;
}
description
"Service type required by the client.";
}
leaf id {
type string;
description
"Unique ID of a client service for the specified
service type.";
}
list access-point {
key "node-address link-termination-point";
config false;
description
"A list of client ports (Link Termination Points) for the
service to enter or exist.";
leaf node-address {
type inet:ip-address;
description
"Node over which the service enters or exists.";
}
leaf link-termination-point {
type string;
description
"Client port (Link Termination Point) over which the
service enters or exits.";
}
leaf direction {
type enumeration {
enum "in" {
description "The service enters to the network.";
}
enum "out" {
description "The service exists from the network.";
}
enum "in-out" {
description
"The service enters to and exists from the
network.";
}
}
description
"Whether the service enters to or exits from the
network.";
}
}
leaf switching-type {
type identityref {
base te-types:switching-capabilities;
}
config false;
description
"Tunnel switching type required by the client.";
reference "RFC3945";
}
leaf protection-type {
type identityref {
base te-types:lsp-protection-type;
}
config false;
description
"The protection type required by the client.";
}
leaf encapsulation {
type identityref {
base encapsulation-type;
}
config false;
description
"The encapsulation type used by the tunnel.";
}
uses te-types:performance-metric-container {
refine performance-metric-one-way {
config false;
}
refine performance-metric-two-way {
config false;
}
}
}
list tunnel {
key "provider-id client-id topology-id source destination "
+ "tunnel-id";
description
"A list of tunnels in the tunnel pool.";
leaf provider-id {
type te-types:te-global-id;
description
"An identifier to uniquely identify a provider.";
}
leaf client-id {
type te-types:te-global-id;
description
"An identifier to uniquely identify a client.";
}
leaf topology-id {
type te-types:te-topology-id;
description
"It is presumed that a datastore will contain many
topologies. To distinguish between topologies it is
vital to have UNIQUE topology identifiers.";
}
leaf source {
type inet:ip-address;
description
"For a p2p or p2mp tunnel, this is the source address;
for a mp2mp tunnel, this is the root address.";
reference "RFC3209, RFC4875, RFC6388, RFC7582.";
}
leaf destination {
type inet:ip-address;
description
"For a p2p tunnel, this is the tunnel endpoint address
extracted from SESSION object;
for a p2mp tunnel, this identifies the destination
group, or p2mp-id;
for a mp2mp tunnel identified by root and opaque-value,
this value is set to '0'.";
reference "RFC3209, RFC4875, RFC6388, RFC7582.";
}
leaf tunnel-id {
type binary;
description
"For a p2p or p2mp tunnel, this is the tunnel identifier
used in the SESSION that remains constant over the life
of the tunnel;
for a mp2mp tunnel, this is the opaque-value in the
FEC element.";
reference "RFC3209, RFC4875, RFC6388, RFC7582.";
}
leaf tunnel-type {
type identityref {
base te-types:te-tunnel-type;
}
config false;
description
"Tunnel type based on constructing technologies and
multipoint types, including P2P-TE, P2MP-TE, SR-TE,
SR P2P, LDP P2P, LDP MP2MP, GRE, PBB, etc";
}
leaf switching-type {
type identityref {
base te-types:switching-capabilities;
}
config false;
description "Tunnel switching type";
reference "RFC3945";
}
leaf protection-type {
type identityref {
base te-types:lsp-protection-type;
}
config false;
description
"The protection type provided by this tunnel.";
}
leaf encapsulation {
type identityref {
base encapsulation-type;
}
config false;
description
"The encapsulation type used by the tunnel.";
}
uses te-types:performance-metric-container {
refine performance-metric-one-way {
config false;
}
refine performance-metric-two-way {
config false;
}
}
}
}
}
}