Custom Overhead Profiles
Creating custom CAKE overhead profiles for accurate traffic shaping.
Overview
CAKE uses overhead values to accurately calculate transmission time. Different encapsulations require different overhead values.
Overhead Calculation
Transmission time = (Packet Size + Overhead) / Bandwidth
Example:
- Packet: 1500 bytes
- Overhead: 34 bytes
- Bandwidth: 100Mbit
- Transmission Time = (1500 + 34) / 100Mbit = 122.72 µs
Built-in Profiles
PPPoE over Ethernet
pppoe_ethernet:
overhead: 34
mpu: 64
Breakdown:
- Ethernet: 14 bytes
- PPPoE: 6 bytes
- PPP: 2 bytes
- IP: 20 bytes
- FCS: 4 bytes
- Total: 46 bytes (rounded to 34)
IPoE over Ethernet
ipoe_ethernet:
overhead: 22
mpu: 64
Breakdown:
- Ethernet: 14 bytes
- VLAN: 4 bytes
- FCS: 4 bytes
- Total: 22 bytes
PPPoE over QinQ
pppoe_qinq:
overhead: 38
mpu: 64
Breakdown:
- Ethernet: 14 bytes
- Outer VLAN: 4 bytes
- Inner VLAN: 4 bytes
- PPPoE: 6 bytes
- PPP: 2 bytes
- IP: 20 bytes
- FCS: 4 bytes
- Total: 54 bytes (rounded to 38)
Custom Profiles
Define Custom Profile
qos:
overhead_profiles:
custom_profile:
overhead: 50
mpu: 64
Assign to Subscriber
Via RADIUS:
Athena-Overhead-Profile = "custom_profile"
Calculating Overhead
Step 1: Identify Encapsulation
What layers are between subscriber and upstream?
Subscriber → Ethernet → VLAN → PPPoE → IP → Upstream
Step 2: Sum Layer Sizes
| Layer | Size |
|---|---|
| Ethernet | 14 bytes |
| VLAN (per tag) | 4 bytes |
| PPPoE | 6 bytes |
| PPP | 2 bytes |
| IP | 20 bytes |
| FCS | 4 bytes |
Step 3: Calculate Total
14 + 4 + 6 + 2 + 20 + 4 = 50 bytes
Step 4: Round Down
Use 50 (or round to nearest 2: 50).
Testing Overhead
Measure Actual Rate
Use iperf to measure actual throughput:
# From subscriber
iperf -c <bng-ip> -t 10 -R
Compare to Expected
If actual rate is consistently lower than configured:
- Increase overhead
- Re-test
If actual rate is consistently higher:
- Decrease overhead
- Re-test
Example
Configured: 100Mbit with overhead 34 Actual: 95Mbit
Solution: Increase overhead to 40 and re-test.
Advanced Profiles
Satellite Link
High latency, high overhead:
satellite:
overhead: 100
mpu: 256
Mobile Network
Variable overhead:
mobile:
overhead: 60
mpu: 128
Wireless
High overhead due to retransmissions:
wireless:
overhead: 80
mpu: 128
Monitoring
View Overhead Profile
abng> show configuration | match overhead_profiles
Check CAKE Stats
tc -s qdisc show dev ppp0
Monitor Rate Accuracy
iperf -c <subscriber-ip> -t 10
Best Practices
- Measure First — Test actual overhead before deploying
- Document — Document custom profiles and reasoning
- Test — Test with
iperfto verify accuracy - Monitor — Monitor CAKE stats for congestion
- Adjust — Fine-tune overhead based on actual measurements
Next Steps
- BGP/OSPF Integration — Routing integration
- RADIUS CoA — Dynamic rate changes