Each CDR log file can be broken down into the following parts:
Protobuf overhead - a small amount of type information about contained records.
A header section - a small amount of data written by the CDR RA including version, host, and timestamp information.
Zero or more AVP CDRs - these records will vary in individual size, and usually form the majority of a CDR log.
A footer - this is empty for Sentinel products.
The combined size of the header, footer, and protobuf overhead is normally trivial (<1KB) compared to the size of each finished CDR log file.
Individual CDR records will vary in size based on dynamic content such as hostnames, Sentinel selection key names, SDP content, and other similarly variable character data. As such, it is not possible to provide exact sizing for a given system without examining the CDR logs written while under a test load, but some approximations can be made.
A basic CDR record containing the information normally written by Sentinel will be on the order of 2000-3000 bytes. With this in mind, the following sections provide rough estimates regarding how much storage would be required for specific scenarios.
If Sentinel is configured to write Session CDRs (i.e. not writing Interim CDRs), then each session will write a single CDR on the order of 2000-3000 bytes.
This section documents the storage requirements for the AVP CDRs written by the CDR RA when Sentinel is configured to output Interim CDRs.
This scenario involves writing CDRs for a single leg of a two party call.
Assuming a Start and End CDR are always written for the call, and assuming an average CDR size of 2500 bytes, each call will require a minimum of 5000 bytes. In addition, the Interim CDR feature can be configured to write CDRs periodically as a call progresses, or in response to SDP changes. Each of these events will produce additional records.
Taking these additional timer driven and SDP driven records into account, a rough approximation of the CDR storage requirements can be made with a formula such as:
2500 * Sessions Per Second * (2 + (Average SDP Driven CDRs Per Session) + (Average Timer Driven Interim CDRs Per Session))
It isn’t possible to use average call length when calculating storage requirements for timer driven CDRs as the number of timer driven CDRs written per call is sensitive to actual rather than average call length.
With the guideline above, we can perform approximations based on an example scenario:
No SDP changes outside of initial call setup.
95% of calls last under the default Interim CDR timer threshold (5 minutes by default).
5% of calls last for 59 minutes and trigger numerous timer driven Interim CDRs during that period. With a 5 minute interim CDR timer, this will mean 11 timer driven interim CDRs.
The overall system is running at 100 session per second.
Using the above, we can assume that the average number of interim timer CDRs per call is
0.05 * 11, or
0.55 per session. This results in an estimated storage requirement per second of:
2500 * 100 * (2 + 0 + 0.55) = 637500 bytes / second
or 2189MB / hour