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 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 VoLTE Version 2.7.0