Skip to content

Forwarding Class#

QoS → FCForwarding Classes

A brief introduction to QoS

Quality of Service (QoS) is a set of technologies and mechanisms used to manage traffic prioritization, often but not exclusively used in scenarios of network congestion. A full explanation of QoS is beyond the scope of this documentation, as the concepts are often as complex as the implementation of them on various network operating systems, along with chip-specific capabilities and limitations.

To prioritize one traffic stream over another, the router must assign a priority to each packet as it ingresses on an interface. Several options are available:

  • Based on the IP header: source IP, destination IP, source port, destination port, ...
  • Based on the Dot1p priority bits of the ethernet frame
  • Based on the DSCP priority bits of an IP header

These are called classifiers: based on the classifier criteria, the router attaches an internal 'tag' to the packet that determines how the packet is treated while it propagates through the box. This 'tag' is called a forwarding class.

Forwarding classes

Forwarding classes are only locally significant, meaning they are not added to the packet headers. Ingressing traffic is classified based on the classifiers in an IngressPolicy.

To influence the packet's priority at the next hop, a rewrite policy must be defined in an EgressPolicy, which translates the internal forwarding class to the priority bits of the IP / MAC header of the egressing packet.

The creation of a ForwardingClass resource does not result in configuration being pushed to the nodes. It is configured on the nodes by creating a PolicyAttachment or PolicyDeployment that specifies an IngressPolicy or EgressPolicy that references the ForwardingClass.

Forwarding class naming conventions

The naming convention of a forwarding class matters. See section "OS-specific implementation notes" for more information.

OS-specific implementation notes#

EDA comes pre-packaged with a number of ForwardingClass resources. Not all resources can be deployed on every operating system, though.

Nokia SR Linux#

The name of a forwarding class can be chosen freely, although there are reserved names (fc0, fc1, ... ) already provisioned in EDA. By default, these are linked to their respective (unicast-0, unicast-1, ...) Queues, which can be overwritten. For more information, refer to the SR Linux documentation.

Nokia SR OS#

The following forwarding classes are supported on SR OS:

be - Best effort
l2 - Low 2 (best effort)
af - Assured forwarding (assured)
l1 - Low 1 (assured)
h2 - High 2 (high priority)
ef - Expedited forwarding (high priority)
h1 - High 1 (high priority)
nc - Network control (high priority)

Dependencies#

The ForwardingClass resource has no dependencies on other EDA resources.

Referenced resources#

The ForwardingClass resource does not reference any other EDA resources.

Examples#

apiVersion: qos.eda.nokia.com/v2
kind: ForwardingClass
metadata:
  labels:
    eda.nokia.com/bootstrap: 'true'
  name: fc4
  namespace: eda
spec: {}
cat << 'EOF' | kubectl apply -f -
apiVersion: qos.eda.nokia.com/v2
kind: ForwardingClass
metadata:
  labels:
    eda.nokia.com/bootstrap: 'true'
  name: fc4
  namespace: eda
spec: {}
EOF

Custom Resource Definition#

To browse the Custom Resource Definition go to crd.eda.dev.

ForwardingClass

qos.eda.nokia.com / v2

SPEC

The ForwaringClass is used as a placeholder for to allow multiple other resources to reference the same forwarding class.

STATUS

ForwardingClassStatus defines the observed state of ForwardingClass