real-time charging for opensips 2.1 using...
TRANSCRIPT
Real-time charging for OpenSIPS 2.1 using CGRateS
Dan Christian [email protected]
OpenSIPS Summit Amsterdam, May 2015
Our Background
Located in Bavaria/Germany, over 8 years of experience with architecting server side solutions in VoIP environment Platform implementations covering both wholesale and retail business categories
Responsibly understanding real-time processing constrains and the seriousness of live system outages
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
About CGRateSCharging/Billing engine Plug-able into existing billing infrastructureAccommodate new components into ISP/ITSP network (eg: add new VoIP switch, SMS Service, Data stream)
Modular architectureEasy to enhance by rewriting specific componentsJSON/HTTP/GOB RPC API
Performance OrientedBuilt-in transactional cache system (data ageing, live counters)Asynchronous processing with micro-threads
Feature-richMulti-tenancy, derived charging, account bundles, LCR, CDRStats, rates history, etc
Test driven developmentAprox. 900 tests as part of the build system
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
Actively maintained*stats provided by openhub.net
About CGRateS (2)
Fast and … very fast
About CGRateS (3)
CGRateS subsystems
RATING
Highly configurable ratingConnect fees, rate units, rate increments, rates grouping, various rounding methods, configurable decimals in costs, maximum cost per destination with hit strategy
Performance orientedFully cachedAsynchronous processing
Rating profile scheduling
Derived ChargingReseller/distributors chaining or inbound/outbound traffic charging
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
RATING (2)
Multiple TypeOfRecord support (eg: *voice, *data, *sms)
Multiple Category filters for same TOR(eg: calls, premium_calls, inbound_calls)
Multiple rating subjects with fallback(useful for example with roaming CDRs)
Rating Aliases
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
Git powered History Server
ACCOUNTING
Prepaid, Postpaid, Pseudo-prepaid controller
Account Monitors through ActionTriggersBalance Monitors (min/max)Counters Monitors (min/max) – eg: Usage per DestinationSynchronous and Asynchronous Actions triggered
Session emulationThrough DerivedCharging
Accounts Aliases
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
ACCOUNTING (2)
Unlimited Balances per Account*voice, *data, *sms, *monetaryBalance selection prioritisation through weightsVarious bundle combinations
Shared/Group Balances
Balance lifetime controlsEg: balance expires or balance is active on specific time intervals
Concurrent sessions per accountBalance reservation in chunks of debit intervalBalance refundsDebit sleep when needed
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
ACCOUNTING - Fraud Detection
Part of Accounting SubsystemTightly integrated, balance operations cannot avoid it
Balances monitoringMinimum & maximum balance monitors
Counters monitoringMinimum & maximum counter monitors
Scheduler integrationOne-time, recurrent triggers
Synchronous & Asynchronous Actions
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
Account handling logic
CDR SERVER
Realtime CDR ServerAccessible Internal, GOB, JSON, HTTP-JSON, HTTP-REST interfaces
Offline CDR Import (eg: csv format)Automated via Linux inotify or scheduledSimultaneous folders monitored with multiple import templates per folder
Zero configuration CDR SourcesFreeSWITCHKamailioOpenSIPS
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
CDR SERVER (2)
Derived Charging support
Real-time CDR replicationRaw or Rated CDRs
CDR ExporterCSV, Fixed Length Fields, CombinedExport templates
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
CDR STATS
Standalone component Internally or remotely accessiblePerformance oriented
RawCDR and RatedCDR sources
Multiple Stats QueuesPer server and individually configurable stat queues for same CDR
Highly configurable Stats QueuesQueueLength, TimeWindow, MetricsCDR Field Filters
Individually configured ActionTriggersOne-time, recurrent triggersSynchronous & Asynchronous Actions executedPart of the Fraud Detection mechanism
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
LCRCore component logicInternally or remotely accessible through APIer or RATER componentsPerformance oriented, fully cached
Advanced profile selection mechanismFilter on Direction,Tenant,Category,Account,Subject,DestinationWeight based prioritization
Extended functionality through multiple strategies*static, *least_cost, *highest_cost, *qos_thresholds, *qosFlexible strategy parameters
Tightly coupled with ACCOUNTING subsystemProvide LCR over bundles
Integrate traffic patternsCompute LCR for specific call duration
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
CGRates Peripherals
APIer (RPC server)Tariff plan and Account managementExport commands form internal components (Eg: get_cdrs, export_cdrs, etc)Partial and full rates/accounts reload without restarts
ConsoleInteractive and non-interactiveHistoryHelpCommand auto-completion
LoaderCSV Imports
Tester
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
OpenSIPS Integration
Multiple integration mechanismsBased on traffic profileShared data through pseudovariables
REST_CLIENT for call authorization, LCRHTTP-JSON RPC Request/Answer
EVI ACC_ACCOUNTING*prepaid, *pseudoprepaid, *postpaid, *rated
EVI E_ACC_CDR*pseudoprepaid, *postpaid, *rated
CDR.csv processing*pseudoprepaid, *postpaid, *rated
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
OpenSIPS Real-time Prepaid
Call AuthorizationAsync/sync support through the user of rest_clientSets maximum call duration through dialog timeout
Call disconnectExecuted through mi_datagram by CGR SessionManager
Call StartOut of E_ACC_EVENT via event_datagram to CGR-SMStarts debit loop in case of prepaid calls – real or emulated ones
Call Stop/MissedOut of E_ACC_EVENT/E_ACC_MISSED_EVENT via event_datagram to CGR-SMStops debit loopWrites CDRs
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
OpenSIPS Real-time Prepaid - DEMO
Simple call handlingExplanation of opensips.cfgMonitor traffic exchanged between OpenSIPS and CGRateS Call auth and LCR processingCDR Export via cgr-console
Advanced call handlingSimultaneous calls out of same accountFraud detection with automatic mitigation example
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
Where to go from here
Websitehttp://www.cgrates.org
Documentationhttp://cgrates.readthedocs.org
Code + issues tracker https://github.com/cgrates/cgrates
SupportGoogle group: CGRateSIRC Freenode: #cgrates
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015
Thank you!
Questions?
Real-time charging for OpenSIPS 2.1OpenSIPS Summit Amsterdam, May 2015