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.
The following figure depicts the structure of the JavaDiameterPeer.
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.
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>
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 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/
Shengyao Chen shc -at- fokus dot fraunhofer dot de
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.
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: firstname.lastname@example.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