Diameter is a next generation signaling protocol which evolved from its precedent RADIUS. It belongs to the application layer protocols in the internet protocol suite (OSI model). Diameter protocol supports reliable transport, transmission security, failover mechanism, state machine, capability negotiation, dynamic peer discovery and scalability. Diameter base protocol is defined by IETF in RFC 6733 (obsoletes RFC 3588). Diameter Applications extend the base protocol by adding application specific new command-codes (CCs) and attribute-value pairs (AVPs), such as Extensible Authentication Protocol (EAP), Diameter Credit Control Application (DCCA).
Policy and Charging functions include the Policy and Charging Rules Function (PCRF) Online Charging System (OCS), Offline Charging System (OFCS) nodes that use Ro, Rf, Rx, Gx, Gy, Gz S6a, S6b, s6d and S9 interfaces. Subscriber management functions include the Home Subscriber Server (HSS), Subscriber Location Function (SLF) nodes that use Sh, Dh, Cx, Dx interfaces and 3GPP AAA that uses Wa, Wd, Wx, Wm, Wg, SWa, Swd, SWx, SWm interfaces. The 3GPP and 3GPP2 to support these interfaces in LTE/VoLTE and IMS network elements.
Packet Force offers very high performance, scalable and reliable carrier-grade Diameter-based platform that can be used to build 3G and 4G core network elements. Diameter Stack includes support for the most popular Diameter interfaces used by 3GPP EPC, LTE and IMS. Diameter stack also offers the Diameter Relay, Proxy and Redirect agents allowing the developer to build Diameter signaling controller based network elements and applications.
The Diameter protocol and applications are specified with a set of commands/messages. Each command contains a set of Attribute Value Pairs (AVP). Diameter Stack implementation provides a user-friendly API that provides classes for each command, AVPs and the complex types. Simple Set, Get and Print methods are provided to enable access to the AVPs.
This interface provides a type-safe programming approach. Complex searching within a command to retrieve the elements and the heavy task of encoding tags, etc. is completely abstracted from the developer. This results in clean, easy-to-use code.