AMPS (Asynchronous
Middleware for Protocol Servers) - an open source framework for
development of application level protocol servers - is a product of
Advanced IMS. AMPS is an outcome of years of research to improve
server design and performance issues at software level. It is a
collection of industry best practices used in the design of several
tasks common to protocol servers. The key idea behind AMPS is to reduce
the implementation time of application level protocol servers by an
order of magnitude. This results in shortened time to market and let the
application developers spend more time on implementation of product
differentiating features.
You can use AMPS to
implement different application level protocol servers (and of course
clients) and reduce your time to market by an order of magnitude.
Examples include Diameter, Radius, SIP based VOIP SoftSwitches, online
gaming servers, Media Servers, IMS Home Subscriber Servers (HSS), IMS
call control Servers (x-CSCF), IMS compliant SIP based Application
Servers (AS), Policy Servers, LDAP servers to name a few.
AMPS is open source and
is available under GNU/GPL for Linux 2.6 kernel today. A Windows XP
version is due to be released, also under GPL, by the end of November
2007. Versions of AMPS will soon be available on Solaris, Windows CE and
other flavors of UNIX.
AMPS is also
available under a commercial license for use in closed source products.
Comprehensive support with several support models is available for both
open source and closed source usage of AMPS.
It is important to note that an
application built on top of AMPS does not deal with the operating system
issues. AMPS provides a complete OS Abstraction Layer. The application,
therefore enjoys portability across all platforms on which AMPS has been
ported.
AMPS uses asynchronous,
event driven programming model, and is built on top of non-blocking or
asynchronous I/O interfaces. Therefore, the applications using it are
usually free of any locks, mutex, semaphores, condition variables or
other such synchronization and concurrency control primitives. An
application does not usually require them for concurrency control. This
not only results in higher performance, but also reduces the amount of
bugs that almost invariably creep into the code as a result of using
such primitives. |