Call detail record
(add category) |
Songtao xie (Talk | contribs) (→Customer defined CDR records) |
||
(62 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
Call detail records, or CDR for short, are the foundation of subscriber billing activities by telecom service providers. They are data records containing call-related information such as: | Call detail records, or CDR for short, are the foundation of subscriber billing activities by telecom service providers. They are data records containing call-related information such as: | ||
− | * | + | *Incoming Network |
− | * | + | *Outgoing Network |
− | *Calling | + | *Calling number |
− | *Called | + | *Called number |
*Start time | *Start time | ||
*End Time | *End Time | ||
− | + | See this link from more details [http://en.wikipedia.org/wiki/Call_detail_record Wikipedia - Call Retail Record] | |
== TelcoBridges and call detail records == | == TelcoBridges and call detail records == | ||
− | TelcoBridges products support the generation of call detail records. | + | TelcoBridges [[TMG800]], [[TMG3200]] and [[TMG7800]] products support the generation of call detail records in [[Text Call Detail Records (CDR)|text]] format. They also support the ability to export call detail records to a [[RADIUS]] server for accounting purposes. Both methods can be used simultaneously. |
+ | |||
+ | [[Text Call Detail Records (CDR)|Text CDRs ]] are stored locally on the TMG units and must be extracted from the system either manually, or automatically. | ||
+ | |||
+ | If the network supports [[RADIUS]], this method is preferred as each record will be sent in a timely manner to an external database for storage. | ||
+ | |||
+ | [[File:CDR_High-level_drawing v2.bmp]] | ||
+ | |||
+ | == Call Detail Records Generation == | ||
+ | TelcoBridges CDRs are generated on a per-leg bases when the call is answered and when the call is terminated. | ||
+ | |||
+ | In the cases illustrated below: | ||
+ | |||
+ | '''Id''' is a 128 bits unique identifier for all the records of a same call. | ||
+ | * '''h323-conf-id''' for RADIUS and '''@{SessionId}''' for Text CDR | ||
+ | |||
+ | '''Original Id''' is a 128 bits unique identifier used for Call Transfer records. Each call transfer outgoing legs has its own unique '''Id''' with its '''Original Id'' associated call legs (incoming+outgoing). | ||
+ | * '''h323-incoming-conf-id''' for RADIUS and '''@{OriginalSessionId}''' for Text CDR | ||
+ | |||
+ | === Case 1: Call Answered === | ||
+ | [[File:CDR_CallAnswer.jpg|640px]] | ||
+ | |||
+ | === Case 2: Call Unanswered === | ||
+ | [[File:CDR_UnansweredCall.jpg|640px]] | ||
+ | |||
+ | === Case 3: Call Transferred === | ||
+ | [[File:CDR_CallTransferBleg.jpg|640px]] | ||
+ | |||
+ | [[File:CDR_CallTransferCleg.jpg|640px]] | ||
+ | |||
+ | == Text-based Call Detail Records == | ||
+ | [[Text Call Detail Records (CDR)|Text-based call detail records]] | ||
+ | |||
+ | == RADIUS Call Detail Records == | ||
+ | [[RADIUS]] | ||
+ | |||
+ | == Call Detail Records in High Availability (HA) Environment == | ||
+ | The term HA refers to a system equipped with primary and secondary host controllers (i.e. An SBC deployed in a 1+1 configuration, a TMG7800 gateway with redundant controllers or Tmedia gateways deployed in a 1+1 configuration) | ||
+ | |||
+ | * '''Text CDR only''' Mode | ||
+ | ** The active gateway application is storing text-based CDR records on the active host (i.e. non-zero bytes of CDR log file) | ||
+ | ** Each CDR record will only be present either on the primary or on the secondary host | ||
+ | ** The user needs to merge the CDR records from both the primary and secondary hosts to get all the data | ||
+ | * '''RADIUS CDR only''' Mode | ||
+ | ** CDR records will be sent out to the RADIUS server(s) from the gateway application on the active host only | ||
+ | ** No CDR records are stored on the HA system | ||
+ | * '''Text and RADIUS CDR''' Mode | ||
+ | ** CDR records will be sent out to RADIUS server(s) from the gateway application on the active host | ||
+ | ** The active gateway application is also storing text-based CDR records on the active host (i.e. non-zero bytes of CDR log file) | ||
+ | ** Also, each text-based CDR record will only be present either on the primary or on the secondary host | ||
+ | ** The user needs to merge the CDR records from both the primary and secondary hosts to get all the data | ||
+ | * '''RADIUS CDR with text CDR fallback''' Mode | ||
+ | ** If the RADIUS server(s) is(are) in service | ||
+ | *** CDR records will be sent out to the RADIUS server(s) from the gateway application on the active host only | ||
+ | ** If the RADIUS server(s) is(are) out of service | ||
+ | *** The active gateway application is storing text-based CDR records on the active host (i.e. non-zero bytes of CDR log file) | ||
+ | *** Each CDR record will only be present either on the primary or on the secondary host | ||
+ | *** The user needs to merge the CDR records from both the primary and secondary hosts to get all the data | ||
+ | |||
+ | |||
+ | == Customer defined CDR records == | ||
+ | |||
+ | From release 3.1.101.1, The Customer defined CDR records is supported, you can select the SIP generic headers and their parameters as a CDR records used in TextCdr and Radius CDR, look at the list below to see the sip call headers that are not supported by this new feature. And from release 3.1.114.1, you can use the accounting header defined in sip_headers_manipulation.rb | ||
+ | |||
+ | |||
+ | For activating the feature, log on the web portal of SBC and go to Gateway->CDR Options->Use Customer CDR header, enter the CDR records you | ||
+ | want in text-area box "Customer CDR headers settings" with the format like "cdr record"="sip header":"header parameter", for example: | ||
+ | |||
+ | TERM-IOI=P-Charging-Vector:term-ioi | ||
+ | |||
+ | P-CHARGE-INFO=P-CHARGE-INFO:all | ||
+ | |||
+ | This example means that 2 CDR records are needed, one is TERM-IOI and other one is P-CHARGE-INFO. Each line represents a CDR record and lines are separated by a line return. In this example, CDR record TERM-IOI comes from the received SIP header "P-Charging-Vector" and use its param "term-ioi" as the value of CDR record TERM-IOI. For the second line, CDR record is P-CHARGE-INFO and it comes from received SIP header "P-CHARGE-INFO", the parameter "all" means all of the content of sip header "P-CHARGE-INFO" will be used as the value of CDR record P-CHARGE-INFO. If Radius CDR is used, the attribute name will be like Telcob-generic-cdr-nameX (X will be from 1 to 16 , depends on the number of Customer defined CDR records ). | ||
+ | |||
+ | |||
+ | Usage example: | ||
+ | |||
+ | Text CDR: Test='@{TERM-IOI}',PCV='@{P-CHARGE-INFO}' | ||
+ | |||
+ | Radius CDR: Telcob-generic-cdr-name1 TERM-IOI=xxxxxxxxxxxx , Telcob-generic-cdr-name2 P-CHARGE-INFO=xxxxxxxxxxx | ||
+ | |||
+ | Radius server needs to parse the received value like "TERM-IOI=xxxxxxxxxxxx" for attribute "Telcob-generic-cdr-name1" | ||
+ | |||
+ | |||
+ | If you want to use accounting header with this feature, you need to add the accounting header in script sip_headers_manipulation.rb , for example: | ||
+ | def filter_sip_headers_manipulation params | ||
+ | call[:manipulation][:accounting] = {} | ||
+ | call[:manipulation][:accounting]["header1"] = "value1" | ||
+ | call[:manipulation][:accounting]["header2"] = "value2" | ||
+ | end | ||
+ | |||
+ | The header1 and header2 are the accounting headers name you defined for your cdr purpose. After adding them in sip_headers_manipulation.rb, in text-area box "Customer CDR headers settings", you add : | ||
+ | |||
+ | HISTORY-INFO=header1:all | ||
+ | |||
+ | ruri=header2:all | ||
+ | |||
+ | |||
+ | Limitation: | ||
+ | 1. The maximal number of Customer defined CDR records is 16. | ||
− | + | 2. All of sip header in the the following list are not supported by the feature. | |
+ | 3. List of SIP header that are not supported: | ||
+ | Accept | ||
+ | Accept-Contact | ||
+ | Accept-Encoding | ||
+ | Accept-Language | ||
+ | Alert-Info | ||
+ | Allow | ||
+ | Allow-Events | ||
+ | Also | ||
+ | Anonymity | ||
+ | Authentication-Info | ||
+ | Authorization | ||
+ | Call-ID | ||
+ | Call-Info | ||
+ | Contact | ||
+ | Content-Disposition | ||
+ | Content-Encoding | ||
+ | Content-Language | ||
+ | Content-Length | ||
+ | Content-Type | ||
+ | CSeq | ||
+ | Date | ||
+ | Encryption | ||
+ | Error-Info | ||
+ | Event | ||
+ | Expires | ||
+ | From | ||
+ | In-Reply-To | ||
+ | Max-Forwards | ||
+ | MIME-version | ||
+ | Min-Expires | ||
+ | Min-SE | ||
+ | Organization | ||
+ | P-Asserted-Identity | ||
+ | P-Media-Authorization | ||
+ | P-Preferred-Identity | ||
+ | Priority | ||
+ | Privacy | ||
+ | Proxy-Authenticate | ||
+ | Proxy-Authorization | ||
+ | Proxy-Require | ||
+ | RAck | ||
+ | Reason | ||
+ | Record-Route | ||
+ | Refer-To | ||
+ | Referred-By | ||
+ | Reject-Contact | ||
+ | Remote-Party-ID | ||
+ | Replaces | ||
+ | Reply-To | ||
+ | Request-Disposition | ||
+ | Require | ||
+ | Response-Key | ||
+ | Retry-After | ||
+ | Route | ||
+ | RPID-Privacy | ||
+ | RSeq | ||
+ | Security-Client | ||
+ | Security-Server | ||
+ | Security-Verify | ||
+ | Server | ||
+ | Service-Route | ||
+ | Session-Expires | ||
+ | Subject | ||
+ | Subscription-State | ||
+ | Supported | ||
+ | Timestamp | ||
+ | To | ||
+ | Unsupported | ||
+ | User-Agen | ||
+ | Via | ||
+ | Warning | ||
+ | WWW-Authenticate | ||
− | |||
− | |||
− | |||
[[category:Glossary]] | [[category:Glossary]] | ||
[[category:Tmedia_Features]] | [[category:Tmedia_Features]] | ||
+ | [[Category:RevisionV2]] |
Latest revision as of 16:55, 19 February 2021
Call detail records, or CDR for short, are the foundation of subscriber billing activities by telecom service providers. They are data records containing call-related information such as:
- Incoming Network
- Outgoing Network
- Calling number
- Called number
- Start time
- End Time
See this link from more details Wikipedia - Call Retail Record
Contents |
TelcoBridges and call detail records
TelcoBridges TMG800, TMG3200 and TMG7800 products support the generation of call detail records in text format. They also support the ability to export call detail records to a RADIUS server for accounting purposes. Both methods can be used simultaneously.
Text CDRs are stored locally on the TMG units and must be extracted from the system either manually, or automatically.
If the network supports RADIUS, this method is preferred as each record will be sent in a timely manner to an external database for storage.
Call Detail Records Generation
TelcoBridges CDRs are generated on a per-leg bases when the call is answered and when the call is terminated.
In the cases illustrated below:
Id is a 128 bits unique identifier for all the records of a same call.
- h323-conf-id for RADIUS and @{SessionId} for Text CDR
'Original Id is a 128 bits unique identifier used for Call Transfer records. Each call transfer outgoing legs has its own unique Id with its Original Id associated call legs (incoming+outgoing).
- h323-incoming-conf-id for RADIUS and @{OriginalSessionId} for Text CDR
Case 1: Call Answered
Case 2: Call Unanswered
Case 3: Call Transferred
Text-based Call Detail Records
Text-based call detail records
RADIUS Call Detail Records
Call Detail Records in High Availability (HA) Environment
The term HA refers to a system equipped with primary and secondary host controllers (i.e. An SBC deployed in a 1+1 configuration, a TMG7800 gateway with redundant controllers or Tmedia gateways deployed in a 1+1 configuration)
- Text CDR only Mode
- The active gateway application is storing text-based CDR records on the active host (i.e. non-zero bytes of CDR log file)
- Each CDR record will only be present either on the primary or on the secondary host
- The user needs to merge the CDR records from both the primary and secondary hosts to get all the data
- RADIUS CDR only Mode
- CDR records will be sent out to the RADIUS server(s) from the gateway application on the active host only
- No CDR records are stored on the HA system
- Text and RADIUS CDR Mode
- CDR records will be sent out to RADIUS server(s) from the gateway application on the active host
- The active gateway application is also storing text-based CDR records on the active host (i.e. non-zero bytes of CDR log file)
- Also, each text-based CDR record will only be present either on the primary or on the secondary host
- The user needs to merge the CDR records from both the primary and secondary hosts to get all the data
- RADIUS CDR with text CDR fallback Mode
- If the RADIUS server(s) is(are) in service
- CDR records will be sent out to the RADIUS server(s) from the gateway application on the active host only
- If the RADIUS server(s) is(are) out of service
- The active gateway application is storing text-based CDR records on the active host (i.e. non-zero bytes of CDR log file)
- Each CDR record will only be present either on the primary or on the secondary host
- The user needs to merge the CDR records from both the primary and secondary hosts to get all the data
- If the RADIUS server(s) is(are) in service
Customer defined CDR records
From release 3.1.101.1, The Customer defined CDR records is supported, you can select the SIP generic headers and their parameters as a CDR records used in TextCdr and Radius CDR, look at the list below to see the sip call headers that are not supported by this new feature. And from release 3.1.114.1, you can use the accounting header defined in sip_headers_manipulation.rb
For activating the feature, log on the web portal of SBC and go to Gateway->CDR Options->Use Customer CDR header, enter the CDR records you
want in text-area box "Customer CDR headers settings" with the format like "cdr record"="sip header":"header parameter", for example:
TERM-IOI=P-Charging-Vector:term-ioi
P-CHARGE-INFO=P-CHARGE-INFO:all
This example means that 2 CDR records are needed, one is TERM-IOI and other one is P-CHARGE-INFO. Each line represents a CDR record and lines are separated by a line return. In this example, CDR record TERM-IOI comes from the received SIP header "P-Charging-Vector" and use its param "term-ioi" as the value of CDR record TERM-IOI. For the second line, CDR record is P-CHARGE-INFO and it comes from received SIP header "P-CHARGE-INFO", the parameter "all" means all of the content of sip header "P-CHARGE-INFO" will be used as the value of CDR record P-CHARGE-INFO. If Radius CDR is used, the attribute name will be like Telcob-generic-cdr-nameX (X will be from 1 to 16 , depends on the number of Customer defined CDR records ).
Usage example:
Text CDR: Test='@{TERM-IOI}',PCV='@{P-CHARGE-INFO}'
Radius CDR: Telcob-generic-cdr-name1 TERM-IOI=xxxxxxxxxxxx , Telcob-generic-cdr-name2 P-CHARGE-INFO=xxxxxxxxxxx
Radius server needs to parse the received value like "TERM-IOI=xxxxxxxxxxxx" for attribute "Telcob-generic-cdr-name1"
If you want to use accounting header with this feature, you need to add the accounting header in script sip_headers_manipulation.rb , for example:
def filter_sip_headers_manipulation params call[:manipulation][:accounting] = {} call[:manipulation][:accounting]["header1"] = "value1" call[:manipulation][:accounting]["header2"] = "value2" end
The header1 and header2 are the accounting headers name you defined for your cdr purpose. After adding them in sip_headers_manipulation.rb, in text-area box "Customer CDR headers settings", you add :
HISTORY-INFO=header1:all
ruri=header2:all
Limitation:
1. The maximal number of Customer defined CDR records is 16.
2. All of sip header in the the following list are not supported by the feature.
3. List of SIP header that are not supported:
Accept Accept-Contact Accept-Encoding Accept-Language Alert-Info Allow Allow-Events Also Anonymity Authentication-Info Authorization Call-ID Call-Info Contact Content-Disposition Content-Encoding Content-Language Content-Length Content-Type CSeq Date Encryption Error-Info Event Expires From In-Reply-To Max-Forwards MIME-version Min-Expires Min-SE Organization P-Asserted-Identity P-Media-Authorization P-Preferred-Identity Priority Privacy Proxy-Authenticate Proxy-Authorization Proxy-Require RAck Reason Record-Route Refer-To Referred-By Reject-Contact Remote-Party-ID Replaces Reply-To Request-Disposition Require Response-Key Retry-After Route RPID-Privacy RSeq Security-Client Security-Server Security-Verify Server Service-Route Session-Expires Subject Subscription-State Supported Timestamp To Unsupported User-Agen Via Warning WWW-Authenticate