From f03b402affb37f902389637d227cc9e14b65be07 Mon Sep 17 00:00:00 2001 From: DanB Date: Sun, 19 Jan 2020 11:47:44 +0100 Subject: [PATCH] Docs - index formatting --- docs/index.rst | 166 +++-------------------- docs/introduction.rst | 197 --------------------------- docs/overview.rst | 305 +++++++++++++++++------------------------- 3 files changed, 142 insertions(+), 526 deletions(-) delete mode 100644 docs/introduction.rst diff --git a/docs/index.rst b/docs/index.rst index 23b3b00f3..9ce990fba 100644 --- a/docs/index.rst +++ b/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 ``_ -- Documentation ``_ -- API docs ``_ -- Source code ``_ -- Travis CI ``_ -- Google group ``_ -- IRC `irc.freenode.net #cgrates `_ - - -License -------- - -`CGRateS`_ is released under the terms of the `[GNU GENERAL PUBLIC LICENSE Version 3] `_. 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/ + diff --git a/docs/introduction.rst b/docs/introduction.rst deleted file mode 100644 index f7d99d259..000000000 --- a/docs/introduction.rst +++ /dev/null @@ -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 `_ 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 (``_). - -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 ``_ -- Documentation ``_ -- API docs ``_ -- Source code ``_ -- Travis CI ``_ -- Google group ``_ -- IRC `irc.freenode.net #cgrates `_ - - -License -======= - -`CGRateS`_ is released under the terms of the `[GNU GENERAL PUBLIC LICENSE Version 3] `_. 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/ - - diff --git a/docs/overview.rst b/docs/overview.rst index 8aec3b1e5..2570e6f3d 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -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 ``_ +- Documentation ``_ +- API docs ``_ +- Source code ``_ +- Travis CI ``_ +- Google group ``_ +- IRC `irc.freenode.net #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 (``_) ----------------------------------------------------- -- 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] `_. See **LICENSE.txt** file for details.