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, and for legacy format support in Sentinel SIP (as non-default).

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;

}

Sentinel SIP Service

By default the Sentinel SIP Service uses the AVP CDR Format.

Sentinel SIP can be configured to use the legacy format. This format is defined as follows:

package com.opencloud.sentinel.cdr;

import "com/opencloud/sentinel/cdr/base-cdr-types.proto";

// SIP CDR

message SipCdr {

    optional string subscriber = 1;
    optional Time sessionInitiated = 2;
    optional Time sessionEstablished = 3;
    optional Time sessionEnded = 4;
    optional CallType callType = 5;
    optional string callingPartyAddress = 6;
    optional string calledPartyAddress = 7;
    optional string callId = 8;
    optional sint32 chargingResult = 9 [default = -1];
    optional int64 cumulativeReported = 10;
    repeated int32 ocsLatencySamples = 12 [packed=true];
    repeated int32 announcementIDs = 13;
    optional SipServiceType serviceType = 14 [default = Unknown];
    optional SentinelError sentinelError = 15 [default = None];
    optional int32 endSessionCause = 16;
    optional int32 ocsSessionTerminationCause = 17;

    optional string sentinelSelectionKey = 18;

    repeated string ocsSessionIDs = 19;

    repeated CDRChargingInstance chargingInstances = 21;

    optional string eventId = 22;

    extensions 50 to max;

    enum CallType {
        MOC = 1;
        MOC_3RDPTY = 2;
        MTC = 3;
        MFC = 4;
        EMERGENCY_CALL = 9;
    }

    enum SipServiceType {
        Unknown = 1;
        SipCall = 2;
        Subscription = 3;
        Message = 5;
    }

    message CDRChargingInstance {
        required string name = 1;

        repeated CDRSessionCounter sessionCounter = 2;
    }

    message CDRSessionCounter {
        required SessionCounterAddress address = 1;
        optional int64 reportedUsed = 2;
        optional int64 pendingRequested = 3;
        optional int64 cumulativeSentUsed = 4;
        optional int64 cumulativeCommittedUsed = 5;
        optional int64 cumulativeRequested = 6;
        optional int64 cumulativeGranted = 7;
        optional int64 cumulativeRequestedRefund = 8;
        optional int64 cumulativeGrantedRefund = 9;
        optional Time startTime = 10;
        optional Time endTime = 11;
        optional int64 cumulativeSuspendedDuration = 12;

        extensions 50 to max;

        message SessionCounterAddress {
            repeated AddressEntry entry = 1;

            message AddressEntry {
                required string key = 1;
                required string value = 2;
            }
        }
    }

}
Previous page Next page
Sentinel Express Version 2.7.0