Appendix CThe freeDiameter Framework

C.1 Introduction

The design of freeDiameter follows the principles of the two Diameter layers: the core implements the peer‐to‐peer messaging layer that manages the delivery of the Diameter messages and maintains connections between neighboring Diameter peers. freeDiameter has a higher layer running the Diameter applications that convey the service data and inherit the properties of the lower layer. freeDiameter allows applications to use the Diameter network to convey their messages.

When a freeDiameter node receives a Diameter message from a peer on a network interface, its security layer decrypts it and then the node sanity checks the message. If the message is a Diameter base protocol message, then it is handled locally in the context associated with the connection.

Other messages are sent to a global queue of incoming messages. An asynchronous task called libfdcore picks the messages from this queue and decides whether they should be forwarded to another peer, in which case they are stored in the queue of outgoing messages, or should be handled locally, and therefore they are stored in the queue of local messages.

Another asynchronous task picks the messages from the local queue and dispatches them to the appropriate application code that registered to receive these messages. The application can answer incoming requests and create new messages. When the application hands a message to the framework for sending, it is stored in the global queue ...

Get Diameter now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.