The Open IMS Core JavaDiameterPeer

Documentation for Open IMS Core Java Diameter Peer library. The JavaDiameterPeer, like its counterpart CDiamterPeer, is a smart and an efficient Java implementation of the Diameter Base Protocol (IETF RFC3588). It provides a convenient way to use Diameter stack in a Java environment and can easily extend network nodes implemented in Java with a Diameter interface. It is used at the HSS (FhoSS) in the Open IMS core network.

Design and Implementation

The following figure depicts the structure of the JavaDiameterPeer.

jdiameterpeer_design.jpg

A DiameterPeer represents a Diameter node which implements the Diameter protocol and acts either as a Client or as a Server. The most important component of a DiameterPeer is a PeerManager. The PeerManager manages a set of Peers. Each Peer has a Communicator, which maintains a Diameter connection. The Peer is implemented based on the RFC 3588, section 5 and contains a state machine defined in that part. Peers managed by the PeerManager can be configured by a configuration file. They can also be detected and added to the PeerManager in runtime dynamically.

Since a DiameterPeer is listening to certain ports by using a set of Acceptors, the incoming Diameter Capabilities-Exchange-Request messages can be noticed. Upon receiving such a request, a new Peer with a communicator will be created and added to the PeerManager.

Outgoing Diameter messages and incoming Diameter messages are handled by the JavaDiameterPeer differently. For an outgoing Diameter request, JavaDiameterPeer sends this message to the PeerManager directly. The PeerManager will find out a suitable Peer for sending it.

An incoming Diameter message received by a communicator is pushed in a TaskQueue at first. This TaskQueue is a FIFO blocking queue. As soon as the message is available in the queue, a DiameterWorker will take it out of the queue and deliver it to a set of event listeners defined by the user.

Typically, a Diameter client sends a Diameter message to a Diameter server directly and receives a Diameter answer by adapting an EventListener. A Diameter server, however, defines only an EventListener to process incoming Diameter request.

In order to provide a convenient way to handle Diameter request and answer at the client side, a TransactionWorker is defined. A TransactionWorker groups a request with its corresponding answer. By using TransactionWorker, a user needs not to take care of mapping requests with answers.

Peer Configuration

DiameterPeer.xml provides an example of how a Diameter peer is configured.

 <xml version="1.0" encoding="UTF-8"?>
 <DiameterPeer 
 	FQDN="localhost"
 	Realm="open-ims.org"
 	Vendor_Id="10415"
 	Product_Name="JavaDiameterPeer"
 	AcceptUnknownPeers="1"
 	DropUnknownOnDisconnect="1"
 	Tc="10"
 	Workers="8"
 	QueueLength="32"
 >
 	<Acceptor port="3868" bind="127.0.0.1" />

 	<Auth id="16777216" vendor="10415"/>
 	<Auth id="16777216" vendor="0" />
 	<Acct id="16777216" vendor="0" />
 </DiameterPeer>
 

To do

Currently, the JavaDiameterPeer supports only peer connection. The authentication/authorization portion and accounting portion as defined in the Diameter base protocol (IFC 3588 section 8, 9) are still not implemented, since Cx, Sh do not require user session support actually. However, auth and acct session support are needed to realize Ro interface (auth session) and Rf (acct session) interface.

Realm routing (because this is not yet supported, when using you will have to specify each time the FQDN of the destination host. This is usually a configuration parameter other the modules using this one). A Realm routing process specified in the RFC 3588 section 2.7 is still in the development stage.

The Open IMS Core

The Home-Page of the Open Source IMS Core project is at http://www.open-ims.org/

The Development is taking place at http://developer.berlios.de/projects/openimscore/

osims.jpg

Author:
Dragos Vingarzan vingarzan -at- fokus dot fraunhofer dot de

Shengyao Chen shc -at- fokus dot fraunhofer dot de

Attention:
It has to be noted that this <font color="red>"> Open Source IMS Core System is not intended to become or act as a product in a commercial context!</font> Its sole purpose is to provide an IMS core reference implementation for IMS technology testing and IMS application prototyping for research purposes, typically performed in IMS test-beds.

Users of the Open Source IMS Core System have to be aware that IMS technology may be subject of patents and license terms, as being specified within the various IMS-related IETF, ITU-T, ETSI, and 3GPP standards. Thus all Open IMS Core users have to take notice of this fact and have to agree to check out carefully before installing, using and extending the Open Source IMS Core System, if related patents and licenses may become applicable to the intended usage context.

Note:
Copyright (C) 2004-2006 FhG Fokus

The Open IMS Core is an open source IMS CSCFs & HSS implementation.

Open IMS Core is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

For a license to use the Open IMS Core software under conditions other than those described here, or to purchase support for this software, please contact Fraunhofer FOKUS by e-mail at the following addresses: info@open-ims.org

Open IMS Core is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


Generated on Thu Oct 23 04:07:36 2008 for Open IMS Core JavaDiameterPeer by  doxygen 1.5.2