From 37053fb3f5fadc4d1061bb6ef35590f5d0ad54dd Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Tue, 10 Jul 2012 15:57:12 +0300 Subject: [PATCH] added all the tables for data import and created configuration diagrams. --- docs/images/Complicated.png | Bin 0 -> 12958 bytes docs/images/Complicated.xml | 1 + docs/images/Normal.png | Bin 0 -> 10316 bytes docs/images/Normal.xml | 1 + docs/images/Simple.png | Bin 0 -> 4713 bytes docs/images/Simple.xml | 1 + docs/images/general.dia | Bin 2384 -> 0 bytes docs/images/general.png | Bin 22054 -> 0 bytes docs/importing.rst | 169 ++++++++++++++++++++++++++++++++ docs/index.rst | 3 +- docs/intro.rst | 18 +++- docs/tutorial.rst | 185 +----------------------------------- 12 files changed, 194 insertions(+), 184 deletions(-) create mode 100644 docs/images/Complicated.png create mode 100644 docs/images/Complicated.xml create mode 100644 docs/images/Normal.png create mode 100644 docs/images/Normal.xml create mode 100644 docs/images/Simple.png create mode 100644 docs/images/Simple.xml delete mode 100644 docs/images/general.dia delete mode 100644 docs/images/general.png create mode 100644 docs/importing.rst diff --git a/docs/images/Complicated.png b/docs/images/Complicated.png new file mode 100644 index 0000000000000000000000000000000000000000..ac1307cb2f5b22b04f0ac056036569eedfcbee77 GIT binary patch literal 12958 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 PCm3pX9w-$mm<9cRkRG@e literal 0 HcmV?d00001 diff --git a/docs/images/Complicated.xml b/docs/images/Complicated.xml new file mode 100644 index 000000000..894e1c0f0 --- /dev/null +++ b/docs/images/Complicated.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/Normal.png b/docs/images/Normal.png new file mode 100644 index 0000000000000000000000000000000000000000..6285bc7eb0037cf0f5bb1c5ee0bd25a966874d40 GIT binary patch literal 10316 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

*)1)lb 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 literal 0 HcmV?d00001 diff --git a/docs/images/Normal.xml b/docs/images/Normal.xml new file mode 100644 index 000000000..628dc1053 --- /dev/null +++ b/docs/images/Normal.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/Simple.png b/docs/images/Simple.png new file mode 100644 index 0000000000000000000000000000000000000000..c24e10db00b6caeeb8d47153cb931c8213ff6f6b GIT binary patch literal 4713 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 \ No newline at end of file diff --git a/docs/images/general.dia b/docs/images/general.dia deleted file mode 100644 index 1b407c1dbf35a25fd3f5502379dbebf323037427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2384 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 diff --git a/docs/importing.rst b/docs/importing.rst new file mode 100644 index 000000000..a143e7ea5 --- /dev/null +++ b/docs/importing.rst @@ -0,0 +1,169 @@ +Data importing +============= + +Rates profile +-------------- + ++------------+-----+-----------+-------------+----------------------+----------------+----------------------+ +| Tenant | TOR | Direction | Subject | RatesFallbackSubject | RatesTimingTag | ActivationTime | ++============+=====+===========+=============+======================+================+======================+ +| CUSTOMER_1 | 0 | OUT | rif:from:tm | danb | PREMIUM | 2012-01-01T00:00:00Z | ++------------+-----+-----------+-------------+----------------------+----------------+----------------------+ +| CUSTOMER_1 | 0 | OUT | rif:from:tm | danb | STANDARD | 2012-02-28T00:00:00Z | ++------------+-----+-----------+-------------+----------------------+----------------+----------------------+ + ++ Tenant + Ceva text explicativ. ++ TOR ++ Direction ++ Subject ++ RatesFallbackSubject ++ RatesTimingTag ++ ActivationTime + +Rates timings +------------- + ++----------+----------------+--------------+ +| Tag | RatesTag | TimingTag | ++==========+================+==============+ +| STANDARD | RT_STANDARD | WORKDAYS_00 | ++----------+----------------+--------------+ +| STANDARD | RT_STD_WEEKEND | WORKDAYS_18 | ++----------+----------------+--------------+ + ++ Tag + A string by witch this timing will be referenced in other places by. ++ RatesTag ++ TimingTag + +Rates +----- + ++---------------------+-----------------+------------+-------+-------------+--------+ +| Tag | DestinationsTag | ConnectFee | Price | BillingUnit | Weight | ++=====================+=================+============+=======+=============+========+ +| RT_STANDARD | GERMANY | 0 | 0.2 | 1 | 10 | ++---------------------+-----------------+------------+-------+-------------+--------+ +| RT_STANDARD | GERMANY_O2 | 0 | 0.1 | 1 | 10 | ++---------------------+-----------------+------------+-------+-------------+--------+ + + ++ Tag + A string by witch this rate will be referenced in other places by. ++ DestinationsTag ++ ConnectFee ++ Price ++ BillingUnit ++ Weight + +Destinations +------------ + +The destinations are binding together various prefixes / caller ids to define a logical destination group. A prefix can appear in multiple destination groups. + ++------------+-------+ +| Tag | Prefix| ++============+=======+ +| GERMANY | 49 | ++------------+-------+ +| GERMANY_O2 | 49176 | ++------------+-------+ + ++ Tag + A string by witch this destination will be referenced in other places by. ++ Prefix + The prefix or caller id to be added to the specified destination. + +Timings +------- + ++-------------+--------+-----------+-----------+----------+ +| Tag | Months | MonthDays | WeekDays | StartTime| ++=============+========+===========+===========+==========+ +| WORKDAYS_00 | *all | *all | 1;2;3;4;5 | 00:00:00 | ++-------------+--------+-----------+-----------+----------+ +| WORKDAYS_18 | *all | *all | 1;2;3;4;5 | 18:00:00 | ++-------------+--------+-----------+-----------+----------+ + ++ Tag + A string by witch this timing will be referenced in other places by. ++ Months ++ MonthDays ++ WeekDays ++ StartTime + +Account actions +--------------- + ++------------+---------+-----------+------------------+------------------+ +|Tenant | Account | Direction | ActionTimingsTag | ActionTriggersTag| ++============+=========+===========+==================+==================+ +| CUSTOMER_1 | rif | OUT | STANDARD_ABO | STANDARD_TRIGGER | ++------------+---------+-----------+------------------+------------------+ +| CUSTOMER_1 | dan | OUT | STANDARD_ABO | STANDARD_TRIGGER | ++------------+---------+-----------+------------------+------------------+ + ++ Tenant ++ Account ++ Direction ++ ActionTimingsTag ++ ActionTriggersTag + +Action triggers +--------------- + ++------------------+------------+----------------+----------------+------------+--------+ +| Tag | BalanceTag | ThresholdValue | DestinationTag | ActionsTag | Weight | ++==================+============+================+================+============+========+ +| STANDARD_TRIGGER | MONETARY | 30 | *all | SOME_1 | 10 | ++------------------+------------+----------------+----------------+------------+--------+ +| STANDARD_TRIGGER | SMS | 30 | *all |SOME_2 | 10 | ++------------------+------------+----------------+----------------+------------+--------+ + ++ Tag + A string by witch this action trigger will be referenced in other places by. ++ BalanceTag ++ ThresholdValue ++ DestinationTag ++ ActionsTag ++ Weight + +Action timings +-------------- + ++--------------+------------+------------------+--------+ +| Tag | ActionsTag | TimingTag | Weight | ++==============+============+==================+========+ +| STANDARD_ABO | SOME | WEEKLY_SAME_TIME | 10 | ++--------------+------------+------------------+--------+ +| STANDARD_ABO | SOME | WEEKLY_SAME_TIME | 10 | ++--------------+------------+------------------+--------+ + ++ Tag + A string by witch this action timing will be referenced in other places by. ++ ActionsTag ++ TimingTag ++ Weight + +Actions +------- + ++--------+-------------+------------+-------+----------------+-----------+------------+---------------+--------+ +| Tag | Action | BalanceTag | Units | DestinationTag | PriceType | PriceValue | MinutesWeight | Weight | ++========+=============+============+=======+================+===========+============+===============+========+ +| SOME | TOPUP_RESET | MONETARY | 10 | *all | | 10 | ++--------+-------------+------------+-------+----------------+-----------+------------+---------------+--------+ +| SOME_1 | DEBIT | MINUTES | 10 | GERMANY_O2 | PERCENT | 25 | 10 | 10 | ++--------+-------------+------------+-------+----------------+-----------+------------+---------------+--------+ + ++ Tag + A string by witch this action will be referenced in other places by. ++ Action ++ BalanceTag ++ Units ++ DestinationTag ++ PriceType ++ PriceValue ++ MinutesWeight ++ Weight diff --git a/docs/index.rst b/docs/index.rst index 36dc5f468..cf0519724 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -12,8 +12,9 @@ Contents: :maxdepth: 2 intro + importing tutorial - apicalls + apicalls arhitecture diff --git a/docs/intro.rst b/docs/intro.rst index 43896f431..f33e377ed 100644 --- a/docs/intro.rst +++ b/docs/intro.rst @@ -4,11 +4,23 @@ CGRateS is a very fast and easy scalable rating engine targeted especially for t It is written in go (http://golang.net) and accessible from any language via JSON RPC. The code is well documented (go doc compliant API docs) and heavily tested. -Supported databases: kyoto_ cabinet, redis_, mongodb_. +After testing various databases like Kyoto_ cabinet, Redis_ or Mongodb_, the project focused on Redis as it delivers the best trade-off between speed, configuration and scalability. .. _kyoto: http://fallabs.com/kyotocabinet -.. _redis: http://redis.io -.. _mongodb: http://www.mongodb.org +.. _Redis: http://redis.io +.. _Mongodb: http://www.mongodb.org + +Here are some of the configurations in which CGRateS can operate: + +.. image:: images/Simple.png +If the network does not require more than one rater to handle the calls. The balancer can be left out and the rater can be queried directly. In this case the rater must be started with -standalone=true and -freeswitch=true options. + +.. image:: images/Normal.png +While the network grows more raters can be thrown into the stack to offer more requests per seconds workload. This implies the usage of the balancer to distribute the requests to the raters running on the different machines. + +.. image:: images/Complicated.png +Of course more session managers can serve multiple call switches and all of them are connected to the same balancer. We are planning to support multiple balancers for huge networks if the need arises. + Features -------- diff --git a/docs/tutorial.rst b/docs/tutorial.rst index 993e7ad9e..c6e57e8b8 100644 --- a/docs/tutorial.rst +++ b/docs/tutorial.rst @@ -10,10 +10,6 @@ The general steps to get up and running with CGRateS are: #. Start one ore more raters. #. Make API calls to the balancer/rater. -.. image:: images/general.png - -If the network does not require more than one rater to handle the calls. The balancer can be left out and the rater can be queried directly. In this case the rater must be started with --json=true option to instruct the application to offer the JSON-RPC interface. - CallDescriptor structure ------------------------ - TOR int @@ -62,10 +58,9 @@ Instalation After the go environment is installed_ and setup_ just issue the following commands: :: - go get github.com/rif/cgrates/cmd/cgr-rater - go get github.com/rif/cgrates/cmd/cgr-balancer - go get github.com/rif/cgrates/cmd/cgr-loader - go get github.com/rif/cgrates/cmd/cgr-console + go get github.com/cgrate/cgrates + +This will install the sources and compile all available tools After that navigate @@ -91,7 +86,7 @@ cgr-balancer cgr-rater The cgr-rater can be provided with the balancer server address and can be configured to listen to a specific interface and port. :: - + rif@grace:~$ cgr-rater --help Usage of cgr-rater: -balancer="127.0.0.1:2000": balancer address host:port @@ -101,7 +96,7 @@ cgr-rater cgr-console The cgr-console is a command line tool used to access the balancer (or the rater directly) to call all the API methods offered by CGRateS. :: - + rif@grace:~$ cgr-console --help Usage of cgr-console: -amount=100: Amount for different operations @@ -151,173 +146,3 @@ cgr-loader .. _data-importing: -Data importing --------------- -**Activation periods** -:: - {"TOR": 0,"CstmId":"vdf","Subject":"rif","DestinationPrefix":"0257", "ActivationPeriods": [ - {"ActivationTime": "2012-01-01T00:00:00Z", "Intervals": [ - {"BillingUnit":1,"ConnectFee":0,"Month":0,"MonthDay":0,"Ponder":0,"Price":0.1, - "StartTime":"18:00:00","EndTime":"","WeekDays":[1,2,3,4,5]}, - {"BillingUnit":1,"ConnectFee":0,"Month":0,"MonthDay":0,"Ponder":0,"Price":0.2, - "StartTime":"","EndTime":"18:00:00","WeekDays":[1,2,3,4,5]}, - {"BillingUnit":1,"ConnectFee":0,"Month":0,"MonthDay":0,"Ponder":0,"Price":0.1, - "StartTime":"","EndTime":"","WeekDays":[6,0]} - ] - }, - {"ActivationTime": "2012-02-08T00:00:00Z", "Intervals": [ - {"BillingUnit":60,"ConnectFee":0,"Month":0,"MonthDay":0,"Ponder":0,"Price":10, - "StartTime":"","EndTime":"18:00:00","WeekDays":[1,2,3,4,5]}, - {"BillingUnit":60,"ConnectFee":0,"Month":0,"MonthDay":0,"Ponder":0,"Price":1, - "StartTime":"18:00:00","EndTime":"","WeekDays":[1,2,3,4,5]}, - {"BillingUnit":60,"ConnectFee":0,"Month":0,"MonthDay":0,"Ponder":0,"Price":1, - "StartTime":"","EndTime":"","WeekDays":[6,0]} - ] - } - ] - } - -The above snippet describes prices for subject "rif" and destination "0257". There are two activation periods, the first one is active starting 2012-01-01 and the second one starting from 2012-02-08. Each define multiple intervals with different prices for various time periods. - -Parameters: - -TOR - Type Of Service. For future extensions. -CstmId - Customer Id. Used for multi tenant databases. -Subject - The code that uniquely identifies a user. -DestinationPrefix - The destination network number. For speed reasons we are not using here the below described destinations. We are trading memory space for speed. -ActivationPeriods - A list of one ore more price descriptive periods. These periods must be contiguous and non overlapping. -ActivationTime - The time when current period becomes active. -Intervals - A list of price intervals intervals -Month - The month for this interval. Zero value means all months. -MonthDay - The day of the month for this interval. Zero value means all month days. -WeekDays - A list with the days of the week for this interval. An empty list means all week days. -StartTime, EndTime - The start and end hours in a day for this interval. Zero value means from/to start/end of the day. -Ponder - Used to set the priority of the interval in relation with other applicable intervals. -ConnectFee - The connection price for this interval. -Price - The unit price for this interval. -BillingUnit - The billing unit for this interval (in seconds). Value can be below one up to nanoseconds. - - -**Destinations** -:: - {"Id":"nationale", "Prefixes":["0256","0257","0723","0740"]}, - {"Id":"retea", "Prefixes":["0723","0724"]}, - {"Id":"mobil", "Prefixes":["0723","0740"]}, - {"Id":"radu", "Prefixes":["0723045326"]} - -Destinations are list of prefixes that together define a destination. These destinations are used for definition of minute buckets. - -Parameters: - -Id - The Id of this destination. Can be anything (letters and/or numbers). -Prefixes - List with destination's prefixes. A prefix can appear in more than one destination. - -**Tariff plans** -:: - {"Id":"dimineata","SmsCredit":100,"ReceivedCallsSecondsLimit": 100, - "RecivedCallBonus" : {"Credit": 100}, - "MinuteBuckets": - [{"Seconds":100,"Priority":10,"Price":0.01,"DestinationId":"nationale"}, - {"Seconds":1000,"Priority":20,"Price":0,"DestinationId":"retea"}], - "VolumeDiscountThresholds": - [{"Volume": 100, "Discount": 10}, - {"Volume": 500, "Discount": 15}, - {"Volume": 1000, "Discount": 20}] - } - -Tariff plans define the free quotas for network users. These amount are refilling the user budgets at specified intervals. - -Parameters: - -Id - An Id for this tariff plan. Can be anything (letters and/or numbers). -SmsCredit - The available free number of SMS. -Traffic - The available free amount of traffic. -ReceivedCallSecondsLimit - The threshold for receiving the incoming call volume bonus. When the user will receive this amount of incoming call seconds he/she will get the below described bonus. -RecivedCallBonus - The bonus that will be awarded when the incoming calls amount of seconds is reached. It can be one ore more of the following entities: Credit, SmsCredit, Traffic, MinuteBucket (an amount of free / cheaper seconds to a specific destination). -MinuteBuckets - A list of available special minutes for specific destinations. Each bucket can specify the available number of Seconds for a specific destination. It can also specify a priority Priority to establish the order of the bucket usage and a Price if he minutes are not free (but cheaper). -VolumeDiscountThresholds - A list threshold for placed calls volume discounts. Each threshold specifies a Volume and a Discount discount percentage. - - -**User budgets** -:: - {"Id":"broker","Credit":0,"SmsCredit":0,"Traffic":0,"VolumeDiscountSeconds":0, - "ReceivedCallSeconds":0,"ResetDayOfTheMonth":10,"TariffPlanId":"seara","MinuteBuckets": - [{"Seconds":10,"Priority":10,"Price":0.01,"DestinationId":"nationale"}, - {"Seconds":100,"Priority":20,"Price":0,"DestinationId":"retea"}] - } - -User budget describes the amount of various free quotas for every client of the network. It contains the entities from the tariff plan plus more items to track user status. - -Parameters: - -Id - The Id uniquely identifies the client. -Credit - The amount of the available credit for prepaid or the total cost for postpaid. -SmsCredit - The number of available free SMS. -Traffic - The amount of available free Internet traffic. -VolumeDiscountSeconds - The accumulated number of placed call seconds to be used for volume discounts. -ReceivedCallSeconds - The accumulated amount of received call seconds to be used for received call bonus. -ResetDayOfTheMonth - The day of the month when the free quotas will be refiled. -TariffPlanId - The Id of the client's tariff plan. This is used to refill the free quotas -MinuteBuckets - A list of buckets containing the available seconds to various destinations. - - -Database selection -------------------- - -**Kyoto cabinet** - -Pros: - - super fast (the in memory data is accessed directly by the rater processes) - - easy backup -Cons: - - harder to synchronize different raters - -**Redis** - -Pros: - - easy configuration - - easy master-server configuration -Cons: - - slower than kyoto - - less features than mongodb - -**MongoDB** - -Pros: - - most features - - most advanced clustering options -Cons: - - slowest of the three