Skip to main content

Overview

Network QoS (Quality of Service) policies enforce traffic controls at the virtual switch level on each hypervisor. Policies apply bandwidth limits, burst allowances, DSCP markings, and minimum bandwidth guarantees to individual ports or entire networks. Controls are enforced by the L2 agent — no guest OS configuration is required. Administrators create and optionally share policies; project users apply them to their ports and networks.
Administrator Access Required — This operation requires the admin role. Contact your Xloud administrator if you do not have sufficient permissions.
Prerequisites
  • Admin credentials sourced from admin-openrc.sh
  • QoS service plugin enabled in your cluster (configured via XDeploy under Networking → Plugins)
  • Open vSwitch or Linux Bridge L2 agent running on all compute nodes

QoS Rule Types

Xloud Networking supports four QoS rule types. Multiple rules of different types can be combined within a single policy.
Rule TypeCLI --typeDirectionHardware RequiredDescription
Bandwidth Limitbandwidth-limitEgress / IngressNoCap maximum throughput with optional burst allowance
DSCP Markingdscp-markingEgress onlyNoMark outgoing packets with a DSCP value for QoS-aware routing
Minimum Bandwidthminimum-bandwidthEgress / IngressYes (SR-IOV)Guarantee a minimum throughput floor
Minimum Packet Rateminimum-packet-rateEgress / IngressYes (SR-IOV)Guarantee a minimum packet-per-second rate
Minimum bandwidth and minimum packet rate guarantees require SR-IOV hardware and a compatible network backend. Standard OVS-based ports support bandwidth limits and DSCP marking only.

Create a QoS Policy

Navigate to QoS Policies

Log in to the Xloud Dashboard (https://connect.<your-domain>) as an administrator and navigate to Admin → Network → QoS Policies. Click Create Policy.

Define the policy

FieldValueDescription
Namee.g., 10mbps-limitDescriptive label for the policy
SharedEnabledMakes the policy available to all projects
DefaultOptionalApplies this policy to all new ports by default

Add a bandwidth limit rule

Open the newly created policy and click Add Bandwidth Limit Rule:
FieldValueDescription
Max Kbps10240Maximum sustained throughput (10 Mbps)
Max Burst Kbps20480Allowed burst above the limit (20 Mbps)
DirectionEgressTraffic direction to limit
Click Save to activate the rule.

Apply to a port or network

To apply to a specific port: navigate to Admin → Network → Ports, select the port, click Edit Port, and set the QoS Policy field.To apply to an entire network: navigate to Admin → Network → Networks, select the network, click Edit Network, and set the QoS Policy field.
Applying a QoS policy to a network sets a default for all new ports on that network. Existing ports are not retroactively updated.

DSCP Marking

DSCP (Differentiated Services Code Point) marking tags outgoing packets so that upstream routers and switches can prioritize traffic flows. This is essential for real-time workloads such as VoIP, video conferencing, and database replication traffic.

Open a QoS policy

Navigate to Admin → Network → QoS Policies and open an existing policy or create a new one.

Add DSCP marking rule

Click Add DSCP Marking Rule and set the DSCP value:
Traffic ClassDSCP ValueUse Case
Best Effort (BE)0Default traffic
Assured Forwarding 1110Standard business traffic
Assured Forwarding 2118Priority business traffic
Expedited Forwarding46VoIP, real-time traffic
Class Selector 324Database / transactional
Click Save. The rule applies immediately to new packet flows on assigned ports.

Guaranteed Minimum Bandwidth

Minimum bandwidth rules provide a throughput floor — a guarantee that the port will always receive at least the specified bandwidth even under network congestion. This requires SR-IOV hardware and a compatible network backend.
Minimum bandwidth guarantees are only supported on SR-IOV virtual functions (VFs) with a compatible hardware NIC. Standard OVS ports do not enforce minimum bandwidth floors — only maximum limits.
Create minimum bandwidth policy for guaranteed throughput
openstack network qos policy create guaranteed-1gbps --share
Add 1 Gbps minimum bandwidth guarantee (egress)
openstack network qos rule create guaranteed-1gbps \
  --type minimum-bandwidth \
  --min-kbps 1048576 \
  --egress
Apply to an SR-IOV port
openstack port set <sriov-port-id> --qos-policy guaranteed-1gbps

Manage QoS Policies

List all QoS policies
openstack network qos policy list
Show policy details
openstack network qos policy show 10mbps-limit
List rules in a policy
openstack network qos rule list 10mbps-limit

Per-Port vs. Per-Network QoS

ScopeApplicationUse Case
Per-portDirect assignment to a specific portGranular control per instance NIC — ideal for mixed workload environments
Per-networkApplied to a network; inherited by new portsConsistent SLA enforcement across all instances on a tenant network
CombinedNetwork policy + port overrideSet a default at network level; override for specific ports that need exceptions
Apply QoS at the network level for consistent defaults, then override individual ports for exceptions (e.g., a database port that needs a higher limit than the general application tier).

Validation

Confirm QoS enforcement is active after applying a policy:
Navigate to Admin → Network → Ports and select the port. The QoS Policy field should display the assigned policy name. Navigate to the instance and run a bandwidth test from inside the guest to confirm enforcement.

Best Practices

Tiered Policy Names

Create named tiers — bronze-10mbps, silver-100mbps, gold-1gbps — and share them across projects for consistent, predictable service levels.

Apply at Network Level

Apply QoS to networks for automatic inheritance. Override at the port level only for exceptions that need different treatment from the network default.

Burst Sizing

Set burst to 2× the sustained limit. Short traffic spikes are absorbed by the burst allowance without impacting the sustained throughput commitment.

Monitor with XIMP

Use Xloud XIMP to track port-level throughput in real time and confirm QoS policies are enforcing expected limits under production load.

Troubleshooting

Cause: The QoS service plugin is not enabled in the Networking configuration.Resolution: In XDeploy, navigate to Networking → Plugins and enable the QoS plugin. Redeploy the networking service:
Redeploy networking service
xavs-ansible deploy -t neutron
Restart the L2 agent on all compute nodes after the plugin is enabled.
Cause: The L2 agent on the compute node hosting the instance may not have the QoS extension loaded.Resolution: Verify the agent has the qos extension active:
Check L2 agent capabilities
openstack network agent show <agent-id> -c configurations
Look for qos in the extensions list. If absent, restart the L2 agent on the affected compute node.
Cause: The policy is still assigned to one or more ports or networks.Resolution: Find and clear all assignments:
Find ports using the policy
openstack port list --long -c ID -c "QoS Policy ID"
Remove assignments from each port, then retry the delete.
Cause: Minimum bandwidth rules require SR-IOV hardware and a compatible backend (OVS-DPDK or SR-IOV). Standard OVS does not support minimum bandwidth enforcement.Resolution: Use bandwidth limit rules for maximum throughput control on standard OVS ports. Deploy SR-IOV ports for guaranteed minimum bandwidth requirements.

Next Steps

Network Quotas

Limit the number of networking resources per project alongside QoS controls

Provider Networks

Configure the physical network that QoS policies apply to at the hypervisor level

Service Architecture

Understand how L2 agents enforce QoS rules at the virtual switch level

Admin Troubleshooting

Diagnose QoS enforcement issues and L2 agent configuration problems