2005-02-25 17:41:34 +00:00
|
|
|
The Asterisk Realtime Architecture
|
|
|
|
----------------------------------
|
|
|
|
|
|
|
|
The Asterisk Realtime Architecture is a new set of drivers and
|
2005-12-01 22:17:35 +00:00
|
|
|
functions implemented in Asterisk.
|
|
|
|
|
2005-02-25 17:41:34 +00:00
|
|
|
The benefits of this architecture are many, both from a code management
|
|
|
|
standpoint and from an installation perspective.
|
|
|
|
|
|
|
|
Additional information on the configuration of Realtime with Asterisk
|
2006-03-12 17:27:57 +00:00
|
|
|
can be found in doc/extconfig.txt
|
2005-02-25 17:41:34 +00:00
|
|
|
|
|
|
|
The ARA is designed to be independent of storage. Currently, most
|
|
|
|
drivers are based on SQL, but the architecture should be able to handle
|
|
|
|
other storage methods in the future, like LDAP.
|
|
|
|
|
|
|
|
The main benefit comes in the database support. In Asterisk v1.0 some
|
|
|
|
functions supported MySQL database, some PostgreSQL and other ODBC.
|
|
|
|
With the ARA, we have a unified database interface internally in Asterisk,
|
|
|
|
so if one function supports database integration, all databases that has a
|
|
|
|
realtime driver will be supported in that function.
|
|
|
|
|
|
|
|
Currently there are three realtime database drivers:
|
|
|
|
|
|
|
|
* ODBC: Support for UnixODBC, integrated into Asterisk
|
|
|
|
The UnixODBC subsystem supports many different databases,
|
|
|
|
please check www.unixodbc.org for more information.
|
2006-08-03 19:05:06 +00:00
|
|
|
* MySQL: Found in the asterisk-addons subversion repository on svn.digium.com
|
|
|
|
* PostgreSQL: Native support for Postgres, integrated into Asterisk
|
2005-02-25 17:41:34 +00:00
|
|
|
|
|
|
|
* Two modes: Static and Realtime
|
|
|
|
--------------------------------
|
|
|
|
The ARA realtime mode is used to dynamically load and update objects.
|
|
|
|
This mode is used in the SIP and IAX2 channels, as well as in the voicemail
|
|
|
|
system. For SIP and IAX2 this is similar to the v1.0 MYSQL_FRIENDS
|
|
|
|
functionality. With the ARA, we now support many more databases for
|
|
|
|
dynamic configuration of phones.
|
|
|
|
|
|
|
|
The ARA static mode is used to load configuration files. For the Asterisk
|
|
|
|
modules that read configurations, there's no difference between a static
|
|
|
|
file in the file system, like extensions.conf, and a configuration loaded
|
|
|
|
from a database.
|
|
|
|
|
|
|
|
* Realtime SIP friends
|
|
|
|
----------------------
|
|
|
|
The SIP realtime objects are users and peers that are loaded in memory
|
|
|
|
when needed, then deleted. This means that Asterisk currently can't handle
|
|
|
|
voicemail notification and NAT keepalives for these peers. Other than that,
|
|
|
|
most of the functionality works the same way for realtime friends as for
|
|
|
|
the ones in static configuration.
|
|
|
|
|
2006-06-27 17:30:14 +00:00
|
|
|
With caching, the device stays in memory for a specified time. More
|
|
|
|
information about this is to be found in the sip.conf sample file.
|
2005-02-25 17:41:34 +00:00
|
|
|
|
2006-09-19 17:07:22 +00:00
|
|
|
* Realtime H.323 friends
|
|
|
|
------------------------
|
2006-10-02 18:59:03 +00:00
|
|
|
Like SIP realtime friends, H.323 friends also can be configured using
|
2006-09-19 17:07:22 +00:00
|
|
|
dynamic realtime objects.
|
|
|
|
|
2005-02-25 17:41:34 +00:00
|
|
|
* New function in the dial plan: The Realtime Switch
|
|
|
|
----------------------------------------------------
|
|
|
|
The realtime switch is more than a port of functionality in v1.0 to the
|
|
|
|
new architecture, this is a new feature of Asterisk based on the
|
2005-10-13 23:19:37 +00:00
|
|
|
ARA. The realtime switch lets your Asterisk server do database lookups
|
2005-02-25 17:41:34 +00:00
|
|
|
of extensions in realtime from your dial plan. You can have many Asterisk
|
|
|
|
servers sharing a dynamically updated dial plan in real time with this
|
|
|
|
solution.
|
|
|
|
|
2005-10-13 23:19:37 +00:00
|
|
|
Note that this switch does _NOT_ support Caller ID matching, only
|
|
|
|
extension name/pattern matching.
|
|
|
|
|
2005-02-25 17:41:34 +00:00
|
|
|
* So what can you do?
|
|
|
|
---------------------
|
|
|
|
The realtime Architecture lets you store all of your configuration in
|
|
|
|
databases and reload it whenever you want. You can force a reload over
|
|
|
|
the AMI, Asterisk Manager Interface or by calling Asterisk from a
|
|
|
|
shell script with
|
|
|
|
asterisk -rx "reload"
|
|
|
|
|
|
|
|
You may also dynamically add SIP and IAX devices and extensions
|
|
|
|
and making them available without a reload, by using the realtime
|
|
|
|
objects and the realtime switch.
|
|
|
|
|
|
|
|
|
|
|
|
* Configuration in extconfig.conf
|
|
|
|
---------------------------------
|
|
|
|
You configure the ARA in extconfig.conf (yes, it's a strange name, but
|
|
|
|
is was defined in the early days of the realtime architecture and kind
|
2006-03-12 17:27:57 +00:00
|
|
|
of stuck). Please see doc/extconfig.txt for database schemas.
|
2005-02-25 17:41:34 +00:00
|
|
|
|
|
|
|
The part of Asterisk that connects to the ARA use a well defined family
|
|
|
|
name to find the proper database driver. The syntax is easy:
|
|
|
|
<family> => <realtime driver>,<db name>[,<table>]
|
|
|
|
|
|
|
|
The options following the realtime driver identified depends on the
|
|
|
|
driver.
|
|
|
|
|
|
|
|
Defined well-known family names are:
|
|
|
|
|
|
|
|
* sippeers, sipusers SIP peers and users
|
2006-06-27 17:30:14 +00:00
|
|
|
* iaxpeers, iaxusers IAX2 peers and users
|
2005-02-25 17:41:34 +00:00
|
|
|
* voicemail Voicemail accounts
|
2006-06-27 17:30:14 +00:00
|
|
|
* queues Queues
|
|
|
|
* queue_members Queue members
|
|
|
|
* extensions Realtime extensions (switch)
|
2005-02-25 17:41:34 +00:00
|
|
|
|
|
|
|
There is documentation of the SQL database in the file
|
2006-03-12 17:27:57 +00:00
|
|
|
doc/extconfig.txt in your Asterisk source code tree.
|
2005-02-25 17:41:34 +00:00
|
|
|
|
|
|
|
For voicemail storage with the support of ODBC, there is a
|
2006-03-12 17:27:57 +00:00
|
|
|
doc/odbcstorage.txt documentation file.
|
2005-02-25 17:41:34 +00:00
|
|
|
|
|
|
|
|
2006-08-03 19:05:06 +00:00
|
|
|
* Limitations
|
|
|
|
-------------
|
|
|
|
Currently, realtime extensions do not support realtime hints. There is
|
|
|
|
a workaround available by using func_odbc. See the sample func_odbc.conf
|
|
|
|
for more information.
|
|
|
|
|
|
|
|
|
2006-08-03 13:16:00 +00:00
|
|
|
* FreeTDS supported with connection pooling
|
|
|
|
-------------------------------------------
|
|
|
|
In order to use a FreeTDS-based database with realtime, you need to turn
|
|
|
|
connection pooling on in res_odbc.conf. This is due to a limitation within
|
|
|
|
the FreeTDS protocol itself. Please note that this includes databases such
|
|
|
|
as MS SQL Server and Sybase. This support is new in the current release.
|