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