The Legacy CDR format has an on-disk format defined using Google protocol buffers (aka protobuf
).
There is a common "types definition" schema file that is used by multiple Sentinel Services for their CDRs. These types are called "base types". Each Sentinel Service then defines its own CDRs using these types and defining its own types.
Base types
The base types are used in CDRs for Sentinel SS7, Sentinel Diameter Mediation.
package com.opencloud.sentinel.cdr; message CdrSessionCounters { repeated CdrSessionCounterAccess counters = 1; } message CdrSessionCounterAccess { required string subscriberId = 1; required string bucketName = 2; optional int64 cumulativeRequestedUnits = 3; optional int64 cumulativeGrantedUnits = 4; optional int64 cumulativeSentUsedUnits = 5; optional int64 cumulativeCommittedUsedUnits = 6; optional int64 cumulativeRequestedRefundUnits = 7; optional int64 cumulativeGrantedRefundUnits = 8; repeated CdrSessionSubCounterAccess subCounters = 9; } message CdrSessionSubCounterAccess { required string subCounterId = 1; optional int64 cumulativeRequestedUnits = 3; optional int64 cumulativeGrantedUnits = 4; optional int64 cumulativeSentUsedUnits = 5; optional int64 cumulativeCommittedUsedUnits = 6; optional int64 cumulativeRequestedRefundUnits = 7; optional int64 cumulativeGrantedRefundUnits = 8; repeated CdrSessionSubCounterAccess subCounters = 9; } message Time { required int64 milliseconds_since_epoch = 1; required sint32 zoneoffset_minutes = 2; } enum SentinelError { None = 1; OcsTimeout = 2; OcsCommunicationFailure = 3; SentinelOverload = 4; ProtocolError = 5; InternalError = 6; MappingError = 7; OtherError = 8; }
Sentinel SS7 Service CDR format
The Sentinel SS7 service defines two CDR formats, one for CAP calls, and the other for CAP3 SMS.
CAP Calls
CAP call use the following format for its CDR files (out of the box).
package com.opencloud.sentinel.cdr; import "com/opencloud/sentinel/cdr/base-cdr-types.proto"; // SS7 Call CDR message Ss7CallCdr { optional string subscriber = 1; optional int32 initiatingDialogId = 2 [default = -1]; optional Time eventInitiated = 3; optional Time sessionInitiated = 4; optional Time sessionEstablished = 5; optional Time sessionEnded = 6; optional CallType callType = 7; optional string callingPartyNumber = 8; optional string calledPartyNumber = 9; optional string mscNumber = 10; optional int32 serviceKey = 11 [default = -1]; optional ConnectCause connectCause = 12; optional int32 releaseCause = 13; optional sint32 chargingResult = 14 [default = -1]; optional int64 cumulativeReported = 15; optional CdrSessionCounters sessionCounters = 21; repeated int32 ocsLatencySamples = 23 [packed=true]; repeated int32 announcementIDs = 25; optional int64 callReferenceNumber = 26; optional sint32 bearerService = 27 [default = -1]; optional sint32 teleService = 28 [default = -1]; optional ServiceType serviceType = 29 [default = Unknown]; optional SentinelError sentinelError = 30 [default = None]; optional string sentinelSelectionKey = 31; repeated string ocsSessionIDs = 32; repeated CallInformationReport callInformationReports = 33; optional bool creditHasBeenReauthorized = 34; optional int32 ocsSessionTerminationCause = 35; extensions 50 to max; enum CallType { MOC = 1; MOC_3RDPTY = 2; MTC = 3; MFC = 4; MOSMS = 5; MTSMS = 6; GPRS = 7; ACCOUNT_INQUIRY = 8; EMERGENCY_CALL = 9; } enum ServiceType { Unknown = 1; Voice = 2; Data = 3; Fax = 4; Video = 5; } enum ConnectCause { UnknownCause = 1; APartyAbandoned = 2; NoAnswer = 4; UserBusy = 5; RouteSelectFailure = 6; Answer = 7; Abort = 8; Error = 9; } message CallInformationReport { optional int32 legId = 1; optional int32 callAttemptElapsedTime = 2; optional int32 callConnectedElapsedTime = 3; optional Time callStopTime = 4; optional int32 releaseCause = 5; } }
CAP3 SMS
CAP3 SMS support ses the following format for its CDR files (out of the box).
package com.opencloud.sentinel.cdr; import "com/opencloud/sentinel/cdr/base-cdr-types.proto"; // SS7 SMS CDR message Ss7SmsCdr { optional string subscriber = 1; optional int32 initiatingDialogId = 2 [default = -1]; optional Time eventInitiated = 3; optional Time sessionInitiated = 4; optional Time sessionEstablished = 5; optional Time sessionEnded = 6; optional SmsType callType = 7; optional string callingPartyNumber = 8; optional string calledPartyNumber = 9; optional string mscNumber = 10; optional int32 serviceKey = 11 [default = -1]; optional int32 releaseCause = 13; optional sint32 chargingResult = 14 [default = -1]; optional int64 cumulativeReported = 15; optional CdrSessionCounters sessionCounters = 21; repeated int32 ocsLatencySamples = 23 [packed=true]; optional int64 smsReferenceNumber = 26; optional SentinelError sentinelError = 30 [default = None]; optional string sentinelSelectionKey = 31; repeated string ocsSessionIDs = 32; optional int32 ocsSessionTerminationCause = 35; extensions 50 to max; enum SmsType { MOSMS = 1; MTSMS = 2; } }
Sentinel Diameter Mediation Service CDR format
The Sentinel Diameter Mediation service defines a CDR format.
package com.opencloud.sentinel.cdr; import "com/opencloud/sentinel/cdr/base-cdr-types.proto"; // Diameter Service CDR message DiameterChargingCdr { optional string subscriber = 1; optional int64 initiatingRequestId = 2 [default = -1]; optional Time eventInitiated = 3; optional Time sessionInitiated = 4; optional Time sessionEnded = 5; optional CdrSessionCounters sessionCounters = 6; repeated int32 ocsLatencySamples = 19 [packed=true]; optional string clientSessionId = 20; repeated string ocsSessionIDs = 21; optional string sentinelSelectionKey = 22; extensions 50 to max; }