Charging Architecture¶
Overview¶
The Charging architecture in TelcoAPI implements both online and offline charging according to 3GPP standards. This document outlines the charging system components and their interactions.
Components¶
OCS (Online Charging System)¶
- Real-time credit control
- Account balance management
- Rating and charging
- Session management
OFCS (Offline Charging System)¶
- CDR generation and processing
- Batch processing
- Post-processing and aggregation
- Billing system integration
CTF (Charging Trigger Function)¶
- Detects chargeable events
- Generates charging information
- Interfaces with OCS/OFCS
Interfaces¶
Ro Interface¶
- Online charging interface
- Credit control requests/answers
- Real-time balance updates
Rf Interface¶
- Offline charging interface
- CDR transfer
- Accounting records
Implementation¶
interface ChargingSession {
id: string;
subscriberId: string;
sessionType: 'VOICE' | 'DATA' | 'SMS' | 'MMS';
ratingGroup: number;
serviceIdentifier: number;
quotaType: 'TIME' | 'VOLUME' | 'EVENT';
grantedUnits: number;
usedUnits: number;
timestamp: string;
status: 'ACTIVE' | 'TERMINATED' | 'SUSPENDED';
}
interface CDR {
id: string;
recordType: string;
subscriberId: string;
chargingId: string;
nodeId: string;
recordOpeningTime: string;
recordClosingTime: string;
duration: number;
causeForRecordClosing: string;
diagnostics?: string;
serviceSpecificInfo?: Record<string, unknown>;
recordSequenceNumber: number;
localSequenceNumber: number;
}
Charging Flows¶
Online Charging¶
- Initial credit request
- Quota reservation
- Usage monitoring
- Final reporting
Offline Charging¶
- CDR generation
- Intermediate storage
- CDR aggregation
- File transfer to billing
Rating and Tariff¶
interface RatingRule {
id: string;
ratingGroup: number;
serviceIdentifier: number;
tariffType: 'PEAK' | 'OFF_PEAK' | 'SPECIAL';
unitPrice: number;
currency: string;
validFrom: string;
validTo: string;
priority: number;
}
Error Handling¶
enum ChargingError {
QUOTA_EXHAUSTED = 'QUOTA_EXHAUSTED',
INVALID_RATING = 'INVALID_RATING',
SYSTEM_ERROR = 'SYSTEM_ERROR',
ACCOUNT_DISABLED = 'ACCOUNT_DISABLED'
}
interface ChargingErrorResponse {
error: ChargingError;
message: string;
sessionId?: string;
timestamp: string;
remainingBalance?: number;
}
Monitoring¶
Key metrics to monitor: - Credit control success rate - CDR generation rate - Processing latency - Error rates by type - System throughput
Best Practices¶
- Session Management
- Implement session recovery
- Handle timeouts gracefully
-
Monitor session state
-
CDR Handling
- Ensure CDR integrity
- Implement retry mechanisms
-
Monitor file transfers
-
Performance
- Cache rating data
- Optimize database queries
- Monitor system resources
References¶
- 3GPP TS 32.240: Charging architecture and principles
- 3GPP TS 32.299: Diameter charging applications
- 3GPP TS 32.297: Charging Data Record (CDR) file format and transfer