The StoreHeaderInfo feature is responsible for extracting information from incoming SIP requests that is relevant for charging purposes. It looks at and records information relevant for charging purposes, specifically from the Contact, Call-ID, P-Charging-Vector, and P-Access-Network headers on SIP requests and responses received from the served user. It records information from the P-Early-Media, Allow, and Contact headers relevant to access transfer procedures. It also records the presence of the OC-Terminating-Domain header.

Details

Name in feature scripts

StoreHeaderInfo

Applicable contexts

SIP service

SAS Support

No

Prerequisite features

Feature execution points

Many, will be triggered once for each SIP request or response received by Sentinel.

Timer usage

N/A

Source Code

This feature’s source code is available in the Sentinel SDK in the sentinel-sip-service-information-modules module pack. It can be viewed by using the create-module command in the SDK with that module pack. This command will prompt you for information needed to create the new modules, once completed the original source for the feature can be found in the new modules.

The module-pack includes the following modules relevant to this feature:

Module Name Description

sentinel-sip-service-information-modules

Group module for all service information features, including the modules listed below.

sentinel-sip-service-information-session-state-library

Contains the session state interface for the feature.

sentinel-sip-store-header-info-feature

Contains the feature itself.

Session state inputs and outputs

Inputs

Name Type Purpose

CallType

Enum

Used when determining if a message was received from the served user.

Outputs

Name Type Description

ChargingIdentifier

String

The Charging Identifier for the served user, extracted from one of a number of possible parameters on the P-Charging-Vector header.

IMSChargingId

String

The IMS Charging Identifier for the served user, taken from the icid-value of the P-Charging-Vector header. May be equal to the ChargingIdentifier.

TerminatingInterOperatorIdentifier

String

The Terminating Inter-Operator Identifier, taken from the term-ioi parameter of the P-Charging-Vector header.

OriginatingInterOperatorIdentifier

String

The Originating Inter-Operator Identifier, taken from the orig-ioi parameter of the P-Charging-Vector header.

IMEI

String

The IMEI, extracted from the Contact header of the incoming message.

UserSessionId

String

The Call-ID for the access leg. Used as User Session Id in Diameter charging.

HeadersByLeg

HeadersByLeg

A map containing header name-value pairs, organized by leg name. eg records the value of the P-Early-Media header on the CalledParty leg.

IsOCTerminatingDomainPresent

boolean

Set to true if a response includes the OC-Terminating-Domain header.

Feature responses

Response Reason

featureHasFinished

feature has finished

Statistics

Name Description

SetAccessNetworkInfo

Counter incremented when the AccessNetworkInfo field is set in session state by the feature.

SetPEarlyMedia

Counter incremented when the P-Early-Media header is found in the message and set in the headersByLeg object in session state.

SetChargingIdentifier

Counter incremented when the ChargingIdentifier field is set in session state by the feature.

SetIMSChargingId

Counter incremented when then IMSChargingId field is set in session state by the feature.

SetTerminatingIOI

Counter incremented when TerminatingInterOperatorIdentifier is set in session state by the feature.

SetOriginatingIOI

Counter incremented when OriginatingInterOperatorIdentifier is set in session state by the feature.

SetIMEI

Counter incremented when IMEI is set in session state by the feature.

SetUserSessionId

Counter incremented when UserSessionId is set in session state by the feature.

Behaviour

The StoreHeaderInfo feature runs whenever a SIP request or response is received by Sentinel. Initially the feature examines which leg the message was received on to determine whether the message came from the served user (i.e. the calling party on the originating instance, and the called party on a terminating instance). If the message was not received from the served user, the feature will not attempt to modify headers related to charging. If the message was received from the served user, the feature will attempt to extract charging information from the message headers as described below. Other headers are examined in all cases, regardless of served leg. Once it has done this, the feature will finish execution.

P-Access-Network-Info Header

If the P-Access-Network-Info header is present on the message, it will be recorded in the headersByLeg session state field. If the active leg already had a value for this header, it will be updated.

Note

3GPP TS 24.229 (Release 8 and later) permits multiple P-Access-Network-Info header values in a message. However for charging purposes, 3GPP TS 32.299 Release 8 only allows a single Access-Network-Information AVP inside the IMS-Information grouped AVP. This discrepancy is corrected in Release 12, but this product targets Release 8 (specifically 8.13.0). So at this time we only read the first P-Access-Network-Info header value and use this in the single Access-Network-Information AVP in the AVP CDR and the final Ro Credit-Control-Request.

P-Charging-Vector Header

If the P-Charging-Vector header is present, then the feature will attempt to extract several pieces of information:

  • The value of the icid-value will be taken and stored in the IMSChargingId session state field.

  • If the term-ioi parameter is present, its value will be taken and stored in the TerminatingInterOperatorIdentifier session state field.

  • If the orig-ioi parameter is present, its value will be taken and stored in the OriginatingInterOperatorIdentifier session state field.

  • If any additional charging identifier parameters are present, one will be taken and stored in the ChargingIdentifier session state field.

    • Any of the following parameters can be used: gcid, dslcid, bcid, itc-id, or ecid.

    • If no additional charging identifiers are found, the icid-value will be used for the ChargingIdentifier.

Contact Header

If there is a +sip.instance parameter on the Contact header of the incoming message, the feature will look at its value and attempt to extract a valid IMEI from it. If an IMEI is found, it will be taken and stored in the IMEI session state field.

Call-ID

The value of the Call-ID header is used as an identifier for the session in Diameter charging. So, the value of this header will be taken and stored in the UserSessionId session state field.

P-Early-Media Header

If the P-Early-Media header is present, the header value will be recorded for the triggering leg in the headersByLeg session state field.

Allow Header

If the Allow header is present, the header values will be recorded for the triggering leg in the headersByLeg session state field. If there are multiple headers, these will all be preserved.

Remote Target

If the incoming message is a target refresh and the Contact header is present, the header value will be recorded for the incoming leg in the headersByLeg session state field.

OC-Terminating-Domain Header

If the OC-Terminating-Domain header is present in a SIP response, the IsOCTerminatingDomainPresent session state flag is set to true.

Previous page Next page
Sentinel Express Version 4.0.0