mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Docs - index formatting
This commit is contained in:
166
docs/index.rst
166
docs/index.rst
@@ -1,5 +1,20 @@
|
||||
Welcome to CGRateS's documentation!
|
||||
===================================
|
||||
.. _CGRateS: http://cgrates.org
|
||||
.. _Go: http://golang.org
|
||||
.. _Docker: https://www.docker.com/
|
||||
.. _Kafka: https://kafka.apache.org/
|
||||
.. _redis: http://redis.io
|
||||
.. _mongodb: http://www.mongodb.org
|
||||
.. _api docs: https://godoc.org/github.com/cgrates/cgrates/apier
|
||||
.. _SQS: https://aws.amazon.com/de/sqs/
|
||||
.. _AMQP: https://www.amqp.org/
|
||||
.. _Asterisk: https://www.asterisk.org/
|
||||
.. _FreeSWITCH: https://freeswitch.com/
|
||||
.. _Kamailio: https://www.kamailio.org/w/
|
||||
.. _OpenSIPS: https://opensips.org/
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
|
||||
`CGRateS`_ is a *very fast* (**50k+ CPS**) and *easily scalable* (**load-balancer** + **replication** included) **Real-time Enterprise Billing Suite** targeted especially for ISPs and Telecom Operators (but not only).
|
||||
@@ -48,137 +63,12 @@ CGRateS is capable of four charging modes:
|
||||
- Least CPU usage out of the four modes (fastest charging).
|
||||
|
||||
|
||||
.. _cgrates_features:
|
||||
More overview content:
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Performance oriented. To get an idea about speed, we have benchmarked 50000+ req/sec on comodity hardware without any tweaks in the kernel
|
||||
- Using most modern programming concepts like multiprocessor support, asynchronous code execution within microthreads, channel based locking
|
||||
- Built-in data caching system with LRU and TTL support
|
||||
- Linear performance increase via simple hardware addition
|
||||
- On demand performance increase via in-process / over network communication between engine services.
|
||||
|
||||
- Modular architecture
|
||||
- Plugable into existing infrastructure
|
||||
- Non-intrusive into existing setups
|
||||
- Easy to enhance functionality by writing custom components
|
||||
- Flexible API accessible via both **GOB** (`Go`_ specific, increased performance) or **JSON** (platform independent, universally accessible)
|
||||
- Easy distribution (one binary concept, can run via NFS on all Linux servers without install).
|
||||
|
||||
- Easy administration
|
||||
- One binary can run on all Linux servers without additional installation (simple copy)
|
||||
- Can run diskless via NFS
|
||||
- Virtualization/containerization friendly(runs on Docker_).
|
||||
|
||||
- GOCS (Global Online Charging System)
|
||||
- Support for global networks with one master + multi-cache nodes around the globe for low query latency
|
||||
- Mutiple Balance types per Account (\*monetary, \*voice, \*sms, \*data, \*generic)
|
||||
- Unlimited number of Account Balances with weight based prioritization
|
||||
- Various Balance filters (ie: per-destination, roaming-only, weekend-only)
|
||||
- Support for Volume based discounts and automatic bonuses (ie: 5 SMS free for every 10 minutes in one hour to specific destination)
|
||||
- Session based charging with support for concurrent sessions per account and per session dynamic debit interval
|
||||
- Session emulation combined with Derived Charging (separate charging for distributors chaining, customer/supplier parallel calculations)
|
||||
- Balance reservation and refunds
|
||||
- Event based charging (ie: SMS, MESSAGE)
|
||||
- Built-in Task-Scheduler supporting both one-time as well as recurrent actions (automatic subscriptions management, recurrent \*debit/\*topup, DID charging)
|
||||
- Real-time balance monitors with automatic actions triggered (bonuses or fraud detection).
|
||||
|
||||
- Highly configurable Rating
|
||||
- Connect Fees
|
||||
- Priced Units definition
|
||||
- Rate increments
|
||||
- Rate groups (ie. charge first minute in a call as a whole and next ones per second)
|
||||
- Verbose durations(up to nanoseconds billing)
|
||||
- Configurable decimals per destination
|
||||
- Rating subject categorization (ie. premium/local charges, roaming)
|
||||
- Recurrent rates definition (per year, month, day, dayOfWeek, time)
|
||||
- Rating Profiles activation times (eg: rates becoming active at specific time in the future)
|
||||
- Rating Profiles fallback (per subject destinations with fallback to server wide pricing)
|
||||
- Verbose charging logs to comply strict rules imposed by some country laws.
|
||||
|
||||
- Multi-Tenant from day one
|
||||
- Default Tenant configurable for one-tenant systems
|
||||
- Security enforced for RPC-API on Tenant level.
|
||||
|
||||
- Online configuration reloads without restart
|
||||
- Engine configuration from .json folder or remote http server
|
||||
- Tariff Plans from .csv folder or database storage.
|
||||
|
||||
- CDR server
|
||||
- Optional offline database storage
|
||||
- Online (rating queues) or offline (via RPC-API) exports with customizable content via .json templates
|
||||
- Multiple export interfaces: files, HTTP, AMQP_, SQS_, Kafka_.
|
||||
|
||||
- Generic Event Reader
|
||||
- Process various sources of events and convert them into internal ones which are sent to CDR server for rating
|
||||
- Conversion rules defined in .json templates
|
||||
- Supported interfaces: .csv, .xml, fixed width files, Kafka_.
|
||||
|
||||
- Events mediation
|
||||
- Ability to add/change/remove information within *Events* to achieve additional services or correction
|
||||
- Performance oriented.
|
||||
|
||||
- Routing server for VoIP
|
||||
- Implements strategies like *Least Cost Routing*, *Load Balacer*, *High Availability*
|
||||
- Implements *Number Portability* service.
|
||||
|
||||
- Resource allocation controller
|
||||
- Generic filters for advanced logic
|
||||
- In-memory operations for increased performance
|
||||
- Backup in offline storage.
|
||||
|
||||
- Stats service
|
||||
- Generic stats (\*sum, \*difference, \*multiply, \*divide)
|
||||
- In-memory operations for increased performance
|
||||
- Backup in offline storage.
|
||||
|
||||
- Thresholds monitor
|
||||
- Particular implementation of *Fraud Detection with automatic mitigation*
|
||||
- Execute independent actions which can serve various purposes (notifications, accounts disables, bonuses to accounts).
|
||||
|
||||
- Multiple RPC interfaces
|
||||
- Support for *JSON-RPC*, *GOB-PC* over TCP, HTTP, websockets
|
||||
- Support for HTTP-REST interface.
|
||||
|
||||
- Various agents to outside world:
|
||||
- Asterisk_
|
||||
- FreeSWITCH_
|
||||
- Kamailio_
|
||||
- OpenSIPS_
|
||||
- Diameter
|
||||
- Radius
|
||||
- Generic HTTP
|
||||
- DNS/ENUM.
|
||||
|
||||
- Built in High-Availability mechanisms:
|
||||
- Dispatcher with static or dynamic routing
|
||||
- Server data replication
|
||||
- Client remote data querying.
|
||||
|
||||
|
||||
- Good documentation ( that's me :).
|
||||
|
||||
- **"Free as in Beer"** with commercial support available on-demand.
|
||||
|
||||
|
||||
Links
|
||||
-----
|
||||
|
||||
- CGRateS home page `<http://www.cgrates.org>`_
|
||||
- Documentation `<http://cgrates.readthedocs.io>`_
|
||||
- API docs `<https://godoc.org/github.com/cgrates/cgrates/apier>`_
|
||||
- Source code `<https://github.com/cgrates/cgrates>`_
|
||||
- Travis CI `<https://travis-ci.org/cgrates/cgrates>`_
|
||||
- Google group `<https://groups.google.com/forum/#!forum/cgrates>`_
|
||||
- IRC `irc.freenode.net #cgrates <http://webchat.freenode.net/?randomnick=1&channels=#cgrates>`_
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
`CGRateS`_ is released under the terms of the `[GNU GENERAL PUBLIC LICENSE Version 3] <http://www.gnu.org/licenses/gpl-3.0.en.html>`_. See **LICENSE.txt** file for details.
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
overview.rst
|
||||
|
||||
|
||||
Table of Contents
|
||||
@@ -197,19 +87,7 @@ Table of Contents
|
||||
|
||||
|
||||
|
||||
.. _CGRateS: http://cgrates.org
|
||||
.. _Go: http://golang.org
|
||||
.. _Docker: https://www.docker.com/
|
||||
.. _Kafka: https://kafka.apache.org/
|
||||
.. _redis: http://redis.io
|
||||
.. _mongodb: http://www.mongodb.org
|
||||
.. _api docs: https://godoc.org/github.com/cgrates/cgrates/apier
|
||||
.. _SQS: https://aws.amazon.com/de/sqs/
|
||||
.. _AMQP: https://www.amqp.org/
|
||||
.. _Asterisk: https://www.asterisk.org/
|
||||
.. _FreeSWITCH: https://freeswitch.com/
|
||||
.. _Kamailio: https://www.kamailio.org/w/
|
||||
.. _OpenSIPS: https://opensips.org/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,197 +0,0 @@
|
||||
************
|
||||
Introduction
|
||||
************
|
||||
|
||||
`CGRateS`_ is a *very fast* (**50k+ CPS**) and *easily scalable* (**load-balancer** + **replication** included) **Real-time Enterprise Billing Suite** targeted especially for ISPs and Telecom Operators (but not only).
|
||||
|
||||
Starting as a pure **billing engine**, CGRateS has evolved over the years into a reliable **real-time charging framework**, able to accommodate various business cases in a *generic way*.
|
||||
|
||||
Being an *"engine style"* the project focuses on providing best ratio between **functionality** (over 15 daemons/services implemented with a rich number of `features <cgrates_features>`_ and a development team agile in developing new ones) and **performance** (dedicated benchmark tool, asynchronous request processing, own transactional cache component), however not losing focus of **quality** (test driven development policy).
|
||||
|
||||
It is written in `Go`_ programming language and accessible from any programming language via JSON RPC.
|
||||
The code is well documented (**go doc** compliant `API docs`_) and heavily tested (**5k+** tests are part of the unit test suite).
|
||||
|
||||
Meant to be pluggable into existing billing infrastructure and as non-intrusive as possible,
|
||||
CGRateS passes the decisions about logic flow to system administrators and incorporates as less as possible business logic.
|
||||
|
||||
Modular and flexible, CGRateS provides APIs over a variety of simultaneously accessible communication interfaces:
|
||||
- **In-process** : optimal when there is no need to split services over different processes
|
||||
- **JSON over TCP** : most preferred due to its simplicity and readability
|
||||
- **JSON over HTTP** : popular due to fast interoperability development
|
||||
- **JSON over Websockets** : useful where 2 ways interaction over same TCP socket is required
|
||||
- **GOB over TCP** : slightly faster than JSON one but only accessible for the moment out of Go (`<https://golang.org/>`_).
|
||||
|
||||
CGRateS is capable of four charging modes:
|
||||
|
||||
- \*prepaid
|
||||
- Session events monitored in real-time
|
||||
- Session authorization via events with security call timer
|
||||
- Real-time balance updates with configurable debit interval
|
||||
- Support for simultaneous sessions out of the same account
|
||||
- Real-time fraud detection with automatic mitigation
|
||||
- *Advantage*: real-time overview of the costs and fast detection in case of fraud, concurrent account sessions supported
|
||||
- *Disadvantage*: more CPU intensive.
|
||||
|
||||
- \*pseudoprepaid
|
||||
- Session authorization via events
|
||||
- Charging done at the end of the session out of CDR received
|
||||
- *Advantage*: less CPU intensive due to less events processed
|
||||
- *Disadvantage*: as balance updates happen only at the end of the session there can be costs discrepancy in case of multiple sessions out of same account (including going on negative balance).
|
||||
|
||||
- \*postpaid
|
||||
- Charging done at the end of the session out of CDR received without session authorization
|
||||
- Useful when no authorization is necessary (trusted accounts) and no real-time event interaction is present (balance is updated only when CDR is present).
|
||||
|
||||
- \*rated
|
||||
- Special charging mode where there is no accounting interaction (no balances are used) but the primary interest is attaching costs to CDRs.
|
||||
- Specific mode for Wholesale business processing high-throughput CDRs
|
||||
- Least CPU usage out of the four modes (fastest charging).
|
||||
|
||||
|
||||
.. _cgrates_features:
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
- Performance oriented. To get an idea about speed, we have benchmarked 50000+ req/sec on comodity hardware without any tweaks in the kernel
|
||||
- Using most modern programming concepts like multiprocessor support, asynchronous code execution within microthreads, channel based locking
|
||||
- Built-in data caching system with LRU and TTL support
|
||||
- Linear performance increase via simple hardware addition
|
||||
- On demand performance increase via in-process / over network communication between engine services.
|
||||
|
||||
- Modular architecture
|
||||
- Plugable into existing infrastructure
|
||||
- Non-intrusive into existing setups
|
||||
- Easy to enhance functionality by writing custom components
|
||||
- Flexible API accessible via both **GOB** (`Go`_ specific, increased performance) or **JSON** (platform independent, universally accessible)
|
||||
- Easy distribution (one binary concept, can run via NFS on all Linux servers without install).
|
||||
|
||||
- Easy administration
|
||||
- One binary can run on all Linux servers without additional installation (simple copy)
|
||||
- Can run diskless via NFS
|
||||
- Virtualization/containerization friendly(runs on Docker_).
|
||||
|
||||
- GOCS (Global Online Charging System)
|
||||
- Support for global networks with one master + multi-cache nodes around the globe for low query latency
|
||||
- Mutiple Balance types per Account (\*monetary, \*voice, \*sms, \*data, \*generic)
|
||||
- Unlimited number of Account Balances with weight based prioritization
|
||||
- Various Balance filters (ie: per-destination, roaming-only, weekend-only)
|
||||
- Support for Volume based discounts and automatic bonuses (ie: 5 SMS free for every 10 minutes in one hour to specific destination)
|
||||
- Session based charging with support for concurrent sessions per account and per session dynamic debit interval
|
||||
- Session emulation combined with Derived Charging (separate charging for distributors chaining, customer/supplier parallel calculations)
|
||||
- Balance reservation and refunds
|
||||
- Event based charging (ie: SMS, MESSAGE)
|
||||
- Built-in Task-Scheduler supporting both one-time as well as recurrent actions (automatic subscriptions management, recurrent \*debit/\*topup, DID charging)
|
||||
- Real-time balance monitors with automatic actions triggered (bonuses or fraud detection).
|
||||
|
||||
- Highly configurable Rating
|
||||
- Connect Fees
|
||||
- Priced Units definition
|
||||
- Rate increments
|
||||
- Rate groups (ie. charge first minute in a call as a whole and next ones per second)
|
||||
- Verbose durations(up to nanoseconds billing)
|
||||
- Configurable decimals per destination
|
||||
- Rating subject categorization (ie. premium/local charges, roaming)
|
||||
- Recurrent rates definition (per year, month, day, dayOfWeek, time)
|
||||
- Rating Profiles activation times (eg: rates becoming active at specific time in the future)
|
||||
- Rating Profiles fallback (per subject destinations with fallback to server wide pricing)
|
||||
- Verbose charging logs to comply strict rules imposed by some country laws.
|
||||
|
||||
- Multi-Tenant from day one
|
||||
- Default Tenant configurable for one-tenant systems
|
||||
- Security enforced for RPC-API on Tenant level.
|
||||
|
||||
- Online configuration reloads without restart
|
||||
- Engine configuration from .json folder or remote http server
|
||||
- Tariff Plans from .csv folder or database storage.
|
||||
|
||||
- CDR server
|
||||
- Optional offline database storage
|
||||
- Online (rating queues) or offline (via RPC-API) exports with customizable content via .json templates
|
||||
- Multiple export interfaces: files, HTTP, AMQP_, SQS_, Kafka_.
|
||||
|
||||
- Generic Event Reader
|
||||
- Process various sources of events and convert them into internal ones which are sent to CDR server for rating
|
||||
- Conversion rules defined in .json templates
|
||||
- Supported interfaces: .csv, .xml, fixed width files, Kafka_.
|
||||
|
||||
- Events mediation
|
||||
- Ability to add/change/remove information within *Events* to achieve additional services or correction
|
||||
- Performance oriented.
|
||||
|
||||
- Routing server for VoIP
|
||||
- Implements strategies like *Least Cost Routing*, *Load Balacer*, *High Availability*
|
||||
- Implements *Number Portability* service.
|
||||
|
||||
- Resource allocation controller
|
||||
- Generic filters for advanced logic
|
||||
- In-memory operations for increased performance
|
||||
- Backup in offline storage.
|
||||
|
||||
- Stats service
|
||||
- Generic stats (\*sum, \*difference, \*multiply, \*divide)
|
||||
- In-memory operations for increased performance
|
||||
- Backup in offline storage.
|
||||
|
||||
- Thresholds monitor
|
||||
- Particular implementation of *Fraud Detection with automatic mitigation*
|
||||
- Execute independent actions which can serve various purposes (notifications, accounts disables, bonuses to accounts).
|
||||
|
||||
- Multiple RPC interfaces
|
||||
- Support for *JSON-RPC*, *GOB-PC* over TCP, HTTP, websockets
|
||||
- Support for HTTP-REST interface.
|
||||
|
||||
- Various agents to outside world:
|
||||
- Asterisk_
|
||||
- FreeSWITCH_
|
||||
- Kamailio_
|
||||
- OpenSIPS_
|
||||
- Diameter
|
||||
- Radius
|
||||
- Generic HTTP
|
||||
- DNS/ENUM.
|
||||
|
||||
- Built in High-Availability mechanisms:
|
||||
- Dispatcher with static or dynamic routing
|
||||
- Server data replication
|
||||
- Client remote data querying.
|
||||
|
||||
|
||||
- Good documentation ( that's me :).
|
||||
|
||||
- **"Free as in Beer"** with commercial support available on-demand.
|
||||
|
||||
|
||||
Links
|
||||
=====
|
||||
|
||||
- CGRateS home page `<http://www.cgrates.org>`_
|
||||
- Documentation `<http://cgrates.readthedocs.io>`_
|
||||
- API docs `<https://godoc.org/github.com/cgrates/cgrates/apier>`_
|
||||
- Source code `<https://github.com/cgrates/cgrates>`_
|
||||
- Travis CI `<https://travis-ci.org/cgrates/cgrates>`_
|
||||
- Google group `<https://groups.google.com/forum/#!forum/cgrates>`_
|
||||
- IRC `irc.freenode.net #cgrates <http://webchat.freenode.net/?randomnick=1&channels=#cgrates>`_
|
||||
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
`CGRateS`_ is released under the terms of the `[GNU GENERAL PUBLIC LICENSE Version 3] <http://www.gnu.org/licenses/gpl-3.0.en.html>`_. See **LICENSE.txt** file for details.
|
||||
|
||||
|
||||
.. _CGRateS: http://cgrates.org
|
||||
.. _Go: http://golang.org
|
||||
.. _Docker: https://www.docker.com/
|
||||
.. _Kafka: https://kafka.apache.org/
|
||||
.. _redis: http://redis.io
|
||||
.. _mongodb: http://www.mongodb.org
|
||||
.. _api docs: https://godoc.org/github.com/cgrates/cgrates/apier
|
||||
.. _SQS: https://aws.amazon.com/de/sqs/
|
||||
.. _AMQP: https://www.amqp.org/
|
||||
.. _Asterisk: https://www.asterisk.org/
|
||||
.. _FreeSWITCH: https://freeswitch.com/
|
||||
.. _Kamailio: https://www.kamailio.org/w/
|
||||
.. _OpenSIPS: https://opensips.org/
|
||||
|
||||
|
||||
@@ -1,195 +1,130 @@
|
||||
.. _cgrates_features:
|
||||
|
||||
2. CGRateS Subsystems
|
||||
=====================
|
||||
Features
|
||||
========
|
||||
|
||||
- Performance oriented. To get an idea about speed, we have benchmarked 50000+ req/sec on comodity hardware without any tweaks in the kernel
|
||||
- Using most modern programming concepts like multiprocessor support, asynchronous code execution within microthreads, channel based locking
|
||||
- Built-in data caching system with LRU and TTL support
|
||||
- Linear performance increase via simple hardware addition
|
||||
- On demand performance increase via in-process / over network communication between engine services.
|
||||
|
||||
- Modular architecture
|
||||
- Plugable into existing infrastructure
|
||||
- Non-intrusive into existing setups
|
||||
- Easy to enhance functionality by writing custom components
|
||||
- Flexible API accessible via both **GOB** (`Go`_ specific, increased performance) or **JSON** (platform independent, universally accessible)
|
||||
- Easy distribution (one binary concept, can run via NFS on all Linux servers without install).
|
||||
|
||||
- Easy administration
|
||||
- One binary can run on all Linux servers without additional installation (simple copy)
|
||||
- Can run diskless via NFS
|
||||
- Virtualization/containerization friendly(runs on Docker_).
|
||||
|
||||
- GOCS (Global Online Charging System)
|
||||
- Support for global networks with one master + multi-cache nodes around the globe for low query latency
|
||||
- Mutiple Balance types per Account (\*monetary, \*voice, \*sms, \*data, \*generic)
|
||||
- Unlimited number of Account Balances with weight based prioritization
|
||||
- Various Balance filters (ie: per-destination, roaming-only, weekend-only)
|
||||
- Support for Volume based discounts and automatic bonuses (ie: 5 SMS free for every 10 minutes in one hour to specific destination)
|
||||
- Session based charging with support for concurrent sessions per account and per session dynamic debit interval
|
||||
- Session emulation combined with Derived Charging (separate charging for distributors chaining, customer/supplier parallel calculations)
|
||||
- Balance reservation and refunds
|
||||
- Event based charging (ie: SMS, MESSAGE)
|
||||
- Built-in Task-Scheduler supporting both one-time as well as recurrent actions (automatic subscriptions management, recurrent \*debit/\*topup, DID charging)
|
||||
- Real-time balance monitors with automatic actions triggered (bonuses or fraud detection).
|
||||
|
||||
- Highly configurable Rating
|
||||
- Connect Fees
|
||||
- Priced Units definition
|
||||
- Rate increments
|
||||
- Rate groups (ie. charge first minute in a call as a whole and next ones per second)
|
||||
- Verbose durations(up to nanoseconds billing)
|
||||
- Configurable decimals per destination
|
||||
- Rating subject categorization (ie. premium/local charges, roaming)
|
||||
- Recurrent rates definition (per year, month, day, dayOfWeek, time)
|
||||
- Rating Profiles activation times (eg: rates becoming active at specific time in the future)
|
||||
- Rating Profiles fallback (per subject destinations with fallback to server wide pricing)
|
||||
- Verbose charging logs to comply strict rules imposed by some country laws.
|
||||
|
||||
- Multi-Tenant from day one
|
||||
- Default Tenant configurable for one-tenant systems
|
||||
- Security enforced for RPC-API on Tenant level.
|
||||
|
||||
- Online configuration reloads without restart
|
||||
- Engine configuration from .json folder or remote http server
|
||||
- Tariff Plans from .csv folder or database storage.
|
||||
|
||||
- CDR server
|
||||
- Optional offline database storage
|
||||
- Online (rating queues) or offline (via RPC-API) exports with customizable content via .json templates
|
||||
- Multiple export interfaces: files, HTTP, AMQP_, SQS_, Kafka_.
|
||||
|
||||
- Generic Event Reader
|
||||
- Process various sources of events and convert them into internal ones which are sent to CDR server for rating
|
||||
- Conversion rules defined in .json templates
|
||||
- Supported interfaces: .csv, .xml, fixed width files, Kafka_.
|
||||
|
||||
- Events mediation
|
||||
- Ability to add/change/remove information within *Events* to achieve additional services or correction
|
||||
- Performance oriented.
|
||||
|
||||
- Routing server for VoIP
|
||||
- Implements strategies like *Least Cost Routing*, *Load Balacer*, *High Availability*
|
||||
- Implements *Number Portability* service.
|
||||
|
||||
- Resource allocation controller
|
||||
- Generic filters for advanced logic
|
||||
- In-memory operations for increased performance
|
||||
- Backup in offline storage.
|
||||
|
||||
- Stats service
|
||||
- Generic stats (\*sum, \*difference, \*multiply, \*divide)
|
||||
- In-memory operations for increased performance
|
||||
- Backup in offline storage.
|
||||
|
||||
- Thresholds monitor
|
||||
- Particular implementation of *Fraud Detection with automatic mitigation*
|
||||
- Execute independent actions which can serve various purposes (notifications, accounts disables, bonuses to accounts).
|
||||
|
||||
- Multiple RPC interfaces
|
||||
- Support for *JSON-RPC*, *GOB-PC* over TCP, HTTP, websockets
|
||||
- Support for HTTP-REST interface.
|
||||
|
||||
- Various agents to outside world:
|
||||
- Asterisk_
|
||||
- FreeSWITCH_
|
||||
- Kamailio_
|
||||
- OpenSIPS_
|
||||
- Diameter
|
||||
- Radius
|
||||
- Generic HTTP
|
||||
- DNS/ENUM.
|
||||
|
||||
- Built in High-Availability mechanisms:
|
||||
- Dispatcher with static or dynamic routing
|
||||
- Server data replication
|
||||
- Client remote data querying.
|
||||
|
||||
|
||||
2.1. RALs (RatingAccountingLCRservice)
|
||||
--------------------------------------
|
||||
- Primary component, offering the most functionality out of the subsystems.
|
||||
- Computes replies based on static list of "rules" defined in TariffPlan.
|
||||
- Good documentation ( that's me :).
|
||||
|
||||
2.1.1. Rater
|
||||
~~~~~~~~~~~~
|
||||
- Defines the performance of the system as a whole being the "heart" component
|
||||
- Support for multiple TypeOfRecord (**\*voice**, **\*data**, **\*sms**, **\*generic**)
|
||||
- Time based calculations (activation time in the future/rate-destination timely coupled) with granular time definitions (year, month, month day, weekday, time in seconds)
|
||||
- Compressed destination prefixes, helping on faster destination match as well as memory consumption
|
||||
- Advanced Rating capabilities:
|
||||
ConnectFee (charged at beginning of the session);
|
||||
RateUnit (automatic divider for the cost);
|
||||
RateIncrement (increase verbosity of the charging interval);
|
||||
Grouped interval rating inside the call duration (charging each second within a session independently)
|
||||
- Per destination rounding: control number of decimals displayed in costs, decide rounding methods (**\*up**, **\*down**, **\*middle**)
|
||||
- Control of the MaxSessionCost with decision on action taken on threshold hit (**\*free**, **\*disconnect**)
|
||||
- Unlimited chaining of rating profiles (escalation price lists)
|
||||
|
||||
2.1.2. Accounting
|
||||
~~~~~~~~~~~~~~~~~
|
||||
- Maintains accounts with bundles and usage counters
|
||||
- Support for multiple TypeOfRecord (**\*voice**, **\*data**, **\*sms**, **\*generic**)
|
||||
- Unlimited number of balances per account
|
||||
- Balance prioritization via balance weights
|
||||
- Advanced balance selection (Direction, Destinations, RatingSubject - volume discounts in real-time, Categories)
|
||||
- Accurate balance lifespan definition (ExpirationDate, Activation intervals)
|
||||
- Safe account operations via in-/inter-process locks and on-disk storage
|
||||
- Shared balances between multiple accounts (family/company bundles) with per-consumer configurable debit strategy and rates selected.
|
||||
- Concurrent sessions per account doing balance reservation in chunks of debit interval and support for refunds and debit sleep when needed
|
||||
- Scheduled account operations via predefined actions (eg: **\*topup**, **\*debit**) or notifications (**\*http_post**, **\*mail**)
|
||||
- Fraud detection with automatic mitigation via action triggers/thresholds monitoring both balance status as well as combined usage
|
||||
|
||||
2.1.3. LCR
|
||||
~~~~~~~~~~
|
||||
- Accessible via RPC for queries or coupled with external communication systems sharing supplier information via specific channel variables.
|
||||
- Integrates traffic patterns (LCR for specific session duration)
|
||||
- Advanced profile selection mechanism (Direction, Tenant, Category, Account, Subject, Destination).
|
||||
- Weight based prioritisation.
|
||||
- Profile activation in the future possible through ActivationTime parameter.
|
||||
- Tightly coupled with Accounting subsystem providing LCR over bundles (eg: consider minutes with special price only during weekend)
|
||||
- Extended functionality through the use of strategies and individual parameters per strategy
|
||||
- **\*static**: list of suppliers is always statically returned, independent on cost
|
||||
- **\*least_cost**: classic LCR where suppliers are ordered based on cheapest cost
|
||||
- **\*highest_cost**: suppliers are ordered based on highest cost
|
||||
- **\*qos_thresholds**: suppliers are ordered based on cheapest cost and considered only if their quality stats (ASR, ACD, TCD, ACC, TCC, PDD, DDC) are within the defined intervals
|
||||
- **\*qos**: suppliers are ordered by their quality stats (ASR, ACD, TCD, ACC, TCC, PDD, DDC)
|
||||
- **\*load_distribution**: suppliers are ordered based on preconfigured load distribution scheme, independent on their costs.
|
||||
|
||||
2.2. CDRs
|
||||
---------
|
||||
- Real-time, centralized CDR server designed to receive CDRs via RPC interfaces
|
||||
- Attaches Costs received from RALs to CDR events
|
||||
- Offline CDR storage
|
||||
- Real-time CDR replication to multiple upstream servers (CDR Rating queues) for high performance (optional disk-less) CDR processing
|
||||
- Flexible export interfaces (JSON templates) with output mediation
|
||||
- SureTax integration for US specific tax calculations
|
||||
|
||||
2.3. CDRStatS
|
||||
-------------
|
||||
- Compute real-time stats based on CDR events received
|
||||
- In-memory / performance oriented
|
||||
- Unlimited StatQueues computing the same CDR event
|
||||
- Flexible queue configuration (QueueLength, TimeWindow, Metrics, CDR field filters)
|
||||
- Fraud detection with automatic mitigation through action triggers
|
||||
|
||||
2.4. AliaseS
|
||||
------------
|
||||
- Context based data aliasing (**\*rating** - converts data on input before calculations)
|
||||
- Multiple layers for filtering (Direction, Tenant, Category, Account, Subject, DestinationID, Context)
|
||||
- Multiple fields replaced simultaneously based on Target parameter
|
||||
|
||||
2.5. UserS
|
||||
----------
|
||||
- Populate requests with user profile fields (replace **\*users** marked fields with data from matched profile)
|
||||
- Best match inside user properties
|
||||
- Attribute-value store (similar to LDAP/Diameter)
|
||||
|
||||
2.6. RLs (ResourceLimiterService)
|
||||
---------------------------------
|
||||
- Limits resources during authorization (eg: maximum calls per destination for an account)
|
||||
- Time aware (resources available during predefined time interval)
|
||||
|
||||
2.7. PubsubS
|
||||
------------
|
||||
- Expose internal events to subscribed external entities (eg: real-time balance updates being sent to an external http server)
|
||||
- Advanced regexp filters for subscriptions
|
||||
- Configurable subscription lifespan
|
||||
|
||||
2.8. HistoryS
|
||||
-------------
|
||||
- Archive rate changes in git powered environment
|
||||
- In-memory diffs with regular dumps to filesystem
|
||||
|
||||
2.9. DA (DiameterAgent)
|
||||
-----------------------
|
||||
- Diameter **server** implementation
|
||||
- Flexible processing logic configured inside JSON templates (standard agnostic)
|
||||
- Mediation for incoming fields (regexp support with in-memory compiled rules).
|
||||
|
||||
2.10. SM (SessionManager)
|
||||
-------------------------
|
||||
- Maintain/disconnect sessions
|
||||
- Balance reservation and refunds
|
||||
|
||||
2.10.1. SMG (SessionManagerGeneric)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
- Switch agnostic session management via RPC interface
|
||||
- Bi-JSONRPC support
|
||||
|
||||
2.10.2. SMG-Asterisk
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
- Asterisk specific communication over ARI and AMI interfaces
|
||||
- Bidirectional (subscribing for events as well as sending commands)
|
||||
|
||||
2.10.3. FreeSWITCHAgent
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
- FreeSWITCH specific communication interface via ESL
|
||||
- Bidirectional (subscribing for events as well as sending commands)
|
||||
- Zero configuration in FreeSWITCH for CDR generation (useful for billing assurance/parallel billing)
|
||||
- Ability to manage multiple FreeSWITCH servers from the same CGR-SM component
|
||||
|
||||
2.10.4. SM-Kamailio
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
- Bidirectional Kamailio communication via evapi
|
||||
- Ability to manage multiple Kamailio instances from the same CGR-SM component
|
||||
|
||||
2.10.5. SM-OpenSIPS
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
- Bidirectional OpenSIPS communication via event_diagram/mi_datagram
|
||||
- Deadlink detection via subscription mechanism
|
||||
|
||||
2.11. CDRC (CDR Client)
|
||||
-----------------------
|
||||
- Offline CDR processing for **.csv**, **.xml** and **.fwv** file sources
|
||||
- Mediation via in-memory regexp rules inside JSON templates
|
||||
- Linux inotify support for instant file processing or delayed folder monitoring
|
||||
- **"Free as in Beer"** with commercial support available on-demand.
|
||||
|
||||
|
||||
3. CGRateS Peripherals
|
||||
======================
|
||||
Packaged together due to common usage
|
||||
Links
|
||||
=====
|
||||
|
||||
3.1. cgr-engine
|
||||
---------------
|
||||
- Configured via .json files, encorporating CGRateS subsystems mentioned above
|
||||
- Can start as many / less services as needed communicating over internal or external sockets
|
||||
- Multiple cgr-engine processes can be started on the same host
|
||||
- Asynchronous service runs (services synchronize later inside process via specific communication channels, however they all run independent of each other).
|
||||
- RPC Server with multiple interfaces started automatically based on needs.
|
||||
- TCP sockets shared between services
|
||||
- CGRateS home page `<http://www.cgrates.org>`_
|
||||
- Documentation `<http://cgrates.readthedocs.io>`_
|
||||
- API docs `<https://godoc.org/github.com/cgrates/cgrates/apier>`_
|
||||
- Source code `<https://github.com/cgrates/cgrates>`_
|
||||
- Travis CI `<https://travis-ci.org/cgrates/cgrates>`_
|
||||
- Google group `<https://groups.google.com/forum/#!forum/cgrates>`_
|
||||
- IRC `irc.freenode.net #cgrates <http://webchat.freenode.net/?randomnick=1&channels=#cgrates>`_
|
||||
|
||||
3.2. cgr-console
|
||||
----------------
|
||||
- Application interfacing with cgr-engine via TCP sockets (JSON serialization)
|
||||
- History and help command support
|
||||
|
||||
3.3. cgr-loader
|
||||
---------------
|
||||
- Loads TariffPlan data out of .csv files into CGRateS live database or imports it into offline one for offline management
|
||||
- Automatic cache reloads with optimizations for data loaded
|
||||
License
|
||||
=======
|
||||
|
||||
3.4. cgr-tester
|
||||
---------------
|
||||
- Benchmarking tool to test based on particular TariffPlans of users.
|
||||
|
||||
3.5. cgr-admin (`<https://github.com/cgrates/cgradmin>`_)
|
||||
----------------------------------------------------
|
||||
- PoC web interface demonstrating recommended way to interact with CGRateS from an external GUI.
|
||||
|
||||
4. Fraud detection within CGRateS
|
||||
=================================
|
||||
- Due to its importance in billing, CGRateS has invested considerable efforts into fraud detection and automatic mitigation.
|
||||
- For redundancy and reliability purposes, there are two mechanisms available within CGRateS to detect fraud.
|
||||
|
||||
4.1. Fraud detection within Accounting:
|
||||
---------------------------------------
|
||||
- Events are happening in real-time, being available during updates (eg: every n seconds of a session).
|
||||
- Thresholds set by the administrator are reacting by calling a set of predefined actions **synchronously**
|
||||
(with the advantage of having account in locked state, eg. no other events are possible until decision is made) or **asynchronously** (unlocking the accounts faster)
|
||||
- Two types of thresholds can be set
|
||||
- **min-/max-balance** monitoring balance values
|
||||
- **min-/max-usage** counters (eg: amount of minutes to specific destination).
|
||||
- Middle session control (sessions can be disconnected as fraud is detected
|
||||
|
||||
4.2. Fraud detection within CDRStatS:
|
||||
-------------------------------------
|
||||
- Thresholds are monitoring CDRStatS queues and reacting by calling synchronously or asynchronously a set of predefined actions.
|
||||
- Various stats metrics can be monitored (min-/max- ASR, ACD, TCD, ACC, TCC, PDD, DDC)
|
||||
`CGRateS`_ is released under the terms of the `[GNU GENERAL PUBLIC LICENSE Version 3] <http://www.gnu.org/licenses/gpl-3.0.en.html>`_. See **LICENSE.txt** file for details.
|
||||
|
||||
Reference in New Issue
Block a user