Set DSCP for workload's egress traffic leaving cluster#10718
Merged
mazdakn merged 18 commits intoprojectcalico:masterfrom Aug 20, 2025
Merged
Set DSCP for workload's egress traffic leaving cluster#10718mazdakn merged 18 commits intoprojectcalico:masterfrom
mazdakn merged 18 commits intoprojectcalico:masterfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR adds support for setting DSCP (Differentiated Services Code Point) values on egress traffic in Calico workload endpoints through QoS controls. The implementation allows users to specify DSCP values either through named constants (like "EF", "AF11") or numeric values via Kubernetes annotations.
Key changes:
- Introduces a new DSCP type that supports both string and numeric values
- Adds annotation support for configuring DSCP on workload endpoints
- Updates protobuf definitions and conversion logic to handle DSCP in QoS controls
Reviewed Changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
api/pkg/lib/numorstring/dscp.go |
New DSCP type implementation with predefined constants and string/numeric support |
libcalico-go/lib/backend/k8s/conversion/constants.go |
Adds new annotation constant for DSCP configuration |
libcalico-go/lib/backend/k8s/conversion/workload_endpoint_default.go |
Implements annotation parsing for DSCP values |
libcalico-go/lib/apis/v3/workloadendpoint.go |
Adds DSCP field to QoSControls struct |
felix/proto/felixbackend.proto |
Updates protobuf definition to include DSCP field |
felix/proto/felixbackend.pb.go |
Generated protobuf code with DSCP support |
felix/calc/event_sequencer.go |
Adds DSCP conversion in model-to-proto transformation |
3 tasks
mazdakn
commented
Jul 30, 2025
mazdakn
commented
Jul 30, 2025
mazdakn
commented
Aug 13, 2025
mazdakn
commented
Aug 13, 2025
mazdakn
commented
Aug 15, 2025
caseydavenport
approved these changes
Aug 20, 2025
3 tasks
This was referenced Sep 2, 2025
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Set DSCP for egress traffic leaving cluster when
qos.projectcalico.org/dscpannotation is set on a workload endpoint, i.e. pod.This PR includes:
DSCPthat holds numeric values between 0-63 and common string values.QosPolicy.QosPolicyfor workload endpoints.QosPolicy.The follow up PRs will cover:
Related issues/PRs
Todos
Release Note
Reminder for the reviewer
Make sure that this PR has the correct labels and milestone set.
Every PR needs one
docs-*label.docs-pr-required: This change requires a change to the documentation that has not been completed yet.docs-completed: This change has all necessary documentation completed.docs-not-required: This change has no user-facing impact and requires no docs.Every PR needs one
release-note-*label.release-note-required: This PR has user-facing changes. Most PRs should have this label.release-note-not-required: This PR has no user-facing changes.Other optional labels:
cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.