CDF Integration

Project Clearwater deployments include a cluster of Dime nodes running Ralf. The nodes provide an HTTP interface to Sprout and Bono on which they can report billable events. Ralf then acts as a CTF (Charging Triggering Function) and may pass these events on to a configured CDF (Charging Data Function) over the Rf interface.

By default, having spun up a Clearwater deployment, either manually or through the automated Chef install process, your deployment is not configured with a CDF and thus will not generate billing records. This document describes how the CDF is chosen and used and how to integrate your Project Clearwater deployment with a CDF and thus enable Rf billing.

How it works

When Sprout or Bono have handled an item of work for a given subscriber, they generate a record of that work and transmit it to the Dime cluster for billing to the CDF. This record will be used by Ralf to generate an Rf billing ACR (Accounting-Request) message.

To determine which CDF to send the ACR to, the node acting as the P-CSCF/IBCF is responsible for adding a P-Charging-Function-Addresses header to all SIP messages it proxies into the core. This header contains a prioritised list of CDFs to send ACRs to.

Bono supports adding this header when acting as either a P-CSCF or IBCF and configuring the contents of this header is the only requirement for enabling Rf billing in your deployment.

How to enable it

This section discusses how to enable Rf billing to a given CDF.

Before you begin

Before connecting your deployment to a CDF, you must

  • install Clearwater
  • install an external CDF - details for this will vary depending on which CDF you are using.
  • ensure your CDF’s firewall allows incoming connections from the nodes in the Dime cluster on the DIAMETER port (default 3868).

Setting up DNS

Ralf implements the behavior specified in RFC3588 to locate and connect to the billing realm. This requires either:

  • The DIAMETER realm resolves to a NAPTR record which returns an AAA+D2T entry which in turn resolves to SRV/A records which finally resolve to IPv4 addresses of reachable nodes in the realm.
  • The DIAMETER realm resolves to a collection of A records which directly resolve to reachable nodes in the realm.

Configuring the billing realm

To point Ralf at the billing DIAMETER realm, add the following line to shared_config and follow this process to apply the change

billing_realm=<DIAMETER billing realm>

Selecting a specific CDF in the realm

Note: Bono only has support for selecting CDF identities based of static configuration of a single identity. Other P-CSCFs may have support for load-balancing or enabling backup CDF identities.

If you have a CDF set up to receive Rf billing messages from your deployment, you will need to modify the shared_config file and follow this process to apply the change:

cdf_identity=<CDF DIAMETER Identity>


The very first release of Ralf, from the Counter-Strike release of Project Clearwater, does not generate Rf billing messages since the related changes to Sprout and Bono (to report billable events) were not enabled. This version was released to allow systems integrators to get a head start on spinning up and configuring Ralf nodes rather than having to wait for the next release.