netconfcentral logo

ietf-srv6-static

HTML

ietf-srv6-static@2019-10-30



  module ietf-srv6-static {

    yang-version 1.1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-srv6-static";

    prefix srv6-static;

    import ietf-interfaces {
      prefix if;
      reference
        "RFC 8343: A YANG Data Model for Interface Management";


    }
    import ietf-inet-types {
      prefix inet;
      reference
        "RFC 6991: Common YANG Data Types";


    }
    import ietf-routing {
      prefix rt;
      reference
        "RFC 8349: A YANG Data Model for Routing Management (NMDA
        version)";


    }
    import ietf-srv6-types {
      prefix srv6-types;
      reference
        "RFC XXXX: YANG Data Model for SRv6";


    }
    import ietf-srv6-base {
      prefix srv6;
      reference
        "RFC XXXX: YANG Data Model for SRv6";


    }

    organization "IETF SPRING Working Group";

    contact
      "WG Web:   <http://tools.ietf.org/wg/spring/>
     WG List:  <mailto:spring@ietf.org>

     Editor:   Kamran Raza
               <mailto:skraza@cisco.com>

     Editor:   Jaganbabu Rajamanickam
               <maito:jrajaman@cisco.com>

     Editor:   Xufeng Liu
               <mailto:xufeng.liu.ietf@gmail.com>

     Editor:   Zhibo Hu
               <mailto:huzhibo@huawei.com>

     Editor:   Iftekhar Hussain
               <mailto:IHussain@infinera.com>

     Editor:   Himanshu Shah
               <mailto:hshah@ciena.com>

     Editor:   Daniel Voyer
               <mailto:daniel.voyer@bell.ca>

     Editor:   Hani Elmalky
               <mailto:hani.elmalky@ericsson.com>

     Editor:   Satoru Matsushima
               <mailto:satoru.matsushima@gmail.com>

     Editor:   Katsuhiro Horiba
               <mailto:katsuhiro.horiba@g.softbank.co.jp>

     Editor:   Ahmed AbdelSalam
               <mailto:ahmed.abdelsalam@gssi.it>

     ";

    description
      "This YANG module defines the essential elements for the
     management of Static application for 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 "2019-10-30" {
      description
        "Extended model for EVPN behaviors";
      reference
        "RFC XXXX: YANG Data Model for SRv6";

    }

    revision "2019-07-08" {
      description
        "Alignment with SRv6 network programming";
      reference
        "RFC XXXX: YANG Data Model for SRv6";

    }

    revision "2018-10-22" {
      description "Initial revision.";
      reference
        "RFC XXXX: YANG Data Model for SRv6";

    }


    grouping path-attrs-v6 {
      description "IPv6 Path properties";
      leaf interface {
        type if:interface-ref;
        description "The outgoing interface";
      }

      leaf next-hop {
        type inet:ipv6-address;
        description
          "The IP address of the next-hop";
      }

      leaf table {
        type srv6-types:table-id;
        description
          "The routing table associated with the next-hop";
      }

      uses srv6:path-attrs-cmn;
    }  // grouping path-attrs-v6

    grouping path-attrs-v4 {
      description "IPv4 Path properties";
      leaf interface {
        type if:interface-ref;
        description "The outgoing interface";
      }

      leaf next-hop {
        type inet:ipv4-address;
        description
          "The IP address of the next-hop";
      }

      leaf table {
        type srv6-types:table-id;
        description
          "The routing table associated with the next-hop";
      }

      uses srv6:path-attrs-cmn;
    }  // grouping path-attrs-v4

    grouping path-attrs-mpls {
      description "MPLS Path properties";
      leaf interface {
        type if:interface-ref;
        description "The outgoing interface";
      }

      leaf next-hop {
        type inet:ip-address;
        description
          "The IP address of the next-hop";
      }

      uses srv6:path-attrs-cmn;
    }  // grouping path-attrs-mpls

    grouping multi-paths-v6 {
      description "Multipath grouping";
      container paths {
        description "List of outgoing paths";
        list path {
          key "path-index";
          description
            "The list of paths associated with the SID";
          leaf path-index {
            type uint8;
            description "Index of the path";
          }

          uses path-attrs-v6;

          container sid-list {
            description
              "SID-list associated with the path";
            uses srv6:path-out-sids;
          }  // container sid-list
        }  // list path
      }  // container paths
    }  // grouping multi-paths-v6

    grouping multi-paths-v4 {
      description "Multipath grouping";
      container paths {
        description "List of outgoing paths";
        list path {
          key "path-index";
          description
            "The list of paths associated with the SID";
          leaf path-index {
            type uint8;
            description "Index of the path";
          }

          uses path-attrs-v4;

          container sid-list {
            description
              "SID-list associated with the path";
            uses srv6:path-out-sids;
          }  // container sid-list
        }  // list path
      }  // container paths
    }  // grouping multi-paths-v4

    grouping multi-paths-mpls {
      description "Multipath grouping";
      container paths {
        description "List of outgoing paths";
        list path {
          key "path-index";
          description
            "The list of paths associated with the SID";
          leaf path-index {
            type uint8;
            description "Index of the path";
          }

          uses path-attrs-mpls;

          container sid-list {
            description
              "SID-list associated with the path";
            uses srv6:path-out-sids;
          }  // container sid-list
        }  // list path
      }  // container paths
    }  // grouping multi-paths-mpls

    grouping multi-paths-v6-BUM {
      description
        "Multipath grouping for EVPN bridging BUM use case";
      container paths {
        description
          "List of outgoing paths for flooding";
        list path {
          key "path-index";
          description
            "The list of paths associated with the SID";
          leaf path-index {
            type uint8;
            description "Index of the path";
          }

          leaf l2-interface {
            type if:interface-ref;
            description
              "The outgoing L2 interface for flooding";
          }
        }  // list path
      }  // container paths
    }  // grouping multi-paths-v6-BUM

    grouping srv6-sid-config {
      description
        "Configuration parameters relating to SRv6 sid.";
      leaf function {
        type srv6-types:srv6-func-value;
        description "SRv6 function value.";
      }

      leaf end-behavior-type {
        type identityref {
          base srv6-types:srv6-endpoint-type;
        }
        mandatory true;
        description
          "Type of SRv6 end behavior.";
      }

      container end {
        when "../end-behavior-type = 'End'" {
          description
            "This container is valid only when the user chooses End
           behavior (variant: no PSP, no USP).";
        }
        description
          "The Endpoint function is the most basic function.
         FIB lookup on updated DA and forward accordingly
         to the matched entry.
         This is the SRv6 instantiation of a Prefix SID
         (variant: no PSP, no USP)";
      }  // container end

      container end_psp {
        when
          "../end-behavior-type = 'End_PSP'" {
          description
            "This container is valid only when the user chooses End
           behavior (variant: PSP only).";
        }
        description
          "The Endpoint function is the most basic function.
         FIB lookup on updated DA and forward accordingly
         to the matched entry.
         This is the SRv6 instantiation of a Prefix SID
         (variant: PSP only)";
      }  // container end_psp

      container end_usp {
        when
          "../end-behavior-type = 'End_USP'" {
          description
            "This container is valid only when the user chooses End
           behavior (variant: USP only).";
        }
        description
          "The Endpoint function is the most basic function.
         FIB lookup on updated DA and forward accordingly
         to the matched entry.
         This is the SRv6 instantiation of a Prefix SID
         (variant: USP only)";
      }  // container end_usp

      container end_psp_usp {
        when
          "../end-behavior-type = 'End_PSP_USP'" {
          description
            "This container is valid only when the user chooses End
           behavior (variant: PSP/USP).";
        }
        description
          "The Endpoint function is the most basic function.
         FIB lookup on updated DA and forward accordingly
         to the matched entry.
         This is the SRv6 instantiation of a Prefix SID
         (variant: PSP/USP)";
      }  // container end_psp_usp

      container end_usd {
        when
          "../end-behavior-type = 'End_USD'" {
          description
            "This container is valid only when the user chooses End
           behavior (variant: USD only).";
        }
        description
          "The Endpoint function is the most basic function.
         FIB lookup on updated DA and forward accordingly
         to the matched entry.
         This is the SRv6 instantiation of a Prefix SID
         (variant: USD)";
      }  // container end_usd

      container end_psp_usd {
        when
          "../end-behavior-type = 'End_PSP_USD'" {
          description
            "This container is valid only when the user chooses End
           behavior (variant: PSP/USD).";
        }
        description
          "The Endpoint function is the most basic function.
         FIB lookup on updated DA and forward accordingly
         to the matched entry.
         This is the SRv6 instantiation of a Prefix SID
         (variant: PSP/USD)";
      }  // container end_psp_usd

      container end_usp_usd {
        when
          "../end-behavior-type = 'End_USP_USD'" {
          description
            "This container is valid only when the user chooses End
           behavior (variant: USP/USD).";
        }
        description
          "The Endpoint function is the most basic function.
         FIB lookup on updated DA and forward accordingly
         to the matched entry.
         This is the SRv6 instantiation of a Prefix SID
         (variant: USP/USD)";
      }  // container end_usp_usd

      container end_psp_usp_usd {
        when
          "../end-behavior-type = 'End_PSP_USP_IUSD'" {
          description
            "This container is valid only when the user chooses End
           behavior (variant: PSP/USP/USD).";
        }
        description
          "The Endpoint function is the most basic function.
         FIB lookup on updated DA and forward accordingly
         to the matched entry.
         This is the SRv6 instantiation of a Prefix SID
         (variant: PSP/USP/USD)";
      }  // container end_psp_usp_usd

      container end-t {
        when
          "../end-behavior-type = 'End.T'" {
          description
            "This container is valid only when the user chooses
           End.T behavior (variant: no PSP, no USP).";
        }
        description
          "Endpoint with specific IPv6 table lookup (variant: no PSP,
        no USP).
         Lookup the next segment in IPv6 table T
         associated with the SID and forward via
         the matched table entry.
         The End.T is used for multi-table operation
         in the core.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description
            "Table Id for lookup on updated DA (next segment)";
        }
      }  // container end-t

      container end-t_psp {
        when
          "../end-behavior-type = 'End.T_PSP'" {
          description
            "This container is valid only when the user chooses
           End.T behavior (variant: PSP only).";
        }
        description
          "Endpoint with specific IPv6 table lookup (variant: PSP only).
         Lookup the next segment in IPv6 table T
         associated with the SID and forward via
         the matched table entry.

         The End.T is used for multi-table operation
         in the core.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description
            "Table Id for lookup on updated DA (next segment)";
        }
      }  // container end-t_psp

      container end-t_usp {
        when
          "../end-behavior-type = 'End.T_USP'" {
          description
            "This container is valid only when the user chooses
           End.T behavior (variant: USP only).";
        }
        description
          "Endpoint with specific IPv6 table lookup (variant: USP only).
         Lookup the next segment in IPv6 table T
         associated with the SID and forward via
         the matched table entry.
         The End.T is used for multi-table operation
         in the core.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description
            "Table Id for lookup on updated DA (next segment)";
        }
      }  // container end-t_usp

      container end-t_psp_usp {
        when
          "../end-behavior-type = 'End.T_PSP_USP'" {
          description
            "This container is valid only when the user chooses
           End.T behavior (variant: USP/PSP).";
        }
        description
          "Endpoint with specific IPv6 table lookup (variant: USP/PSP).
         Lookup the next segment in IPv6 table T
         associated with the SID and forward via
         the matched table entry.
         The End.T is used for multi-table operation
         in the core.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description
            "Table Id for lookup on updated DA (next segment)";
        }
      }  // container end-t_psp_usp

      container end-t_usd {
        when
          "../end-behavior-type = 'End.T_USD'" {
          description
            "This container is valid only when the user chooses
           End.T behavior (variant: USD only).";
        }
        description
          "Endpoint with specific IPv6 table lookup (variant: USD only).
         Lookup the next segment in IPv6 table T
         associated with the SID and forward via
         the matched table entry.
         The End.T is used for multi-table operation
         in the core.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description
            "Table Id for lookup on updated DA (next segment)";
        }
      }  // container end-t_usd

      container end-t_psp_usd {
        when
          "../end-behavior-type = 'End.T_PSP_USD'" {
          description
            "This container is valid only when the user chooses
           End.T behavior (variant: PSP/USD only).";
        }
        description
          "Endpoint with specific IPv6 table lookup (variant: PSP/USD
        only).
         Lookup the next segment in IPv6 table T
         associated with the SID and forward via
         the matched table entry.
         The End.T is used for multi-table operation
         in the core.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description
            "Table Id for lookup on updated DA (next segment)";
        }
      }  // container end-t_psp_usd

      container end-t_usp_usd {
        when
          "../end-behavior-type = 'End.T_USP_USD'" {
          description
            "This container is valid only when the user chooses
           End.T behavior (variant: USP/USD only).";
        }
        description
          "Endpoint with specific IPv6 table lookup (variant:
        USP/USD only).
         Lookup the next segment in IPv6 table T
         associated with the SID and forward via
         the matched table entry.
         The End.T is used for multi-table operation
         in the core.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description
            "Table Id for lookup on updated DA (next segment)";
        }
      }  // container end-t_usp_usd

      container end-t_psp_usp_usd {
        when
          "../end-behavior-type = 'End.T_PSP_USP_USD'" {
          description
            "This container is valid only when the user chooses
           End.T behavior (variant: USP only).";
        }
        description
          "Endpoint with specific IPv6 table lookup (variant:
        PSP/USP/USD only).
         Lookup the next segment in IPv6 table T
         associated with the SID and forward via
         the matched table entry.
         The End.T is used for multi-table operation
         in the core.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description
            "Table Id for lookup on updated DA (next segment)";
        }
      }  // container end-t_psp_usp_usd

      container end-x {
        when
          "../end-behavior-type = 'End.X'" {
          description
            "This container is valid only when the user chooses
           End.X behavior (variant: no USP/PSP)";
        }
        description
          "Endpoint with cross-connect to an array of
         layer-3 adjacencies (variant: no USP/PSP).
         Forward to layer-3 adjacency bound to the SID S.
         The End.X function is required to express any
         traffic-engineering policy.";
        leaf protected {
          type boolean;
          default 'false';
          description
            "Is Adj-SID protected?";
        }

        uses multi-paths-v6;
      }  // container end-x

      container end-x_psp {
        when
          "../end-behavior-type = 'End.X_PSP'" {
          description
            "This container is valid only when the user chooses
           End.X behavior (variant: PSP only)";
        }
        description
          "Endpoint with cross-connect to an array of
         layer-3 adjacencies (variant: PSP only).
         Forward to layer-3 adjacency bound to the SID S.
         The End.X function is required to express any
         traffic-engineering policy.";
        leaf protected {
          type boolean;
          default 'false';
          description
            "Is Adj-SID protected?";
        }

        uses multi-paths-v6;
      }  // container end-x_psp

      container end-x_usp {
        when
          "../end-behavior-type = 'End.X_USP'" {
          description
            "This container is valid only when the user chooses
           End.X behavior (variant: USP only)";
        }
        description
          "Endpoint with cross-connect to an array of
         layer-3 adjacencies (variant: USP only).
         Forward to layer-3 adjacency bound to the SID S.
         The End.X function is required to express any
         traffic-engineering policy.";
        leaf protected {
          type boolean;
          default 'false';
          description
            "Is Adj-SID protected?";
        }

        uses multi-paths-v6;
      }  // container end-x_usp

      container end-x_psp_usp {
        when
          "../end-behavior-type = 'End.X_PSP_USP'" {
          description
            "This container is valid only when the user chooses
           End.X behavior (variant: PSP/USP)";
        }
        description
          "Endpoint with cross-connect to an array of
         layer-3 adjacencies (variant: PSP/USP).
         Forward to layer-3 adjacency bound to the SID S.
         The End.X function is required to express any
         traffic-engineering policy.";
        leaf protected {
          type boolean;
          default 'false';
          description
            "Is Adj-SID protected?";
        }

        uses multi-paths-v6;
      }  // container end-x_psp_usp

      container end-x_usd {
        when
          "../end-behavior-type = 'End.X_USD'" {
          description
            "This container is valid only when the user chooses
           End.X behavior (variant: USD only)";
        }
        description
          "Endpoint with cross-connect to an array of
         layer-3 adjacencies (variant: PSP/USP).
         Forward to layer-3 adjacency bound to the SID S.
         The End.X function is required to express any
         traffic-engineering policy.";
        leaf protected {
          type boolean;
          default 'false';
          description
            "Is Adj-SID protected?";
        }

        uses multi-paths-v6;
      }  // container end-x_usd

      container end-x_psp_usd {
        when
          "../end-behavior-type = 'End.X_PSP_USD'" {
          description
            "This container is valid only when the user chooses
           End.X behavior (variant: PSP/USD only)";
        }
        description
          "Endpoint with cross-connect to an array of
         layer-3 adjacencies (variant: PSP/USP).
         Forward to layer-3 adjacency bound to the SID S.
         The End.X function is required to express any
         traffic-engineering policy.";
        leaf protected {
          type boolean;
          default 'false';
          description
            "Is Adj-SID protected?";
        }

        uses multi-paths-v6;
      }  // container end-x_psp_usd

      container end-x_usp_usd {
        when
          "../end-behavior-type = 'End.X_USP_USD'" {
          description
            "This container is valid only when the user chooses
           End.X behavior (variant: USP/USD only)";
        }
        description
          "Endpoint with cross-connect to an array of
         layer-3 adjacencies (variant: PSP/USP).
         Forward to layer-3 adjacency bound to the SID S.
         The End.X function is required to express any
         traffic-engineering policy.";
        leaf protected {
          type boolean;
          default 'false';
          description
            "Is Adj-SID protected?";
        }

        uses multi-paths-v6;
      }  // container end-x_usp_usd

      container end-x_psp_usp_usd {
        when
          "../end-behavior-type = 'End.X_PSP_USP_USD'" {
          description
            "This container is valid only when the user chooses
           End.X behavior (variant: PSP/USP/USD only)";
        }
        description
          "Endpoint with cross-connect to an array of
         layer-3 adjacencies (variant: PSP/USP).
         Forward to layer-3 adjacency bound to the SID S.
         The End.X function is required to express any
         traffic-engineering policy.";
        leaf protected {
          type boolean;
          default 'false';
          description
            "Is Adj-SID protected?";
        }

        uses multi-paths-v6;
      }  // container end-x_psp_usp_usd

      container end-b6-insert {
        when
          "../end-behavior-type = 'End.B6.Insert' or
            ../end-behavior-type = 'End.B6.Insert.Red'" {
          description
            "This container is valid only when the user chooses
           End.B6.Insert or End.B6.Insert.Red behavior.";
        }
        description
          "Endpoint bound to an SRv6 Policy.
         Insert SRH based on the policy and forward the
         packet toward the first hop configured in the policy.
         This is the SRv6 instantiation of a Binding SID.";
        leaf policy-name {
          type string;
          mandatory true;
          description "SRv6 policy name.";
        }

        uses multi-paths-v6;
      }  // container end-b6-insert

      container end-b6-encaps {
        when
          "../end-behavior-type = 'End.B6.Encaps' or
            ../end-behavior-type = 'End.B6.Encaps.Red'" {
          description
            "This container is valid only when the user chooses
           End.B6.Encaps or End.B6.Encaps.Red behavior.";
        }
        description
          "This is a variation of the End.B6 behavior where
         the SRv6 Policy also includes an IPv6 Source
         Address.
         Insert SRH based on the policy and update the
         source IP and forward the packet toward the
         first hop configured in the policy.
         Instead of simply inserting an SRH with the
         policy (End.B6), this behavior also adds an
         outer IPv6 header.";
        leaf policy-name {
          type string;
          mandatory true;
          description "SRv6 policy name.";
        }

        leaf source-address {
          type inet:ipv6-address;
          mandatory true;
          description
            "IPv6 source address for Encap.";
        }

        uses multi-paths-v6;
      }  // container end-b6-encaps

      container end-bm {
        when
          "../end-behavior-type = 'End.BM'" {
          description
            "This container is valid only when the user chooses
           End.BM behavior.";
        }
        description
          "Endpoint bound to an SR-MPLS Policy.
         push an MPLS label stack <L1, L2, L3> on the
         received packet and forward the according to
         Lable L1.
         This is an SRv6 instantiation of an SR-MPLS Binding SID.";
        leaf policy-name {
          type string;
          mandatory true;
          description "SRv6 policy name";
        }

        uses multi-paths-mpls;
      }  // container end-bm

      container end-dx6 {
        when
          "../end-behavior-type = 'End.DX6'" {
          description
            "This container is valid only when the user chooses
           End.DX6 behavior.";
        }
        description
          "Endpoint with decapsulation and cross-connect to
         an array of IPv6 adjacencies. Pop the (outer)
         IPv6 header and its extension headers and forward
         to layer-3 adjacency bound to the SID S.
         The End.DX6 used in the L3VPN use-case.";
        uses multi-paths-v6;
      }  // container end-dx6

      container end-dx4 {
        when
          "../end-behavior-type = 'End.DX4'" {
          description
            "This container is valid only when the user chooses
           End.DX4 behavior.";
        }
        description
          "Endpoint with decapsulation and cross-connect to
         an array of IPv4 adjacencies.
         Pop the (outer) IPv6 header and its extension
         header and forward to layer-3 adjacency bound
         to the SID S.
         This would be equivalent to the per-CE VPN
         label in MPLS.";
        uses multi-paths-v4;
      }  // container end-dx4

      container end-dt6 {
        when
          "../end-behavior-type = 'End.DT6'" {
          description
            "This container is valid only when the user chooses
           End.DT6 behavior.";
        }
        description
          "Endpoint with decapsulation and specific IPv6 table
         lookup.
         Pop the (outer) IPv6 header and its extension
         headers.
         Lookup the exposed inner IPv6 DA in IPv6
         table T and forward via the matched table entry.
         End.DT6 function is used in L3VPN use-case.";
        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description "IPv6 table";
        }
      }  // container end-dt6

      container end-dt4 {
        when
          "../end-behavior-type = 'End.DT4'" {
          description
            "This container is valid only when the user chooses
           End.DT4 behavior.";
        }
        description
          "Endpoint with decapsulation and specific
         IPv4 table lookup.
         Pop the (outer) IPv6 header and its extension
         headers.
         Lookup the exposed inner IPv4 DA in IPv4
         table T and forward via the matched table entry.
         This would be equivalent to the per-VRF VPN label
         in MPLS.";
        leaf lookup-table-ipv4 {
          type srv6-types:table-id;
          mandatory true;
          description "IPv4 table";
        }
      }  // container end-dt4

      container end-dt46 {
        when
          "../end-behavior-type = 'End.DT46'" {
          description
            "This container is valid only when the user chooses
           End.DT46 behavior.";
        }
        description
          "Endpoint with decapsulation and specific
         IP table lookup.
         Depending on the protocol type (IPv4 or IPv6)
         of the inner ip packet and the specific VRF name
         forward the packet.
         This would be equivalent to the per-VRF VPN
         label in MPLS.";
        leaf lookup-table-ipv4 {
          type srv6-types:table-id;
          mandatory true;
          description "IPv4 table";
        }

        leaf lookup-table-ipv6 {
          type srv6-types:table-id;
          mandatory true;
          description "IPv6 table";
        }
      }  // container end-dt46

      container end-dx2 {
        when
          "../end-behavior-type = 'End.DX2'" {
          description
            "This container is valid only when the user chooses
           End.DX2 behavior.";
        }
        description
          "This is an Endpoint with decapsulation and Layer-2
         cross-connect to OIF.
         Pop the (outer) IPv6 header and its extension headers.
         Forward the resulting frame via OIF associated to the SID.
         The End.DX2 function is the L2VPN/EVPN VPWS use-case.";
        container path {
          description "Outgoing path";
          leaf l2-interface {
            type if:interface-ref;
            mandatory true;
            description
              "Outgoing L2 interface";
          }
        }  // container path
      }  // container end-dx2

      container end-dx2v {
        when
          "../end-behavior-type = 'End.DX2V'" {
          description
            "This container is valid only when the user chooses
           End.DX2V behavior.";
        }
        description
          "Endpoint with decapsulation and specific VLAN
         L2 table lookup.
         Pop the (outer) IPv6 header and its extension headers.
         Lookup the exposed inner VLANs in L2 table T.
         Forward via the matched table entry.
         The End.DX2V is used for EVPN Flexible cross-connect
         use-cases";
        leaf lookup-table-vlan {
          type srv6-types:table-id;
          mandatory true;
          description
            "VLAN lookup table. There could be multiple
           vlan demux tables on the node, where a DX2V SID
           points to one vlan table";
        }
      }  // container end-dx2v

      container end-dt2u {
        when
          "../end-behavior-type = 'End.DT2U'" {
          description
            "This container is valid only when the user chooses
           End.DT2U behavior.";
        }
        description
          "Endpoint with decapsulation and specific
         unicast L2 MAC table lookup.
         Pop the (outer) IPv6 header and its extension headers.
         Learn the exposed inner MAC SA in L2 MAC table T.
         Lookup the exposed inner MAC DA in L2 MAC table T.
         Forward via the matched T entry else to all L2OIF in T.
         The End.DT2U is used for EVPN Bridging unicast use cases";
        leaf lookup-table-mac {
          type srv6-types:table-id;
          mandatory true;
          description "MAC L2 lookup table";
        }
      }  // container end-dt2u

      container end-dt2m {
        when
          "../end-behavior-type = 'End.DT2M'" {
          description
            "This container is valid only when the user chooses
           End.DT2M behavior.";
        }
        description
          "Endpoint with decapsulation and specific flooding table.
         Pop the (outer) IPv6 header and its extension headers.
         Learn the exposed inner MAC SA in L2 MAC table T.
         Forward on all L2OIF (in the flooding table) excluding the one
         identfied by Arg.FE2.
         The End.DT2M is used for EVPN Bridging BUM use case with
         ESI (Split Horizon) filtering capability.";
        leaf flooding-table {
          type srv6-types:table-id;
          mandatory true;
          description
            "L2 Flooding table (list of OIFs)";
        }

        uses multi-paths-v6-BUM;
      }  // container end-dt2m

      container end-op {
        when
          "../end-behavior-type = 'End.OP'" {
          description
            "This container is valid only when the user chooses
           End.OP behavior.";
        }
        description
          "Endpoint for OAM with punt behavior";
      }  // container end-op

      container end-otp {
        when
          "../end-behavior-type = 'End.OTP'" {
          description
            "This container is valid only when the user chooses
           End.OTP behavior.";
        }
        description
          "Endpoint for OAM with timestamp and punt behavior";
      }  // container end-otp
    }  // grouping srv6-sid-config

    grouping srv6-static-cfg {
      description
        "Grouping configuration and operation for SRv6 sid.";
      list sid {
        key "function";
        description
          "List of locally instantiated SIDs";
        uses srv6-sid-config;
      }  // list sid
    }  // grouping srv6-static-cfg

    augment /rt:routing/srv6:srv6/srv6:locators/srv6:locator {
      description
        "This augments locator leaf within SRv6.";
      container static {
        description "Static SRv6";
        container local-sids {
          description
            "SRv6-static locally instantiated SIDs";
          uses srv6-static-cfg;
        }  // container local-sids
      }  // container static
    }
  }  // module ietf-srv6-static

Summary

  
  
Organization IETF SPRING Working Group
  
Module ietf-srv6-static
Version 2019-10-30
File ietf-srv6-static@2019-10-30.yang
  
Prefix srv6-static
Namespace urn:ietf:params:xml:ns:yang:ietf-srv6-static
Reference
RFC XXXX
  
Cooked /cookedmodules/ietf-srv6-static/2019-10-30
YANG /src/ietf-srv6-static@2019-10-30.yang
XSD /xsd/ietf-srv6-static@2019-10-30.xsd
  
Abstract This YANG module defines the essential elements for the management of Static application for Segment-Routing with IPv6 dataplane...
  
Contact
WG Web:   <http://tools.ietf.org/wg/spring/>
WG List:  <mailto:spring@ietf.org>

Editor:   Kamran Raza
	  <mailto:skraza@cisco.com>

Editor:   Jaganbabu Rajamanickam
	  <maito:jrajaman@cisco.com>

Editor:   Xufeng Liu
	  <mailto:xufeng.liu.ietf@gmail.com>

Editor:   Zhibo Hu
	  <mailto:huzhibo@huawei.com>

Editor:   Iftekhar Hussain
	  <mailto:IHussain@infinera.com>

Editor:   Himanshu Shah
	  <mailto:hshah@ciena.com>

Editor:   Daniel Voyer
	  <mailto:daniel.voyer@bell.ca>

Editor:   Hani Elmalky
	  <mailto:hani.elmalky@ericsson.com>

Editor:   Satoru Matsushima
	  <mailto:satoru.matsushima@gmail.com>

Editor:   Katsuhiro Horiba
	  <mailto:katsuhiro.horiba@g.softbank.co.jp>

Editor:   Ahmed AbdelSalam
	  <mailto:ahmed.abdelsalam@gssi.it>

Description

 
This YANG module defines the essential elements for the
management of Static application for 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).

Groupings

Grouping Objects Abstract
multi-paths-mpls paths Multipath grouping
multi-paths-v4 paths Multipath grouping
multi-paths-v6 paths Multipath grouping
multi-paths-v6-BUM paths Multipath grouping for EVPN bridging BUM use case
path-attrs-mpls interface next-hop weight role backup-path-index MPLS Path properties
path-attrs-v4 interface next-hop table weight role backup-path-index IPv4 Path properties
path-attrs-v6 interface next-hop table weight role backup-path-index IPv6 Path properties
srv6-sid-config function end-behavior-type end end_psp end_usp end_psp_usp end_usd end_psp_usd end_usp_usd end_psp_usp_usd end-t end-t_psp end-t_usp end-t_psp_usp end-t_usd end-t_psp_usd end-t_usp_usd end-t_psp_usp_usd end-x end-x_psp end-x_usp end-x_psp_usp end-x_usd end-x_psp_usd end-x_usp_usd end-x_psp_usp_usd end-b6-insert end-b6-encaps end-bm end-dx6 end-dx4 end-dt6 end-dt4 end-dt46 end-dx2 end-dx2v end-dt2u end-dt2m end-op end-otp Configuration parameters relating to SRv6 sid.
srv6-static-cfg sid Grouping configuration and operation for SRv6 sid.