module ietf-srv6-types {
namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-types";
prefix srv6-types;
import ietf-inet-types {
prefix inet;
}
organization
"IETF SPRING Working Group";
contact
"WG Web:
WG List:
Editor: Kamran Raza
Editor: Jaganbabu Rajamanickam
Editor: Xufeng Liu
Editor: Zhibo Hu
Editor: Iftekhar Hussain
Editor: Himanshu Shah
Editor: Daniel Voyer
Editor: Hani Elmalky
Editor: Satoru Matsushima
Editor: Katsuhiro Horiba
Editor: Ahmed AbdelSalam
";
description
"This YANG module defines the essential types for the
management of Segment-Routing with IPv6 dataplane (SRv6).
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).";
reference "RFC XXXX";
revision 2018-03-01 {
description
"Updated to align with SRv6 network programming draft rev 04";
reference
"RFC XXXX: YANG Data Model for SRv6";
}
revision 2017-11-12 {
description
"Initial revision";
reference
"RFC XXXX: YANG Data Model for SRv6";
}
identity srv6-endpoint-type {
description
"Base identity from which specific SRv6 Endpoint types are derived.";
}
/* Endpoints defined under draft-filsfils-spring-srv6-network-programming */
identity End {
base srv6-endpoint-type;
description
"End function (variant: no PSP, no USP).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End_PSP {
base srv6-endpoint-type;
description
"End function (variant: PSP only).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End_USP {
base srv6-endpoint-type;
description
"End function (variant: USP only).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End_PSP_USP {
base srv6-endpoint-type;
description
"End function (variant: PSP and USP).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.X {
base srv6-endpoint-type;
description
"Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: no PSP, no USP).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.X_PSP {
base srv6-endpoint-type;
description
"Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: PSP only).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.X_USP {
base srv6-endpoint-type;
description
"Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: USP only).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.X_PSP_USP {
base srv6-endpoint-type;
description
"Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: PSP and USP).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.T {
base srv6-endpoint-type;
description
"Endpoint with specific IPv6 table lookup
(variant: no PSP, no USP).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.T_PSP {
base srv6-endpoint-type;
description
"Endpoint with specific IPv6 table lookup
(variant: PSP only).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.T_USP {
base srv6-endpoint-type;
description
"Endpoint with specific IPv6 table lookup
(variant: USP only).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.T_PSP_USP {
base srv6-endpoint-type;
description
"Endpoint with specific IPv6 table lookup
(variant: PSP and USP).";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.B6 {
base srv6-endpoint-type;
description
"Endpoint bound to an SRv6 Policy";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.B6.Encaps {
base srv6-endpoint-type;
description
"This is a variation of the End.B6 behavior
where the SRv6 Policy also includes an
IPv6 Source Address A.";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.BM {
base srv6-endpoint-type;
description
"Endpoint bound to an SR-MPLS Policy";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DX6 {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and cross-connect
to an array of IPv6 adjacencies";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DX4 {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and cross-connect
to an array of IPv4 adjacencies";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DT6 {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and specific
IPv6 table lookup";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DT4 {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and specific
IPv4 table lookup";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DT46 {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and specific IP
(IPv4 or IPv6) table lookup";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DX2 {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and Layer-2
cross-connect to an L2 interface";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DX2V {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and specific
VLAN L2 table lookup";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DT2U {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and specific
unicast MAC L2 table lookup";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.DT2M {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and specific L2 table
flooding";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.OTP {
base srv6-endpoint-type;
description
"Endpoint for OAM operation of timestamp and punt";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
identity End.S {
base srv6-endpoint-type;
description
"Endpoint in search of a target in table TE";
reference
"draft-filsfils-spring-srv6-network-programming-04";
}
/* Endpoints defined under draft-xuclad-spring-sr-service-chaining */
identity End.AS {
base srv6-endpoint-type;
description
"Service-Chaining Static proxy for inner type (Ethernet,
IPv4 or IPv6)";
reference
"draft-xuclad-spring-sr-service-chaining-01";
}
identity End.AD {
base srv6-endpoint-type;
description
"Service-Chaining Dynamic proxy for inner type (Ethernet,
IPv4 or IPv6)";
reference
"draft-xuclad-spring-sr-service-chaining-01";
}
identity End.ASM {
base srv6-endpoint-type;
description
"Service-Chaining Shared memory SR proxy for inner type
(Ethernet, IPv4 or IPv6)";
reference
"draft-xuclad-spring-sr-service-chaining-01";
}
identity End.AM {
base srv6-endpoint-type;
description
"Service-Chaining Masquerading SR proxy";
reference
"draft-xuclad-spring-sr-service-chaining-01";
}
/* Endpoints defined under draft-ietf-dmm-srv6-mobile-uplane */
identity End.MAP {
base srv6-endpoint-type;
description
"DMM End.MAP";
reference
"draft-ietf-dmm-srv6-mobile-uplane-01";
}
identity End.M.GTP6.UP {
base srv6-endpoint-type;
description
"DMM End.M.GTP6.UP";
reference
"draft-ietf-dmm-srv6-mobile-uplane-01";
}
identity End.M.GTP6.DN {
base srv6-endpoint-type;
description
"DMM End.M.GTP6.DN";
reference
"draft-ietf-dmm-srv6-mobile-uplane-01";
}
identity End.M.GTP4.DN {
base srv6-endpoint-type;
description
"DMM End.M.GTP4.DN";
reference
"draft-ietf-dmm-srv6-mobile-uplane-01";
}
identity End.Limit {
base srv6-endpoint-type;
description
"DMM End.Limit";
reference
"draft-ietf-dmm-srv6-mobile-uplane-01";
}
typedef srv6-transit-type {
type enumeration {
/* draft-filsfils-spring-srv6-network-programming-04 */
enum T { value 1; description "Transit behavior"; }
enum T.Insert {
description "Transit behavior with insertion of an SRv6 policy";
}
enum T.Insert.Red {
description "Transit behavior with reduced insertion of an SRv6 policy";
}
enum T.Encaps {
description "Transit behavior with encap of an SRv6 policy";
}
enum T.Encaps.Red {
description "Transit behavior with reduced encap of an SRv6 policy";
}
enum T.Encaps.L2 {
description "T.Encaps behavior on the received L2 frame";
}
enum T.Encaps.L2.Red {
description "T.Encaps.Red behavior on the received L2 frame";
}
}
description "SRv6 Transit behavior types";
}
typedef srv6-security-rule-type {
type enumeration {
/* draft-filsfils-spring-srv6-network-programming-04 */
enum SEC1 { value 1; description "Security rule SEC1"; }
enum SEC2 { description "Security rule SEC2"; }
enum SEC3 { description "Security rule SEC3"; }
enum SEC4 { description "Security rule SEC4"; }
}
description "SRv6 Security rule types";
}
typedef srv6-counter-type {
type enumeration {
/* draft-filsfils-spring-srv6-network-programming-04 */
enum CNT1 { value 1; description "CNT1"; }
enum CNT2 { description "CNT2"; }
enum CNT3 { description "CNT3"; }
}
description "SRv6 counter types";
}
typedef srv6-sid {
type inet:ipv6-prefix;
description
"This type defines a SID value in SRv6";
}
typedef srv6-func-opcode {
type uint32;
description
"This is a typedef for SID FUNC's opcode type";
}
typedef srv6-func-opcode-reserved {
type uint32 {
range "1 .. 63";
}
description
"This is a typedef for SID FUNC's reserved opcode type";
}
typedef srv6-func-opcode-unreserved {
type uint32 {
range "64 .. max";
}
description
"This is a typedef for SID FUNC's allocatable (unreserved) opcode type";
}
typedef srv6-func-opcode-reserved-type {
type enumeration {
enum invalid { value 0; description "Invalid opcode"; }
}
description "SRv6 SID FUNC Reserved Opcodes";
}
typedef srv6-locator-len {
type uint8 {
range "32 .. 96";
}
description
"This type defines an SRv6 locator len with range constraints";
}
typedef srv6-sid-pfxlen {
type uint8 {
range "33 .. 128";
}
default 128;
description
"This type defines a SID prefixlen with range constraints";
}
typedef sid-alloc-type {
type enumeration {
enum Dynamic {
description
"SID allocated dynamically.";
}
enum Explicit {
description
"SID allocated with explicit (static) value";
}
}
description
"Types of sid allocation used.";
}
identity srv6-sid-owner-type {
description
"Base identity from which SID owner types are derived.";
}
identity isis {
base srv6-sid-owner-type;
description "ISIS";
}
identity ospfv3 {
base srv6-sid-owner-type;
description "OSPFv3";
}
identity bgp {
base srv6-sid-owner-type;
description "BGP";
}
identity evpn {
base srv6-sid-owner-type;
description "EVPN";
}
identity sr-policy {
base srv6-sid-owner-type;
description "SR Policy";
}
identity service-function {
base srv6-sid-owner-type;
description "SF";
}
// TODO: Rtg module ?
typedef table-id {
type uint32;
description
"Routing Table Id";
}
typedef srv6-status-type {
type enumeration {
enum up { value 1; description "State is Up"; }
enum down { description "State is Down"; }
}
description
"Status type";
}
typedef srv6-nexthop-type {
type enumeration {
enum ipv4 { value 1; description "IPv4 next-hop"; }
enum ipv6 { description "IPv6 next-hop"; }
enum mpls { description "MPLS next-hop"; }
enum l2 { description "L2 next-hop"; }
}
description
"Forwarding Next-hop type";
}
} // module