Tillered Arctic
How-To GuidesService Management

Set Bandwidth Limits

How to configure QoS bandwidth limits on services

How to Set Bandwidth Limits

This guide shows you how to configure bandwidth limits on Arctic services for Quality of Service (QoS) control.

Before You Start

Ensure you have:

  • An existing service or the information to create one
  • Knowledge of the desired bandwidth limit in Mbps

Set Bandwidth During Service Creation

Specify a bandwidth limit when creating a new service:

arctic services create \
  --target-peer TARGET_PEER_ID \
  --bandwidth-limit 1000

The value is in Megabits per second (Mbps). 1000 means 1 Gbps.

Update Bandwidth on Existing Service

Change the bandwidth limit on an existing service:

arctic services update SERVICE_ID --bandwidth-limit 500

Remove Bandwidth Limit

Set the limit to 0 to remove the restriction (unlimited):

arctic services update SERVICE_ID --bandwidth-limit 0

Verify Current Bandwidth

Check the current bandwidth setting:

arctic services get SERVICE_ID

Look for the bandwidth_limit_mbps field in the output.

Common Bandwidth Values

Use CaseBandwidthValue
Low priority100 Mbps100
Standard1 Gbps1000
High throughput10 Gbps10000
UnlimitedNo limit0

How Bandwidth Limiting Works

Arctic uses traffic shaping through Pegasus (the TProxy service) to enforce bandwidth limits:

  1. Traffic Classification: Packets are marked with fwmarks for QoS
  2. Token Bucket: Traffic shaping uses a token bucket algorithm
  3. Fair Queuing: Multiple flows share the bandwidth fairly

Bandwidth limits apply to traffic flowing through the service. They do not affect traffic that does not match the service's routes.

Troubleshooting

Bandwidth Not Being Enforced

If traffic exceeds the configured limit:

  1. Trigger a config sync: arctic cluster sync
  2. Verify Pegasus config: cat /opt/tillered/pegasus/config.json
  3. Check Pegasus logs: journalctl | grep pegasus

Performance Lower Than Expected

If throughput is below the configured limit:

  1. Check for network bottlenecks elsewhere in the path
  2. Verify the underlying network can support the desired bandwidth
  3. Consider TCP tuning for high-bandwidth scenarios