diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 67beb166b3..4f5ec81f1d 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description @@ -366,6 +372,8 @@ submodule openconfig-aft-common { "State parameters relating to IP encapsulation headers."; uses aft-common-entry-nexthop-ip-state; + + uses aft-common-entry-nexthop-ipv6-state; } } @@ -639,6 +647,38 @@ submodule openconfig-aft-common { } } + grouping aft-common-entry-nexthop-ipv6-state { + description + "IPv6 encapsulation applied on a next-hop"; + + leaf-list srv6-sid-list { + type oc-inet:ipv6-address; + ordered-by user; + description + "Additional SRv6 SIDs set on the Segment Routing Header (SRH)."; + } + + leaf flow-label { + type oc-inet:ipv6-flow-label; + description + "Flow Label, used to identify a packet belong to a particular flow. + If this value is set, it overrides the hashing computed by the device + and forces the value configured."; + } + + leaf traffic-class { + type oc-inet:ipv6-traffic-class; + description + "Traffic Class value to use for the encapsulated packet."; + } + + leaf hop-limit { + type oc-inet:ipv6-hop-limit; + description + "Hop Limit value to use for the encapsulated packet."; + } + } + grouping aft-common-entry-nexthop-encap-gre-config { description "GRE encapsulation applied on a IPv4 and IPv6 next-hop."; @@ -863,6 +903,23 @@ submodule openconfig-aft-common { } } + grouping aft-common-ipv6-state { + description + "Common parameters across IPv6 address family"; + + leaf srv6-endpoint-behavior { + type identityref { + base oc-inet:srv6-endpoint-type; + } + description + "Behavior type associated with the SID. The behavior types are + defined in the IANA SRv6 Endpoint Behaviors registry."; + reference + "IANA SRv6 Endpoint Behaviors registry + (https://www.iana.org/assignments/segment-routing/segment-routing.xhtml)"; + } + } + grouping aft-next-hop-groups-structural { description "Logical grouping for groups of next-hops."; diff --git a/release/models/aft/openconfig-aft-counters.yang b/release/models/aft/openconfig-aft-counters.yang index 1ed9debc9e..cfeaea39bc 100644 --- a/release/models/aft/openconfig-aft-counters.yang +++ b/release/models/aft/openconfig-aft-counters.yang @@ -18,7 +18,13 @@ module openconfig-aft-counters { description "Submodule providing a unified subtree for AFT entry counters."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-07-04" { description diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index af225feb8a..16ee2e9465 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index 2b913d8fe2..427e2d113f 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index e1b2c6087c..0ce7647bae 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description @@ -238,5 +244,7 @@ submodule openconfig-aft-ipv6 { } } uses aft-common-ip-state; + + uses aft-common-ipv6-state; } } diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 79bd72391e..0529c74815 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 67e3887c67..2e49c8e199 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft-state-synced.yang b/release/models/aft/openconfig-aft-state-synced.yang index b5563233f5..45a554477c 100644 --- a/release/models/aft/openconfig-aft-state-synced.yang +++ b/release/models/aft/openconfig-aft-state-synced.yang @@ -16,7 +16,13 @@ submodule openconfig-aft-state-synced { "Submodule containing definitions of groupings for the state synced signals corresponding to various abstract forwarding tables."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 272bde5631..b588d0f212 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -42,7 +42,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index 63f0978318..8a78d1410e 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -31,7 +31,13 @@ module openconfig-inet-types { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "0.9.0"; + } revision "2025-06-18" { description @@ -460,6 +466,27 @@ module openconfig-inet-types { "RFC 2460 Internet Protocol, Version 6 (IPv6) Specification"; } + typedef ipv6-traffic-class { + type uint8; + description + "The IPv6 traffic-class is an 8-bit value within the IPv6 header + that is available for use by originating nodes and/or forwarding + routers to identify and distinguish between different classes or + priorities of IPv6 packets."; + reference + "RFC 2460 Internet Protocol, Version 6 (IPv6) Specification"; + } + + typedef ipv6-hop-limit { + type uint8; + description + "The IPv6 hop-limit is an 8-bit value within the IPv6 header + that is decremented by 1 by each node that forwards the packet. + When the hop limit field reaches zero, the packet is discarded."; + reference + "RFC 2460 Internet Protocol, Version 6 (IPv6) Specification"; + } + typedef port-number { type uint16; description @@ -488,4 +515,407 @@ module openconfig-inet-types { "RFC 3986, paragraph 1.1.3"; } + // SRv6 endpoint behavior identities + + identity srv6-endpoint-type { + description + "Base identity for SRv6 endpoint behavior types."; + reference + "IANA SRv6 Endpoint Behaviors registry + (https://www.iana.org/assignments/segment-routing/segment-routing.xhtml)"; + } + + identity End { + base srv6-endpoint-type; + description "Endpoint function"; + } + + identity End_PSP { + base srv6-endpoint-type; + description "End with PSP"; + } + + identity End_USP { + base srv6-endpoint-type; + description "End with USP"; + } + + identity End_PSP_USP { + base srv6-endpoint-type; + description "End with PSP & USP"; + } + + identity End.X { + base srv6-endpoint-type; + description "Endpoint with L3 cross-connect"; + } + + identity End.X_PSP { + base srv6-endpoint-type; + description "End.X with PSP"; + } + + identity End.X_USP { + base srv6-endpoint-type; + description "End.X with USP"; + } + + identity End.X_PSP_USP { + base srv6-endpoint-type; + description "End.X with PSP & USP"; + } + + identity End.T { + base srv6-endpoint-type; + description "Endpoint with specific IPv6 table lookup"; + } + + identity End.T_PSP { + base srv6-endpoint-type; + description "End.T with PSP"; + } + + identity End.T_USP { + base srv6-endpoint-type; + description "End.T with USP"; + } + + identity End.T_PSP_USP { + base srv6-endpoint-type; + description "End.T with PSP & USP"; + } + + identity End.B6.Insert { + base srv6-endpoint-type; + description "End.B6.Insert"; + } + + identity End.B6.Encaps { + base srv6-endpoint-type; + description "Endpoint bound to an SRv6 Policy with encapsulation"; + } + + identity End.BM { + base srv6-endpoint-type; + description "Endpoint bound to an SR-MPLS Policy"; + } + + identity End.DX6 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and IPv6 cross-connect"; + } + + identity End.DX4 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and IPv4 cross-connect"; + } + + identity End.DT6 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and specific + IPv6 table lookup"; + } + + identity End.DT4 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and specific + IPv4 table lookup"; + } + + identity End.DT46 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and specific IP + table lookup"; + } + + identity End.DX2 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and L2 cross-connect"; + } + + identity End.DX2V { + base srv6-endpoint-type; + description "Endpoint with decapsulation and VLAN L2 table lookup"; + } + + identity End.DT2U { + base srv6-endpoint-type; + description "Endpoint with decapsulation and unicast MAC L2 table lookup"; + } + + identity End.DT2M { + base srv6-endpoint-type; + description "Endpoint with decapsulation and L2 table flooding"; + } + + identity End.B6.Insert.Red { + base srv6-endpoint-type; + description "End.B6.Insert with reduced SRH"; + } + + identity End.B6.Encaps.Red { + base srv6-endpoint-type; + description "End.B6.Encaps with reduced SRH"; + } + + identity End_USD { + base srv6-endpoint-type; + description "End with USD"; + } + + identity End_PSP_USD { + base srv6-endpoint-type; + description "End with PSP & USD"; + } + + identity End_USP_USD { + base srv6-endpoint-type; + description "End with USP and USD"; + } + + identity End_PSP_USP_USD { + base srv6-endpoint-type; + description "End with PSP, USP & USD"; + } + + identity End.X_USD { + base srv6-endpoint-type; + description "End.X with USD"; + } + + identity End.X_PSP_USD { + base srv6-endpoint-type; + description "End.X with PSP & USD"; + } + + identity End.X_USP_USD { + base srv6-endpoint-type; + description "End.X with USP & USD"; + } + + identity End.X_PSP_USP_USD { + base srv6-endpoint-type; + description "End.X with PSP, USP & USD"; + } + + identity End.T_USD { + base srv6-endpoint-type; + description "End.T with USD"; + } + + identity End.T_PSP_USD { + base srv6-endpoint-type; + description "End.T with PSP & USD"; + } + + identity End.T_USP_USD { + base srv6-endpoint-type; + description "End.T with USP & USD"; + } + + identity End.T_PSP_USP_USD { + base srv6-endpoint-type; + description "End.T with PSP, USP & USD"; + } + + identity End_NEXT-ONLY-CSID { + base srv6-endpoint-type; + description "End with NEXT-ONLY-CSID"; + } + + identity End_NEXT-CSID { + base srv6-endpoint-type; + description "End with NEXT-CSID"; + } + + identity End_NEXT-CSID_PSP { + base srv6-endpoint-type; + description "End with NEXT-CSID & PSP"; + } + + identity End_NEXT-CSID_USP { + base srv6-endpoint-type; + description "End with NEXT-CSID & USP"; + } + + identity End_NEXT-CSID_PSP_USP { + base srv6-endpoint-type; + description "End with NEXT-CSID, PSP & USP"; + } + + identity End_NEXT-CSID_USD { + base srv6-endpoint-type; + description "End with NEXT-CSID & USD"; + } + + identity End_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End with NEXT-CSID, PSP & USD"; + } + + identity End_NEXT-CSID_USP_USD { + base srv6-endpoint-type; + description "End with NEXT-CSID, USP & USD"; + } + + identity End_NEXT-CSID_PSP_USP_USD { + base srv6-endpoint-type; + description "End with NEXT-CSID, PSP, USP & USD"; + } + + identity End.X_NEXT-ONLY-CSID { + base srv6-endpoint-type; + description "End.X with NEXT-ONLY-CSID"; + } + + identity End.X_NEXT-CSID { + base srv6-endpoint-type; + description "End.X with NEXT-CSID"; + } + + identity End.X_NEXT-CSID_PSP { + base srv6-endpoint-type; + description "End.X with NEXT-CSID & PSP"; + } + + identity End.X_NEXT-CSID_USP { + base srv6-endpoint-type; + description "End.X with NEXT-CSID & USP"; + } + + identity End.X_NEXT-CSID_PSP_USP { + base srv6-endpoint-type; + description "End.X with NEXT-CSID, PSP & USP"; + } + + identity End.X_NEXT-CSID_USD { + base srv6-endpoint-type; + description "End.X with NEXT-CSID & USD"; + } + + identity End.X_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End.X with NEXT-CSID, PSP & USD"; + } + + identity End.X_NEXT-CSID_USP_USD { + base srv6-endpoint-type; + description "End.X with NEXT-CSID, USP & USD"; + } + + identity End.X_NEXT-CSID_PSP_USP_USD { + base srv6-endpoint-type; + description "End.X with NEXT-CSID, PSP, USP & USD"; + } + + identity End.DX6_NEXT-CSID { + base srv6-endpoint-type; + description "End.DX6 with NEXT-CSID"; + } + + identity End.DX4_NEXT-CSID { + base srv6-endpoint-type; + description "End.DX4 with NEXT-CSID"; + } + + identity End.DT6_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT6 with NEXT-CSID"; + } + + identity End.DT4_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT4 with NEXT-CSID"; + } + + identity End.DT46_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT46 with NEXT-CSID"; + } + + identity End.DX2_NEXT-CSID { + base srv6-endpoint-type; + description "End.DX2 with NEXT-CSID"; + } + + identity End.DX2V_NEXT-CSID { + base srv6-endpoint-type; + description "End.DX2V with NEXT-CSID"; + } + + identity End.DT2U_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT2U with NEXT-CSID"; + } + + identity End.DT2M_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT2M with NEXT-CSID"; + } + + identity End.T_NEXT-CSID { + base srv6-endpoint-type; + description "End.T with NEXT-CSID"; + } + + identity End.T_NEXT-CSID_PSP { + base srv6-endpoint-type; + description "End.T with NEXT-CSID & PSP"; + } + + identity End.T_NEXT-CSID_USP { + base srv6-endpoint-type; + description "End.T with NEXT-CSID & USP"; + } + + identity End.T_NEXT-CSID_PSP_USP { + base srv6-endpoint-type; + description "End.T with NEXT-CSID, PSP & USP"; + } + + identity End.T_NEXT-CSID_USD { + base srv6-endpoint-type; + description "End.T with NEXT-CSID & USD"; + } + + identity End.T_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End.T with NEXT-CSID, PSP & USD"; + } + + identity End.T_NEXT-CSID_USP_USD { + base srv6-endpoint-type; + description "End.T with NEXT-CSID, USP & USD"; + } + + identity End.T_NEXT-CSID_PSP_USP_USD { + base srv6-endpoint-type; + description "End.T with NEXT-CSID, PSP, USP & USD"; + } + + identity End.B6.Encaps_NEXT-CSID { + base srv6-endpoint-type; + description "End.B6.Encaps with NEXT-CSID"; + } + + identity End.B6.Encaps.Red_NEXT-CSID { + base srv6-endpoint-type; + description "End.B6.Encaps.Red with NEXT-CSID"; + } + + identity End.BM_NEXT-CSID { + base srv6-endpoint-type; + description "End.BM with NEXT-CSID"; + } + + identity End.B6.Encaps.Red_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End.B6.Encaps.Red with NEXT-CSID, PSP & USD"; + } + + identity End.B6.Insert.Red_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End.B6.Insert.Red with NEXT-CSID, PSP & USD"; + } + }