Provisioning Server

The Provisioning server stores all the information needed by the different components of the system and is responsible for maintaining the information needed to handle callbacks, redundancy, and data manipulation, such as searches, sorts, and batching of information for sending to the GUIs. The server is designed in a highly modular fashion—each module of the server can be removed and replaced with a different component to allow the end user maximum flexibility—and the user can simply define a new module and use that in place of the modules in place. This is accomplished via a compile-time mechanism.


The flow of data within the Provisioning server, as well as the basic structure of the server, is illustrated in Figure 19-2. This diagram shows the way that data in the system flows (not always the same as the call flow).

Provisioning server architecture

Figure 19-2. Provisioning server architecture

The server is composed of a number of pluggable modules, which could be overloaded and defined by the user, as well as a core server engine that drives these components. The component organization is shown in detail in the class diagram following these descriptions:

Transport/Protocol module

Responsible for communication with the outside world. This module is responsible for socket management, as well as transport-level protocol. In our implementation, we have derived an HTTP protocol module ...

Get Practical VoIP Using VOCAL now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.