Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add policy-forwarding network-instance attachment point #1224

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions release/models/policy-forwarding/.spec.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
- name: openconfig-network-instance-srte-policy
- name: openconfig-policy-forwarding
docs:
- yang/network-instance/openconfig-network-instance-types.yang
- yang/network-instance/openconfig-network-instance.yang
- yang/policy-forwarding/openconfig-pf-srte.yang
- yang/policy-forwarding/openconfig-policy-forwarding.yang
build:
- yang/network-instance/openconfig-network-instance.yang
- yang/policy-forwarding/openconfig-pf-srte.yang
- yang/policy-forwarding/openconfig-policy-forwarding.yang
run-ci: true
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,13 @@ submodule openconfig-pf-forwarding-policies {
"This submodule contains configuration and operational state
relating to the definition of policy-forwarding policies.";

oc-ext:openconfig-version "0.6.1";
oc-ext:openconfig-version "0.8.0";

revision "2024-11-26" {
description
"Add network-instance as an attachment point.";
reference "0.8.0";
}

revision "2023-04-25" {
description
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@ submodule openconfig-pf-interfaces {
"This submodule contains groupings related to the association
between interfaces and policy forwarding rules.";

oc-ext:openconfig-version "0.6.1";
oc-ext:openconfig-version "0.8.0";

revision "2024-11-26" {
description
"Add network-instance as an attachment point.";
reference "0.8.0";
}

revision "2023-04-25" {
description
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
submodule openconfig-pf-network-instances {
belongs-to openconfig-policy-forwarding {
prefix "oc-pf";
}

import openconfig-extensions {
prefix "oc-ext";
}
include openconfig-pf-forwarding-policies;

organization
"OpenConfig working group";

contact
"OpenConfig working group
www.openconfig.net";

description
"This submodule contains groupings to attach
a policy-forwarding policy to one or more network-instances.

When attached to a network-instance, the policy-forwarding rules
should be evaluated against packets in the specified
network-instances.";
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar comment to what I left in the previous PR #1150: what are the "packets in the specified network-instances"?

  • does that mean that the policy applied to all interfaces associated with the network-instance on ingress (e.g. this change introduces only a new way of configuring the existing functionality), or
  • are there any additional expectations w.r.t what packets should be matched (e.g packets redirected from another network-instance via a policy)?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The operational use case motivating this PR is for packets ingress to the device which arrive on interfaces (including virtual interfaces) which are mapped to a network-instance.

I am not aware of an operational use case that we have for packets re-directed from another network-instance.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Policy forwarding entries are already defined within a network instance, so what does the enclosing network instance mean?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The operational use case motivating this PR is for packets ingress to the device which arrive on interfaces (including virtual interfaces) which are mapped to a network-instance.

Thus, in terms of functionality, this configuration will be fully equivalent to applying a policy to all interfaces associated with the network-instance? We just adding a "simpler" way to configure this?

Can this be explicitly stated in the description? Thanks

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that is correct. I will make this explicit in the description

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Policy forwarding entries are already defined within a network instance, so what does the enclosing network instance mean?

It is true, but without any "apply-policy" configuration, it is ambiguous where the policy is applied? Further, since OC has a way to apply-policy to interfaces, if none are specified, what should the behavior be?

I'd prefer an explicit leaf for this.

I will change the name/description from a leaf-ref to network-instance instead to a boolean like 'all-interfaces'. In our use case, we only want to apply the policy to the same network-instance the policy is defined in, and not some different network-instance.


oc-ext:openconfig-version "0.8.0";

revision "2024-11-26" {
description
"Add network-instance as an attachment point.";
reference
"0.8.0";
}

grouping pf-network-instances-structural {
description
"Structural grouping for network-instances to forwarding policy
bindings within the policy-forwarding model.";

container network-instances {
description
"Configuration and operational state relating policy
forwarding on interfaces.";

list network-instance {
key "name";

description
"Configuration and operationals state relating to the
relationship between network-instances and policy-based
forwarding rules.";

leaf name {
type leafref {
path "../config/name";
}
description
"A reference to the name of the network-instance
being referenced by the policy.";
}

container config {
description
"Configuration parameters relating to a network-instance to
policy forwarding rule binding.";

uses pf-network-instance-config;
}

container state {
config false;
description
"Operational state parameters relating to a network-instance to
policy forwarding rule binding.";

uses pf-network-instance-config;
}
}
}
}

grouping pf-network-instance-config {
description
"Configuration parameters relating to an interface to policy
forwarding rule binding.";

leaf name {
type leafref {
path "/network-instances/network-instance/" +
"config/name";
// path "/oc-netinst:network-instances/oc-netinst:network-instance/" +
// "oc-netinst:config/oc-netinst:name";
}
description
"A unique identifier for the network-instance.";
}

leaf apply-forwarding-policy {
type leafref {
// We are at /network-instances/network-instance/
// policy-forwarding/network-instances/network-instance/config/
// apply-forwarding-policy
path "../../../../policies/policy/config/policy-id";
}
description
"The policy to be applied on the network-instance. Packets ingress
on the referenced interface should be compared to the match
criteria within the specified policy, and in the case that
these criteria are met, the forwarding actions specified
applied. These policies should be applied following quality of
service classification, and ACL actions if such entities are
referenced by the corresponding interface.";
}
Comment on lines +105 to +113
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This description still talks about the "referenced interface".


leaf apply-vrf-selection-policy {
type leafref {
// We are at /network-instances/network-instance/
// policy-forwarding/network-instances/network-instance/config/
// apply-vrf-selection-policy
path "../../../../policies/policy/config/policy-id";
}
description
"Apply the specific VRF selection policy on the network-instance.

The referenced policy MUST be of the type VRF_SELECTION_POLICY.
The VRF selection policy may coexist with a policy-forwarding policy.

The policy specified in this leaf is used to specifically choose the
L3VRF network instance that is used for specific input criteria of
packets.";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,13 @@ submodule openconfig-pf-path-groups {
forwarding entities together to be used as policy forwarding
targets.";

oc-ext:openconfig-version "0.6.1";
oc-ext:openconfig-version "0.8.0";

revision "2024-11-26" {
description
"Add network-instance as an attachment point.";
reference "0.8.0";
}

revision "2023-04-25" {
description
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module openconfig-policy-forwarding {
include openconfig-pf-forwarding-policies;
include openconfig-pf-path-groups;
include openconfig-pf-interfaces;
include openconfig-pf-network-instances;

organization
"OpenConfig working group";
Expand Down Expand Up @@ -62,11 +63,14 @@ module openconfig-policy-forwarding {

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
consist of a number of criteria, such as DSCP. The match criteria
is specified as rules. If no rules are specified, then the policy
will match all packets.

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
interface.

Expand All @@ -81,7 +85,19 @@ module openconfig-policy-forwarding {
The forwarding action of the corresponding policy is set to
PATH_GROUP and references the configured group of LSPs.";

oc-ext:openconfig-version "0.6.1";
oc-ext:openconfig-version "0.8.0";

revision "2024-11-26" {
description
"Add network-instance as an attachment point.";
reference "0.8.0";
}

revision "2024-11-14" {
description
"Clarify that if no rules are present, no packets will be matched.";
reference "0.7.0";
}

revision "2023-04-25" {
description
Expand Down Expand Up @@ -155,6 +171,7 @@ module openconfig-policy-forwarding {

uses pf-forwarding-policy-structural;
uses pf-interfaces-structural;
uses pf-network-instances-structural;
uses pf-path-groups-structural;
}
}
Expand Down
Loading