QoS Management¶
Overview¶
Quality of Service (QoS) management is a critical aspect of policy control in mobile networks. This document describes the QoS management capabilities and implementation in TelcoAPI.
QoS Parameters¶
QCI (QoS Class Identifier)¶
- Standardized characteristics
- Resource type (GBR/Non-GBR)
- Priority level
- Packet delay budget
- Packet error loss rate
GBR (Guaranteed Bit Rate)¶
- Minimum guaranteed bandwidth
- Uplink and downlink rates
- Service class requirements
MBR (Maximum Bit Rate)¶
- Maximum allowed bandwidth
- Rate limiting thresholds
- Burst size configuration
Implementation¶
interface QoSProfile {
id: string;
name: string;
qci: number;
arp: {
priorityLevel: number;
preemptionCapability: boolean;
preemptionVulnerability: boolean;
};
gbr?: {
uplink: number;
downlink: number;
};
mbr?: {
uplink: number;
downlink: number;
};
active: boolean;
}
interface QoSRule {
id: string;
profileId: string;
flowInformation: {
flowDescription: string;
direction: 'UPLINK' | 'DOWNLINK' | 'BIDIRECTIONAL';
packetFilters?: string[];
}[];
precedence: number;
gates: {
uplink: 'OPEN' | 'CLOSED';
downlink: 'OPEN' | 'CLOSED';
};
}
QoS Enforcement¶
Traffic Detection¶
- Deep packet inspection
- Application detection
- Flow mapping
Resource Management¶
- Admission control
- Bandwidth allocation
- Congestion management
Monitoring¶
- QoS metrics collection
- Performance monitoring
- Violation detection
Error Handling¶
enum QoSError {
RESOURCE_UNAVAILABLE = 'RESOURCE_UNAVAILABLE',
INVALID_PARAMETERS = 'INVALID_PARAMETERS',
ENFORCEMENT_FAILED = 'ENFORCEMENT_FAILED',
CONGESTION = 'CONGESTION'
}
interface QoSErrorResponse {
error: QoSError;
message: string;
profileId?: string;
ruleId?: string;
timestamp: string;
metrics?: {
currentLoad: number;
availableBandwidth: number;
activeFlows: number;
};
}
QCI to Service Mapping¶
QCI | Resource Type | Priority | Example Services |
---|---|---|---|
1 | GBR | 2 | VoIP |
2 | GBR | 4 | Video Calls |
3 | GBR | 3 | Real-time Gaming |
4 | GBR | 5 | Buffered Video |
5 | Non-GBR | 1 | IMS Signaling |
6 | Non-GBR | 6 | Live Streaming |
7 | Non-GBR | 7 | Web Browsing |
8 | Non-GBR | 8 | File Downloads |
9 | Non-GBR | 9 | Background Data |
Best Practices¶
- Profile Management
- Define clear QoS profiles
- Regular profile review
-
Monitor profile usage
-
Rule Configuration
- Set appropriate precedence
- Define specific flow descriptions
-
Regular rule optimization
-
Performance
- Monitor resource utilization
- Handle congestion gracefully
- Implement fallback mechanisms
Monitoring¶
Key metrics to track: - QoS rule enforcement success rate - Bandwidth utilization - Latency and jitter - Packet loss rate - Number of QoS violations
Implementation Example¶
class QoSManager {
async applyQoSProfile(sessionId: string, profile: QoSProfile): Promise<void> {
// Validate profile
this.validateProfile(profile);
// Check resource availability
await this.checkResources(profile);
// Apply QoS parameters
await this.enforceQoS(sessionId, profile);
// Start monitoring
await this.startMonitoring(sessionId, profile);
}
async modifyQoS(sessionId: string, modifications: Partial<QoSProfile>): Promise<void> {
// Get current profile
const currentProfile = await this.getProfile(sessionId);
// Apply modifications
const updatedProfile = { ...currentProfile, ...modifications };
// Validate and apply changes
await this.applyQoSProfile(sessionId, updatedProfile);
}
async removeQoS(sessionId: string): Promise<void> {
// Remove QoS enforcement
await this.removeEnforcement(sessionId);
// Stop monitoring
await this.stopMonitoring(sessionId);
// Clean up resources
await this.cleanupResources(sessionId);
}
}
References¶
- 3GPP TS 23.203: Policy and charging control architecture
- 3GPP TS 29.212: Policy and Charging Control over Gx reference point
- 3GPP TS 29.214: Policy and Charging Control over Rx reference point
- 3GPP TS 23.401: GPRS enhancements for E-UTRAN access