netconfcentral logo


  module openconfig-policy-forwarding {

    yang-version 1;


    prefix oc-pf;

    import openconfig-extensions {
      prefix oc-ext;

    include openconfig-pf-forwarding-policies;
    include openconfig-pf-path-groups;
    include openconfig-pf-interfaces;

    organization "OpenConfig working group";

      "OpenConfig working group";

      "This module defines configuration and operational state data
    relating to policy-based forwarding. Policy-based forwarding is
    utilised when a system chooses how to forward packets (including
    applying data-plane operations such as encapsulation or
    decapsulation) based on policies other than destination L2 or L3
    header. Typically, systems may implement:

     - IP policy-based routing, where routing may be done based on the
       source plus destination of an IP packet; information within the
       L4 header; or some combination of both.
     - Encapsulation or decapsulation based on certain policy
       information - for example, matching particular IP destinations
       and decapsulating GRE headers.
     - Class-based selection of egress routes - such as class-based
       selection of an egress MPLS path.

    The policies that are defined in this model are applied to a
    particular ingress context of a network element (e.g., interface)
    and are defined to apply following other interface policy such as
    QoS classification and access control lists.

    This module defines:

     - policy-forwarding
    |--- policies
    |    |-- policy
    |        |-- [match criteria]    How packets are defined to
    |        |                       match policy.
    |        |-- [forwarding-action] How packets matching should
    |                                 be forwarded.
    |--- interfaces
    |    |-- interfaces
    |        | -- apply-forwarding-policy  Forwarding policy to
    |                                      used on the interface.
    |--- path-selection-groups
         |-- path-selection-group     A group of forwarding resources
                                      that are grouped for purposes
                                      of next-hop selection.

    A forwarding-policy specifies the match criteria that it intends
    to use to determine the packets that it reroutes - this may
    consist of a number of criteria, such as DSCP. The action of the
    policy results in a forwarding action being applied to matching
    packets. For example, decapsulating the packet from a GRE header.
    In order to enact the policy based on particular interfaces - the
    forwarding-policy is applied to an interface via referencing it
    within an 'apply-forwarding-policy' statement associated with an

    In some cases (e.g., Class-Based Tunnel Selection) the forwarding
    action does not resolve to a single egress action, and rather
    normal forwarding rules are to be applied but considering a subset
    of forwarding resources. In these cases, a path-selection-group
    can be created, referencing the subset of forwarding paths that
    should be used for the egress selection. In the case that a subset
    of MPLS LSPs are eligible for, say, DSCP 46 marked packets, a
    path-selection-group is created, referencing the subset of LSPs.
    The forwarding action of the corresponding policy is set to
    PATH_GROUP and references the configured group of LSPs.";

    revision "2017-06-21" {
        "Amend policy forwarding model based on ACL changes.";


    revision "2017-02-28" {
        "Initial public release of policy forwarding.";


    revision "2016-11-08" {
      description "Initial revision.";


    oc-ext:openconfig-version "0.2.0";

    grouping policy-forwarding-top {
        "Top-level grouping for Policy Forwarding";
      container policy-forwarding {
          "Configuration and operational state relating to policy-forwarding within
        a network instance.";
        uses pf-forwarding-policy-structural;

        uses pf-interfaces-structural;

        uses pf-path-groups-structural;
      }  // container policy-forwarding
    }  // grouping policy-forwarding-top
  }  // module openconfig-policy-forwarding