navigation

Introduction

This Technical Guide describes the installation and configuration of the components included in the N-Squared Interworking Function (N2IWF) platform.

This package adds IWF runtime functionality to N2SVCD LogicApp implementations to function as:

  1. An out-of-the-box Diameter signalling gateway with additional enrichment features.
  2. A Diameter -> Diameter interworking function (proxy) with hook support for manipulating Diameter requests between a source and destination Diameter endpoint.

It does not provide any applications of its own.

When run as a Diameter signalling gateway the N2IWF Application is responsible for handling CAMEL, INAP, or SIP charged session control under the direction of a Diameter-capable Online Charging Server (OCS). For interaction with the telephony network, various applications in the N2SVCD, N2SCP, and/or N2SIP frameworks are used.

When run as a Diameter -> Diameter interworking function, the N2SVCD DiameterApp is used to receive and send Diameter messages, with the IWF used for AVP manipulation.

Refer to the appropriate documentation for general principles regarding these base components. The N2IWF documentation only describes its own delivered additional components.

N2IWF Packages

The N2IWF is delivered in a single package, n2iwf-svc, that provides run-time handling.

Refer to the installation instructions for the details of this package.

Signalling Gateway State Model

The N2IWF supports a complex state model for received traffic:

N2IWF state model

Under this model:

  1. The N2IWF configuration is loaded. The first invocation of the N2IWF will cause this to be read and parsed, storing it for future sessions to use.
  2. Initialise the N2IWF state and service context.
  3. Initialise the relevant protocol handler to read the input context and populate the service context.
  4. Populate any defined N2SVCD rule engine variables.
  5. Perform any configured external actions and record their results.
  6. Populate any mutable variable values again in case any refer to information only available after external actions. Determine the values, if any, to use for Rating-Group, Service-Identifier, and Service-Context-Id. Perform any applicable destination translation.
  7. Check if pre-rating applies and continue only if configured to do so.
  8. Construct initial Diameter request and send it to the OCS.
  9. Parse the initial Diameter response from the OCS.
  10. Determine the appropriate Result-Code action rule that matches the response received.
  11. Apply the action rule determined using the .
  12. For the SCUR charging model, wait for any interim messaging and send/receive interim Diameter request/response messages as required, using the N2SVCD rule engine to find the appropriate action rule that matches the response received and asking the protocol handler to apply it.
  13. For the ECUR and SCUR charging models, wait for any final messaging and send/receive interim Diameter request/response messages as required to close the OCS session and asking the protocol handler to close the interaction.
  14. Check if post-rating handling applies and perform any core or protocol-specific post-rating actions. If no follow-on is configured, the protocol handler will close the interaction.
  15. If an error occurs at any time, perform configured error-handling actions.

At various points, custom Lua hooks may can be used for bespoke functional requirements.