|
Open Diameter Software Architecture |
|
|
|
Page 1 of 4 Open Diameter Software Architecture This document describes the software architecture used by Open Diameter for implementing the diameter base protocol library. It is designed to be modular, thread safe and scalable.
Overview The architecture of the Open Diameter implementation is based heavily on the design patterns discussed in [FRAMEWORK] as well as those defined in [ACE]. The socket acceptor and connector patterns are borrowed from [ACE] and extended to employ AAAMessage collection techniques. In addition, the OS abstraction layer provided by ACE allows for a certain degree of portability. This document will concentrate on the overall architecture of the diameter library. Detailed implementation is not described in this document. The programming language of choice is C++. It is our intent to take advantage of object methodology, widespread familiarity and abundant support offered by C++. In addition, a decision was made to utilize standard C++ libraries to allow for speed of development. Care has been given to allow the code to be as platform independent as possible. All system calls are abstracted by an utilities provided by ACE. In addition all system calls not covered within the base ACE OS abstraction layer are made as POSIX compliant as possible. latex architecture.eps Figure 1. Software Architecture The figure above shows a general overview of the implementation. Each box below the API boundary with the exception of the routing engine, is contained within it's own AAA_Job instance. Each box or module is thread independent and are created on demand. For details on AAA_Job, see [FRAMEWORK]. All databases are global singleton entities. All of which are thread safe/protected with the exception of the configuration database which is a read-only database.
|