The CDiameterPeer Module (cdp)

Module Documentation

[Overview] [Code Structure] [Configuration and Usage] [Examples]

Author:
Dragos Vingarzan vingarzan -at- fokus dot fraunhofer dot de
Realm routing is integrated - see the example configuration file for a simple usage example.

Todo:
Session support (although not required on the IMS Cx interfaces). Work in progress in the 08_cdp_sessions branch.

Overview

This module is supposed to allow efficient Diameter communication to and from SER. Some parts of the diameter codec are inherited from DISC http://developer.berlios.de/projects/disc/ .

A series of processes are forked:

Code Structure

The SER module exported API can be seen in mod.c. The full Diameter API is in diameter.h and diameter_api.h. IMS specific constants and assigned numbers are defined in diameter_ims.h.

The protocol codec is implemented into diameter_avp.c and diameter_msg.c. The Diameter base protocol state machine is implemented in peerstatemachine.c. peermanager.c takes care of peer administration. Basic transactions are defined in transaction.c.

Configuration and Usage

For exported functions look at cdp_cmds.
For configuration parameters look at cdp_params.

For input configuration file, take a look at configdtd.h for the structure. Here we have an example (not really usable, but you should be able to derive your own):

<?xml version="1.0" encoding="UTF-8"?>
<DiameterPeer 
    FQDN="xcscf.open-ims.test"
    Realm="open-ims.test"
    Vendor_Id="10415"
    Product_Name="CDiameterPeer"
    AcceptUnknownPeers="0"
    DropUnknownOnDisconnect="1"
    Tc="30"
    Workers="4"
    QueueLength="32"
>
    <Peer FQDN="hss1.open-ims.test" Realm="open-ims.test" port="3868"/>
    <Peer FQDN="hss2.open-ims.test" Realm="open-ims.test" port="3868"/>

    <Acceptor port="3868"  />
    <Acceptor port="3869" bind="127.0.0.1" />
    <Acceptor port="3870" bind="192.168.1.1" />
    
    <Auth id="16777216" vendor="10415"/><!-- 3GPP Cx -->
    <Auth id="16777216" vendor="4491"/><!-- CableLabs Cx -->
    <Auth id="16777216" vendor="13019"/><!-- ETSI/TISPAN Cx -->

    <Realm name="my.open-ims.test">
        <Route FQDN="blackjack" metric="2"/>
        <Route FQDN="test1" metric="3"/>
        <Route FQDN="test2" metric="5"/>
    </Realm>
    <Realm name="test1.open-ims.test">
        <Route FQDN="test3" metric="7"/>
        <Route FQDN="test4" metric="11"/>
    </Realm>
    <Realm name="test2.open-ims.test">
        <Route FQDN="test5" metric="13"/>
    </Realm>
    <DefaultRoute FQDN="hss1.open-ims.test" metric="15"/>
    <DefaultRoute FQDN="hss2.open-ims.test" metric="13"/>

</DiameterPeer>

It is used by :

Examples

And here are some real usage examples:
Generated on Wed May 7 04:11:51 2008 for Open IMS Core CSCFs by  doxygen 1.5.2