DCA Coredumps when Multiple-Services-Credit-Control (via Multiple-Services-Indicator (AVP 455)) Is Used. (Doc ID 1328206.1)

Last updated on APRIL 22, 2012

Applies to:

Oracle Communications Network Charging and Control - Version 3.2.0 to 4.3.0 [Release 3.2.0 to 4.3]
Information in this document applies to any platform.

Symptoms

Context

RFC4006 describes Diameter Credit-Control application, which is used by NCC product called DCA (in server mode).
The current document explains issues DCA is facing when using Multiple-Services-Credit-Control features.

Extract from RFC4006 (Section 5.1.2.  Credit-Control for Multiple Services within a (sub-)Session):

When multiple services are used within the same user session and each service or group of services is subject to different cost, it is necessary to perform credit-control for each service independently.
Making use of credit-control sub-sessions to achieve independent credit-control will result in increased signaling load and usage of resources in both the credit-control client and the credit-control server.
For instance, during one network access session the end user may use several http-services subject to different access cost.

 

Symptoms

Data session charging with DCA (1.0.4.0) is core dumping (SEGFAULT) when receiving an INITIAL_REQUEST CCR from GGSN which is including a Multiple-Services-Indicator (AVP 455).

CCR example:

Diameter Protocol
    Version: 0x01
    Length: 296
    Flags: 0x80
    Command Code: 272 Credit-Control
    ApplicationId: 4
    Hop-by-Hop Identifier: 0x42d3e407
    End-to-End Identifier: 0x42d3e407
    AVP: Session-Id(263) l=33 f=-M- val=customer01;0;5867931
    AVP: Origin-Host(264) l=23 f=-M- val=customer01
    AVP: Origin-Realm(296) l=19 f=-M- val=customer.com
    AVP: Auth-Application-Id(258) l=12 f=-M- val=Diameter Credit Control (4)
    AVP: CC-Request-Type(416) l=12 f=-M- val=INITIAL_REQUEST (1)
    AVP: CC-Request-Number(415) l=12 f=-M- val=0
    AVP: Service-Context-Id(461) l=21 f=-M- val=Cisco_3gpp_Gy
    AVP: Called-Station-Id(30) l=23 f=-M- val=6973702E706F7374666F6E652E6965
    AVP: User-Name(1) l=8 f=-M-
    AVP: Event-Timestamp(55) l=12 f=-M- val=May 12, 2011 11:04:58.0000 UTC
    AVP: Destination-Realm(283) l=29 f=-M- val=realm.oracle.com
    AVP: Subscription-Id(443) l=40 f=-M-
    AVP: Multiple-Services-Indicator(455) l=12 f=-M- val=MULTIPLE_SERVICES_SUPPORTED (1)
    AVP: Requested-Service-Unit(437) l=8 f=-M-



DCA log file shows a Granted-Service-Unit AVP is set up in the response/answer (State:storeGrantedServiceUnits()).
A bit later, in the SessionDelegator when handling the response, the ServiceTransaction::addGenericAnswer() method is invoked:

2011/05/12 11:04:59                  State.cc   440 [2075] diameterControlAgent   Creating Granted-Service-Unit AVP
2011/05/12 11:04:59          GenericAnswer.cc   119 [2075] diameterControlAgent    GenericAnswer::setResultCode: 2001
2011/05/12 11:04:59                  State.cc   471 [2075] diameterControlAgent    recent GrantedUnits = 3072000
2011/05/12 11:04:59                  State.cc   484 [2075] diameterControlAgent    Configured Volume Quota = 0%
2011/05/12 11:04:59                  State.cc   486 [2075] diameterControlAgent    Setting Volume Quota Threshold to 0
2011/05/12 11:04:59                  State.cc   339 [2075] diameterControlAgent   State::recordDiameterAnswer()
2011/05/12 11:04:59                  State.cc   356 [2075] diameterControlAgent    State::recordDiameterAnswer: MSCC service, based on Rating-Group
2011/05/12 11:04:59            smsStatsHash.c   612 [2075]                 misc    dt_find: AppID = 'DCA', StatID = 'MSCC_INITIAL_REQUESTS_ANSWERED', StatInfo = 'customer.com,Rating-Group=0'
2011/05/12 11:04:59            smsStatsHash.c   682 [2075]                 misc    dt_find: Entry not found
2011/05/12 11:04:59            smsStatsHash.c   612 [2075]                 misc    dt_find: AppID = 'DCA', StatID = 'MSCC_INITIAL_REQUESTS_ANSWERED', StatInfo = 'customer.com,Rating-Group=0'
2011/05/12 11:04:59            smsStatsHash.c   682 [2075]                 misc    dt_find: Entry not found
2011/05/12 11:04:59            smsStatsHash.c   773 [2075]                 misc    dt_add: AppID = 'DCA', StatID = 'MSCC_INITIAL_REQUESTS_ANSWERED', StatInfo = 'customer.com,Rating-Group=0'
2011/05/12 11:04:59            smsStatsHash.c   135 [2075]                 misc    htFindEntryPos: No match for entry (possible searched chain)
May 12 11:04:59.933852 diameterControlAgent(2075) NOTICE: dt_add: Parent statistic 'DCA.MSCC_INITIAL_REQUESTS_ANSWERED' does not exist
2011/05/12 11:04:59          GenericAnswer.cc   279 [2075] diameterControlAgent    GenericAnswer::setTcc: Setting tcc as 86400
2011/05/12 11:04:59       SessionDelegator.cc   858 [2075] diameterControlAgent  SessionDelegator::handleTcapPrimitive: Response is available
2011/05/12 11:04:59       SessionDelegator.cc   400 [2075] diameterControlAgent  bool dca::SessionDelegator::handleResponse(dca::ServiceTransaction*, dca::GenericAnswer&, bool)
2011/05/12 11:04:59     ServiceTransaction.cc   549 [2075] diameterControlAgent   void dca::ServiceTransaction::addGenericAnswer(dca::GenericAnswer*)
2011/05/12 11:04:59     ServiceTransaction.cc   193 [2075] diameterControlAgent    void dca::ServiceTransaction::setGrantedServiceUnit(const diameter::granted_service_unit_t&)



There is no specific message indicating the core occurs (except in /var/adm/messages where the watchdog notices a corefile and restart the application). Therefore, next lines in DCA log shows DCA being restarted by watchdog:

2011/05/12 11:05:46           ControlAgent.cc    53 [6583] diameterControlAgent ControlAgent::ControlAgent()
2011/05/12 11:05:46               dcaUtils.cc    22 [6583]      dcaObjectCounts Object of class ControlAgent constructed. There are now 1 instances.
2011/05/12 11:05:46           ControlAgent.cc    63 [6583] diameterControlAgent ControlAgent::mainLoop()
2011/05/12 11:05:46           ControlAgent.cc    64 [6583] diameterControlAgent creating slee api instance
SLEE: Using shared memory offset: 0xc0000000



Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms